• java 调用OpenOffice将word格式文件转换为pdf格式


    一:环境搭建

    OpenOffice 下载地址http://www.openoffice.org/

    JodConverter 下载地址http://sourceforge.net/projects/jodconverter/files/JODConverter/

    解压后将目录下的所有jar包放在工程的lib下面或者采用引用的方式调用这些jar包。

    下载后安装,我安装的路径为D:/openOffice/install/

     

    二:启动服务

    可以通过cmd调用服务, " cd D:/openOffice/install/program" 

    执行

    soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

    查看是否安装成功,查看端口对应的pid

        netstat -ano|findstr  8100

     查看pid对应的服务程序名

        tasklist|findstr pid值

    也可以把这一步省略,放到java程序中调用服务,因为启动服务占用内存比较大,在java中可以在使用

    的时候调用,然后马上销毁。

    三:程序代码

    1:将word转换为pdf方法

     1 // 将word格式的文件转换为pdf格式
     2     public void Word2Pdf(String srcPath, String desPath) throws IOException {
     3         // 源文件目录
     4         File inputFile = new File(srcPath);
     5         if (!inputFile.exists()) {
     6             System.out.println("源文件不存在!");
     7             return;
     8         }
     9         // 输出文件目录
    10         File outputFile = new File(desPath);
    11         if (!outputFile.getParentFile().exists()) {
    12             outputFile.getParentFile().exists();
    13         }
    14         // 调用openoffice服务线程
    15         String command = "D:/openOffice/install/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
    16         Process p = Runtime.getRuntime().exec(command);
    17 
    18         // 连接openoffice服务
    19         OpenOfficeConnection connection = new SocketOpenOfficeConnection(
    20                 "127.0.0.1", 8100);
    21         connection.connect();
    22 
    23         // 转换word到pdf
    24         DocumentConverter converter = new OpenOfficeDocumentConverter(
    25                 connection);
    26         converter.convert(inputFile, outputFile);
    27 
    28         // 关闭连接
    29         connection.disconnect();
    30 
    31         // 关闭进程
    32         p.destroy();
    33         System.out.println("转换完成!");
    34     }

    2:调用方法

    1 @Test
    2     public void testWord2Pdf() throws IOException {
    3         String srcPath = "E:/test.docx";
    4         String desPath = "E:/test.pdf";
    5         Word2Pdf(srcPath, desPath);
    6     }

    以上代码经过验证,可以正常运行。

    四:遇到问题

    错误信息:

    java.net.ConnectException: connection failed: socket,host=10.101.50.71,port=8100,tcpNoDelay=1: java.net.ConnectException: Connection refused: connect

    at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect(AbstractOpenOfficeConnection.java:79)

    原因以及解决方法:第一次调用,soffice需要注册,所以到soffice.exe的安装路径下双击soffice.exe,注册即可。

  • 相关阅读:
    ue4 socket
    ue4动画蓝图
    localStorage 用法
    关于textarea中换行、回车、空格的识别与处理
    git忽略某些文件提交
    动态加载js文件
    H5 App页面 绝对定位 软键盘弹出时顶起底部按钮
    Android软键盘弹出时把布局顶上去的解决方法
    javascript 事件委托 和jQuery事件绑定on、off 和one
    escape()、encodeURI()、encodeURIComponent()区别详解
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5858755.html
Copyright © 2020-2023  润新知