JODConverter问题并在无头模式下运行LibreOffice

时间:2013-08-16 02:37:31

标签: openoffice.org libreoffice jodconverter

我使用以下代码使用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进行转换吗?

2 个答案:

答案 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