我使用下面的代码转换.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的文件夹约旦第纳尔做转换?
一种方法是来包装你的CMD指令
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
作为Java的过程中,看到这对SO问题。
解决办法是:
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();
这是临时和未测试的解决方案,但它可能工作。 另一种选择是让在Linux在Windows批处理文件或shell脚本与你的cmd命令,并将其设置为自动启动在Windows或Linux登录。 之后执行代码,因为它是...
你不需要在约旦第纳尔所有DOC文件转换为PDF。 这可以用LibreOffice中直接完成:
libreoffice --headless --convert-to pdf document.doc