我使用以下代码使用JOD将.doc转换为.pdf。
File inputFile = new File("document.doc");
File outputFile = new File("document.pdf");
// connect to an OpenOffice.org instance running on port 8100
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
// convert
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
// close the connection
connection.disconnect();
但我必须跑
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
单独以无头模式启动LibreOffice。
有没有办法以编程方式启动LibreOffice?或者,我们不能只将LibreOffice文件夹的路径提供给JOD进行转换吗?
答案 0 :(得分:0)
一种方法是包装你的cmd指令
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
作为java进程,请参阅SO上的this问题。
解决方案可能是:
File inputFile = new File("document.doc");
File outputFile = new File("document.pdf");
String[] args = {"cmd","/c","\\path to libreoffice executable","-headless", "-accept='socket,host=127.0.0.1,port=8100;urp;'", "-nofirststartwizard"};
try{
Runtime rt = Runtime.getRuntime();
ProcessBuilder pb = new ProcessBuilder(args);
Process pr = pb.start();
// connect to an OpenOffice.org instance running on port 8100
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
}catch{Exception e){
}
// convert
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
// close the connection
connection.disconnect();
它是临时的,未经过测试的解决方案,但可能有效。 另一种选择是使用cmd命令在linux或windows脚本中使用cmd命令创建批处理文件,并将其设置为在Windows或Linux登录时自动启动。之后执行你的代码......
答案 1 :(得分:0)
根本不需要JOD将doc文件转换为PDF。这可以通过LibreOffice直接完成:
libreoffice --headless --convert-to pdf document.doc