Java利用OpenOffice将word等office文档转换成PDF

package demo;

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

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

public class Word2PdfJacobUtil {
	

	public static void office2PDF(String sourceFile, String destFile) { 
        try { 
        File inputFile = new File(sourceFile); 
        if (!inputFile.exists()) { 
        return ;// 找不到源文件, 则返回
        } 

        // 如果目标路径不存在, 则新建该路径 
        File outputFile = new File(destFile); 
        if (!outputFile.getParentFile().exists()) { 
        outputFile.getParentFile().mkdirs(); 
        } 

        String OpenOffice_HOME = "C:\\Program Files (x86)\\OpenOffice 4";//这里是OpenOffice的安装目录, 在我的项目中,为了便于拓展接口,没有直接写成这个样子,但是这样是绝对没问题的 
        // 如果从文件中读取的URL地址最后一个字符不是 '\',则添加'\' 
        if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') { 
        OpenOffice_HOME += "\\"; 
        } 
        // 启动OpenOffice的服务 
        String command = OpenOffice_HOME 
                + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"-nofirststartwizard"; 
        Process pro = Runtime.getRuntime().exec(command); 
        // connect to an OpenOffice.org instance running on port 8100 
        OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1",8100);
        connection.connect(); 

        // convert 
        DocumentConverter converter = new OpenOfficeDocumentConverter( 
        connection); 
        converter.convert(inputFile, outputFile); 

        // close the connection 
        connection.disconnect(); 
        // 关闭OpenOffice服务的进程 
        pro.destroy(); 

        } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
        } catch (IOException e) { 
        e.printStackTrace(); 
        } 
        }

	    public static void main(String[] args) {
	        office2PDF("E:\\新建 DOCX 文档.docx", "E:\\新建 DOCX 文档.pdf");
	    }
	}

  以上代码亲测有效

问题:

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,注册即可。

OpenOffice:https://openoffice.en.softonic.com/

用到的jar包(项目中的所有包,都导入进去,反正不会出错)

 

 

 

posted @ 2020-10-26 19:03  哎呀呀呀呀~~  阅读(451)  评论(0编辑  收藏  举报