2014-02-04 2 views
4

У меня есть 1000 файлов .docx, которые я хочу преобразовать в pdf, поэтому я написал программу для этого, но я никогда не смогу пройти через все 1000 файлов до того, как будет выброшена ошибка , Я начинаю безголовую версию LibreOffice, используя soffice --headless --accept="socket,host=127.0.0.1,port=2002;urp;". Я использую LibreOffice 4.2.0.4 и JODConverter 2.2.2. Это мой код преобразования (до этого я просто перебирать все .docx файлы в каталоге):Преобразование docx в pdf через JODConverter и LibreOffice вызывает ошибку

try { 
     File inputFile = new File(sourceFile); 
     if (!inputFile.exists()) { 
      return -1; 
     } 

     File outputFile = new File(destFile); 
     OpenOfficeConnection connection = new SocketOpenOfficeConnection(host_Str, 
      Integer.parseInt(port_Str)); 
     connection.connect(); 
     DocumentConverter converter = new OpenOfficeDocumentConverter(connection); 
     converter.convert(inputFile, outputFile); 

     connection.disconnect(); 

     return 0; 
    } 

    catch (ConnectException e) { 
     System.out.println("Openoffice listener exception!"); 
     return 1; 
    } 

Я всегда можно преобразовать по крайней мере, 50 файлов или около того, прежде чем выдается ошибка; это одна из ошибок, которые у меня были:

Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: 
    conversion failed: could not save output document; OOo errorCode: 3088 
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:142) 
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.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:74) 
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:70) 
at previews.ConvertToPdfJOD.office2PDF(ConvertToPdfJOD.java:119) 
at previews.ConvertToPdfJOD.beginConvert(ConvertToPdfJOD.java:91) 
at previews.ConvertToPdfJOD.main(ConvertToPdfJOD.java:177) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

Caused by: com.sun.star.task.ErrorCodeIOException: SfxBaseModel::impl_store <file:///C:/dev/testFiles/docx/newsletter_t3w7-2012.docx.pdf> failed: 0xc10 
at com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:182) 
at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:148) 
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:344) 
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:313) 
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:101) 
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:652) 
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:154) 
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:136) 
at com.sun.proxy.$Proxy8.storeToURL(Unknown Source) 
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.storeDocument(OpenOfficeDocumentConverter.java:156) 
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:140) 
... 12 more 

Другие примеры ошибок включают в себя:

Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: 
    conversion failed: could not save output document 

Caused by: com.sun.star.uno.RuntimeException: [msci_uno bridge error] 
    UNO type of C++ exception unknown: "std.bad_alloc", RTTI-name="[email protected]@@"! 

и

Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: 
    conversion failed: could not save output document; OOo errorCode: 283 

Caused by: com.sun.star.task.ErrorCodeIOException: SfxBaseModel::impl_store 
    <file:///R:/document%20preview%20DY/speedTests/doc/cm9draftfinallist.doc.pdf> failed: 0x11b 

и

Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: 
    conversion failed: could not load input document 

и

Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: 
    conversion failed: could not save output document; OOo errorCode: 3088 

Caused by: com.sun.star.task.ErrorCodeIOException: SfxBaseModel::impl_store 
    <file:///C:/dev/testFiles/docx/newsletter_t3w7-2012.docx.pdf> failed: 0xc10 

В любой ситуации (до сих пор) мне удалось повторить преобразование в файл docx, где произошла ошибка, и преобразование было успешным.

Я рассмотрел похожие вопросы на этом сайте, но большинство из них предназначены для ситуаций, когда ошибка возникает при первом попытке конверсии, тогда как в моем случае всегда есть успешные преобразования перед сбоем. Я также попытался использовать OpenOffice с теми же результатами. Я пробовал сообщения об ошибках в Google, но безрезультатно.

Мой вопрос, почему происходят эти ошибки, и что я могу сделать для преобразования всех 1000 файлов docx? Также я знаю docx4j, но мне также нужно иметь возможность конвертировать файлы .doc, которые это не поддерживает.

ответ

2

Я работаю с PHP и использую скрипт python для преобразования, и у меня возникла проблема, похожая на вашу, у меня были ошибки ErrorCode 283 и SfxBaseModel :: impl_store: 0x11b.

Я сервер Apache, который работает с апачом пользователя и обычным пользователем, который работает сервис LibreOffice, скажу theuser, theuser на апач группы для того, чтобы писать на TMP папке моего приложения , Когда я конвертирую в pdf, я создаю папку (назовем ее папкой), чтобы сохранить преобразованный файл (используя функцию mkdir на PHP). Я увидел, что у папки нет разрешения на запись группы, и я тестирую другое местоположение с терминала (с theuser пользователь), и он работает, на thefolder У меня есть errorCode 283, то, что я сделал, является функцией umask в PHP для изменения разрешения на создание в папке.

Резюме: Проверьте права доступа на папку в Wich вы поместите полученный файл

+0

Я не пользуюсь никакими папками, кроме установки ByteStream, даже с chmod 777 отображается та же ошибка. –

-1

У меня была аналогичная проблема.То, что для меня решало, выполнялось так, как root:

soffice --headless --accept="socket,host=127.0.0.1,port=2002;urp;" 

 Смежные вопросы

  • Нет связанных вопросов^_^