У меня есть требование, когда мне нужно использовать openoffice на автономном сервере и использовать программу Java для преобразования документов.
Прямо сейчас у меня есть установка, в которой я запустил openoffice в моем linux среда с помощью команды ниже
sudo -H /opt/openoffice4/program/soffice '-accept=socket,host=localhost,port=8080;urp;StarOffice.ServiceManager' -nologo -headless -nofirststartwizard
Насколько я понимаю, приведенный выше код запускает openoffice и прослушивает порт 8080.
Теперь мой код использует JODConverter чтобы установить связь между моей программой java и openoffice и выполнить преобразование между форматами, такими как DO C в PDF и т. д.
Первоначально я попытался разместить программу java в моем linux сервер, на котором работал openoffice. Он работал нормально, и происходило преобразование.
Импорт, который я использую, выглядит следующим образом:
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, установленного на машине, на которой выполняется код.
Я изменил эту строку, чтобы установить sh соединение, и смог установить sh соединение между моими Java программа, запущенная на моем локальном компьютере и OpenOffice на сервере.
OpenOfficeConnection openofficeConnection = new SocketOpenOfficeConnection("SomeServerIP",8080);
openofficeConnection.connect();
Но я получаю следующее исключение внутри банка OpenOfficeDocumentConverter в строке 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
Что нужно сделать, чтобы решить эту проблему? Есть ли другой способ добиться этого?