DOCX в PDF преобразование Java с использованием document4j удаленно - PullRequest
0 голосов
/ 28 ноября 2018

В настоящее время я пытаюсь преобразовать расширенный текстовый документ (.DOCX) в PDF, используя java.

Для создания текстовых документов я использую apache poi@3.15.У них есть встроенный конвертер PDF, хотя он как бы портит формат документа.

В конечном итоге я использовал облачный API (платный), который выглядел как облом.Сегодня, однако, я нашел проект document4j, и он был очень взволнован.

Я купил VPS, который запускает Windows с единственной целью преобразования файлов .docx в файлы .pdf, и это достижимо.Document4j / local-demo также работает нормально и может очень хорошо конвертировать мои файлы .docx в .pdf.

В Интернете, похоже, очень ограниченная документация, за исключением Javadocs, которые нене поможет мне больше, чем интеллигенция в моем редакторе.

Кто-нибудь может мне помочь с этим?

Stacktrace

2018-11-28 00:37:21.577  INFO 701 --- [o-8081-exec-477] com.documents4j.job.RemoteConverter      : The documents4j remote converter has started successfully (URI: http://xxx.xxx.xxx.xxx:1337)
Exception in thread "pool-3-thread-1" java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.PropertiesHelper.getValue(Ljava/util/Map;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
        at org.glassfish.jersey.apache.connector.ApacheConnector.getSslContext(ApacheConnector.java:324)
        at org.glassfish.jersey.apache.connector.ApacheConnector.<init>(ApacheConnector.java:240)
        at org.glassfish.jersey.apache.connector.ApacheConnectorProvider.getConnector(ApacheConnectorProvider.java:110)
        at org.glassfish.jersey.client.ClientConfig$State.initRuntime(ClientConfig.java:425)
        at org.glassfish.jersey.client.ClientConfig$State.access$000(ClientConfig.java:90)
        at org.glassfish.jersey.client.ClientConfig$State$3.get(ClientConfig.java:122)
        at org.glassfish.jersey.client.ClientConfig$State$3.get(ClientConfig.java:119)
        at org.glassfish.jersey.internal.util.collection.Values$LazyValueImpl.get(Values.java:340)
        at org.glassfish.jersey.client.ClientConfig.getRuntime(ClientConfig.java:733)
        at org.glassfish.jersey.client.ClientRequest.getConfiguration(ClientRequest.java:286)
        at org.glassfish.jersey.client.JerseyInvocation.validateHttpMethodAndEntity(JerseyInvocation.java:135)
        at org.glassfish.jersey.client.JerseyInvocation.<init>(JerseyInvocation.java:105)
        at org.glassfish.jersey.client.JerseyInvocation.<init>(JerseyInvocation.java:101)
        at org.glassfish.jersey.client.JerseyInvocation.<init>(JerseyInvocation.java:92)
        at org.glassfish.jersey.client.JerseyInvocation$AsyncInvoker.method(JerseyInvocation.java:642)
        at org.glassfish.jersey.client.JerseyInvocation$AsyncInvoker.post(JerseyInvocation.java:520)
        at com.documents4j.job.RemoteFutureWrappingPriorityFuture.startConversion(RemoteFutureWrappingPriorityFuture.java:61)
        at com.documents4j.job.RemoteFutureWrappingPriorityFuture.startConversion(RemoteFutureWrappingPriorityFuture.java:15)
        at com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:70)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

pom.xml

....

        <!-- https://mvnrepository.com/artifact/com.documents4j/documents4j-client -->
        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-client</artifactId>
            <version>1.0.3</version>
        </dependency>

....

Соответствующий код:

IConverter converter = RemoteConverter.builder()
                    .baseFolder(null)
                    .workerPool(20, 25, 2, TimeUnit.SECONDS)
                    .requestTimeout(10, TimeUnit.SECONDS)
                    .baseUri("http://xxx.xxx.xxx.xxx:1337")
                    .build();

                File pdfFile = File.createTempFile(fileName, ".pdf");
                pdfFile.deleteOnExit();

                converter.convert(data).as(DocumentType.DOCX).to(pdfFile).as(DocumentType.PDF).execute();

Редактировать: использование java -jar ./documents4j-client-standalone-1.0.3-shaded.jar http://xxx.xxx.xxx.xxx:1337 работает, хотя, к сожалению, не в самом коде Java.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Моя проблема была похожа на эту проблему и была решена путем создания пользовательского HTTP-запроса:

Пользовательский HttpClient для RemoteConverter of Documents4j

0 голосов
/ 28 ноября 2018

Это очевидный конфликт версий зависимостей.Проверьте, какую версию Glassfish вы используете и от чего зависит версия Glassfish documents4j.Запустите mvn dependency: tree , чтобы помочь вам понять это.

...