我有一个要求,我需要在独立服务器中使用 openoffice 并使用 Java 程序进行文档转换。
现在,我有一个设置,我使用以下命令在我的 linux 环境中启动了 openoffice
sudo -H /opt/openoffice4/program/soffice '-accept=socket,host=localhost,port=8080;urp;StarOffice.ServiceManager' -nologo -headless -nofirststartwizard
根据我的理解,上面的代码启动了 openoffice 并监听了 8080 端口。
现在我的代码使用 JODConverter 在我的 java 程序和 openoffice 之间创建连接,并执行 DOC 到 PDF 等格式之间的转换。
最初,我尝试将 java 程序放在运行 openoffice 的 linux 服务器中。它工作正常,并且正在发生转换。
我正在使用的进口如下
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.DocumentFormat;
连接是通过下面的行发生的。
OpenOfficeConnection openofficeConnection = new SocketOpenOfficeConnection(8080);
openofficeConnection.connect();
转换是通过使用以下代码行完成的。
File inputFile = new File("SomeInputFilePath");
File outputFile = new File("SomeOutputFilePath");
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
DocumentFormat inFormat = getDocumentFormat().getFormatByFileExtension("SomeInputFormatExtension");
DocumentFormat outputFormat = getDocumentFormat().getFormatByFileExtension("SomeOutputFormatExtension");
converter.convert(inputFile, inFormat, outputFile, outputFormat);
现在我试图通过将代码放在我的本地系统中并在服务器中运行 openoffice 来实现相同的目标。通过这种方式,我们尝试消除在运行代码的机器上安装 openoffice 的依赖性。
我已修改此行以建立连接,并且能够在本地运行的 Java 程序和服务器中的 OpenOffice 之间建立连接。
OpenOfficeConnection openofficeConnection = new SocketOpenOfficeConnection("SomeServerIP",8080);
openofficeConnection.connect();
但是我在该行的 OpenOfficeDocumentConverter jar 中得到了以下异常
converter.convert(inputFile, inFormat, outputFile, outputFormat);
。
com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: conversion failed: could not load input document
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:131)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.convertInternal(OpenOfficeDocumentConverter.java:120)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:104)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.convertInternal(OpenOfficeDocumentConverter.java:88)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:82)
at wordHandle.WordHandleApi.main(WordHandleApi.java:44)
Caused by: com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one.
at com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:177)
at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:143)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:335)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:304)
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:91)
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:639)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:151)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:133)
at com.sun.proxy.$Proxy5.loadComponentFromURL(Unknown Source)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadDocument(OpenOfficeDocumentConverter.java:150)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:127)
... 5 more
应该怎么做才能解决这个问题?
有没有其他方法可以实现这一目标?