Как запустить Openoffice на сервере и выполнить преобразование из моей локальной системы - PullRequest
1 голос
/ 14 июля 2020

У меня есть требование, когда мне нужно использовать 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

Что нужно сделать, чтобы решить эту проблему? Есть ли другой способ добиться этого?

...