zoukankan      html  css  js  c++  java
  • 使用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");
    }

    }
     
  • 相关阅读:
    基于springboot框架的博客系统
    告别并不遥远的儿时,抬眼期待未来
    Python微信公众号教程基础篇——收发文本消息
    华为云落地敏捷+DevOps,助力大企业高效能
    【nodejs原理&源码赏析(5)】net模块与通讯的实现
    华为云&华中大联合实验室,夺得2019ICDAR发票识别竞赛世界第一
    00034_类与对象
    php批量下载文件
    php批量下载图片
    asp.net批量下载文件
  • 原文地址:https://www.cnblogs.com/dsh2018/p/9673395.html
Copyright © 2011-2022 走看看