• 使用openoffice将office文档转成pdf


    我转化pdf的目的是把用户上传的文档转pdf以作在线预览功能。

    第一步需要下一个Apache_OpenOffice插件,没有它实现不了转化。

    默认安装,

    /**
    * 在此之前需先开启openoffice服务,用命令行打开cd C:Program FilesOpenOffice.org 3program (openoffice安装的路径)
    * 输入 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
    */开启Apache_OpenOffice服务

    第二步项目引入Apache_OpenOffice相关jar包

    <!-- 文档 -->
    <dependency>
    <groupId>com.github.livesense</groupId>
    <artifactId>jodconverter-core</artifactId>
    <version>1.0.5</version>
    </dependency>
    jodconverter-2.2.2可以把docx,xlsx转pdf,mvn好像不能自动下来,需要手动引入
    
    
    package ax.tst.common.util;


    import org.artofsolving.jodconverter.OfficeDocumentConverter;
    import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
    import org.artofsolving.jodconverter.office.OfficeManager;

    import java.io.File;
    import java.io.FileNotFoundException;

    /**
    * @ClassName OpenOffice2PdfUtils
    * @Description
    * @Author: dsh
    * @Date: 2019/12/20 14:58
    * @Version V1.0
    **/
    //转换文档为pdf
    public class OpenOffice2PdfUtils {

    /**
    * @param args
    */
    private static OfficeManager officeManager;
    private static String OFFICE_HOME = "C:/Program Files (x86)/OpenOffice 4/";//C:Program Files (x86)
    private static int port[] = { 8100 };

    public static void convert2PDF(File inputFile, String outputFile) throws FileNotFoundException {//File file, String pdfUrl

    startService();
    System.out.println("进行文档转换转换:" + inputFile + " --> " + outputFile);

    OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
    converter.convert(inputFile, new File(outputFile));

    stopService();
    System.out.println();

    }

    // 打开服务器
    public static void startService() {
    DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
    try {
    System.out.println("准备启动服务....");
    configuration.setOfficeHome(OFFICE_HOME);// 设置OpenOffice.org安装目录
    configuration.setPortNumbers(port); // 设置转换端口,默认为8100
    configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 设置任务执行超时为5分钟
    configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 设置任务队列超时为24小时

    officeManager = configuration.buildOfficeManager();
    officeManager.start(); // 启动服务
    System.out.println("office转换服务启动成功!");
    } catch (Exception ce) {
    System.out.println("office转换服务启动失败!详细信息:" + ce);
    }
    }

    // 关闭服务器
    public static void stopService() {
    System.out.println("关闭office转换服务....");
    if (officeManager != null) {
    officeManager.stop();
    }
    System.out.println("关闭office转换成功!");
    }

    public static void main(String[] args) throws Exception {
    String path = "E:/";
    OpenOffice2PdfUtils opc = new OpenOffice2PdfUtils();
    // opc.convert2PDF(path+"8dd29733248744e5a59b4027f92dbf8c.pptx", path+"1.pdf");
    // opc.convert2PDF(path+"工作梳理.docx", path+"2.pdf");
    // opc.convert2PDF(path+"班组安全岛手机端详细设计方案V1.1.docx", path+"3.pdf");
    }

    }
     
  • 相关阅读:
    c#使用selenium过滑动验证码
    C#构建数据类型不同的链表
    【疑难杂症】c#控制台应用程序卡输出
    只需三步,轻松体验office2019
    一文搞定C#.Net如何调用/交互Javascript
    逆向某微信小程序参数签名算法
    win10 IIS疑难杂症--处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    一台手机如何在微信语音/视频通话时把声音录下来
    android端日志查看调试利器Logcat Reader
    [开源]安卓调试神器-获取最上层Activity:TopActivity
  • 原文地址:https://www.cnblogs.com/dsh2018/p/9673395.html
Copyright © 2020-2023  润新知