JODConverter говорит мне, что для создания конвертера требуется менеджер офиса - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь заставить JODConverter работать в Window 10 с Jdk 1.8.0_144.Как вы можете видеть из кода, я подумал, что это может быть проблема синхронизации, отсюда и задержка.Как вы можете видеть, JODConverter считает, что OfficeManager работает.Я использую следующий код:

import java.io.File;
import org.jodconverter.JodConverter;
import org.jodconverter.office.LocalOfficeManager;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;
import org.jodconverter.office.OfficeUtils;
import org.jodconverter.process.ProcessManager;

public class JodConverterTest {

    public static void main(String[] args) throws OfficeException, InterruptedException {

        OfficeManager officeManager
                = LocalOfficeManager.builder()
                        .officeHome("C:\\Program Files\\LibreOffice")
                        .portNumbers(2372)
                        .build();
        officeManager.start();

        File inputFile = new File("c:\\test\\rtf.rtf");
        File outputFile = new File("c:\\test\\rtf.pdf");

        try {

            System.out.println("officeManager.isRunning()="+officeManager.isRunning());
            Thread.sleep(10000);
            System.out.println("officeManager.isRunning()="+officeManager.isRunning());
            JodConverter.convert(inputFile).to(outputFile).execute();
        } finally {
            // Stop the office process
            OfficeUtils.stopQuietly(officeManager);
        }
    }
}

При запуске я получаю следующую ошибку: -

officeManager.isRunning()=true
officeManager.isRunning()=true
Exception in thread "main" java.lang.IllegalStateException: An office manager is required in order to build a converter.
    at org.jodconverter.job.AbstractConverter.<init>(AbstractConverter.java:57)
    at org.jodconverter.LocalConverter.<init>(LocalConverter.java:93)
    at org.jodconverter.LocalConverter.<init>(LocalConverter.java:49)
    at org.jodconverter.LocalConverter$Builder.build(LocalConverter.java:202)
    at org.jodconverter.LocalConverter.make(LocalConverter.java:73)
    at org.jodconverter.JodConverter.convert(JodConverter.java:48)
    at ZPlaying.JodConverterTest.main(JodConverterTest.java:30)
------------------------------------------------------------------------
BUILD FAILURE

То, что я пробовал: - - Изменение номера порта -Изучая, могу ли я найти путь к классу java Process Manager и добавив следующее, но я не смог найти путь к классу ProcessManager, так как я не очень много знаю об этом: - .processManager ("com.example.foo.CustomProcessManager ") - также интересует, связано ли это с запуском через Netbeans?

Вот применимая зависимость maven: -

        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.1.1</version>
        </dependency>

Я установил Libre (новая установка)в C: \ Program Files \ LibreOffice

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Да, это моя вина.Документация JODConverter нуждается в некоторых серьезных улучшениях.Я создал статические методы JodConverter.convert, чтобы упростить взаимодействие с библиотеками jodconverter, но в документации нет места, где я четко заявляю, что этот статический класс будет использовать офис-менеджера, который был бы создан как менеджер по умолчанию для всего документаконвертеры.

Это делается с помощью функции «установить» при создании офис-менеджера.

Так что я благодарю вас за то, что вы были таким умным программистом, который понял это, эта статья о переполнении стека наверняка поможет многим разработчикам !!

0 голосов
/ 22 сентября 2018

Получил это на работу.Вот решение: -

package ZPlaying;

import java.io.File;
import org.jodconverter.JodConverter;
import org.jodconverter.office.LocalOfficeManager;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;
import org.jodconverter.office.OfficeUtils;

public class JodConverterTest {

    public static void main(String[] args) throws OfficeException, InterruptedException {
        OfficeManager officeManager = LocalOfficeManager.builder()
                .install()
                .officeHome("C:\\Program Files\\LibreOffice")
                .build();
        File inputFile = new File("c:\\test\\rtf.rtf");
        File outputFile = new File("c:\\test\\rtf.pdf");
        try {
            // Start an office process and connect to the started instance (on port 2002).
            officeManager.start();
            // Convert
            JodConverter
                    .convert(inputFile)
                    .to(outputFile)
                    .execute();
        } finally {
            // Stop the office process
            OfficeUtils.stopQuietly(officeManager);
        }
    }
...