OpenOffice 是一套跨平台的办公室软件套件,能在windows、Linux、MacOS X (X11)和 Solaris 等操作系统上执行。它与各个主要的办公室软件套件兼容。OpenOffice.org 是自由软件,任何人都可以免费下载、使用及推广它。
JodConverter在maven中央仓库里只有2.2.1版本,2.2.1比较老,不支持office07以后的版本,而2.2.2版本可以支持,但是在中央仓库没有,需要手动下载jar包。
OpenOffice 下载地址http://www.openoffice.org/
JodConverter 下载地址http://sourceforge.net/projects/jodconverter/files/JODConverter/
解压后将目录下的所有jar包放在工程的lib下面或者采用引用的方式调用这些jar包。
OpenOffice第一次使用:
第一次调用,soffice需要注册,所以到soffice.exe的安装路径下双击soffice.exe,注册即可。
程序代码
package openoffice;
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;
import java.io.File;
import java.io.IOException;
import java.net.ConnectException;
/**
* @author liuzonghua
* @Package openoffice
* @Description:
* @date 2019/2/1 9:20
*/
public class WordOrExcelToPDF {
public static void main(String[] args) {
WordOrExcel2Pdf("C:\\Users\\Admin\\Desktop\\2017年学生体质健康测试成绩.xls","C:\\Users\\Admin\\Desktop\\4" + ".pdf");
}
// 将word格式的文件转换为pdf格式
public static void WordOrExcel2Pdf(String srcPath, String desPath) {
// 源文件目录
File inputFile = new File(srcPath);
if (!inputFile.exists()) {
System.out.println("源文件不存在!");
return;
}
// 输出文件目录
File outputFile = new File(desPath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().exists();
}
try {
// 调用openoffice服务线程
String command = "C:/Program Files (x86)/OpenOffice 4/program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
Process p = Runtime.getRuntime().exec(command);
// 连接openoffice服务
OpenOfficeConnection connection = new SocketOpenOfficeConnection(
"127.0.0.1", 8100);
connection.connect();
// 转换word到pdf
DocumentConverter converter = new OpenOfficeDocumentConverter(
connection);
converter.convert(inputFile, outputFile);
// 关闭连接
connection.disconnect();
// 关闭进程
p.destroy();
System.out.println("转换完成!");
} catch (ConnectException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行main方法