当前位置: 首页 > 知识库问答 >
问题:

通过JODConverter和LibreOffice将docx转换为pdf会导致错误

燕翔飞
2023-03-14

我有1000. docx文件,我想转换成pdf,所以我写了一个程序来做到这一点,但我永远无法通过所有1000文件之前抛出一个错误。我使用soffice启动了LibreOffice的无头版本--Headless--接受="套接字,主机=127.0.0.1,端口=2002; urp;"。我正在使用LibreOffice4.2.0.4和JODConver2.2.2。这是我的转换代码(在此之前,我只是迭代目录中的所有. docx文件):

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=".?AVbad_alloc@std@@"!

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,结果也一样。我试过用谷歌搜索错误信息,但没有用。

我的问题是为什么会发生这些错误,我该如何转换所有1000个docx文件?我也知道docx4j,但我需要能够转换.doc文件,这不支持。

共有2个答案

梁渊
2023-03-14

我也有类似的问题。我解决的问题是以root用户身份运行soffice:

soffice --headless --accept="socket,host=127.0.0.1,port=2002;urp;"
赵珂
2023-03-14

我正在使用PHP并使用python脚本进行转换,我遇到了一个与您类似的问题,错误代码为283,SfxBaseModel::impl_store失败:0x11b。

我有一个Apache服务器,运行Apache用户,还有一个运行LibreOffice服务的普通用户,比方说用户,用户在Apache组中,以便在我的应用程序的tmp文件夹上进行写操作。当我转换成pdf时,我创建了一个文件夹(我们称之为文件夹)来存储转换后的文件(在PHP上使用mkdir函数),我看到文件夹没有组写入权限,我在终端的其他位置(与用户)进行了测试,它可以工作,在文件夹上我有错误代码283,我所做的是在PHP中使用umask函数来更改创建文件夹的权限。

摘要:检查文件夹的权限,你会把结果文件

 类似资料:
  • 为了将docx文件转换为pdf(确切地说是pdf-a),我们将使用JodConverter和LibreOffice。这已经正常工作了一周左右,但是突然所有的字母在转换的pdf中都被表示为正方形(通常表示一些控制符号)(word文件看起来很好)。重新启动LibreOffice服务后,一切恢复正常,信件输出正常。 但我们还是很担心,因为我们无法保证这种情况不会再次发生。我也不知道为什么会发生这种情况,

  • 我花了大量的时间试图确定到底出了什么问题,使用LibreOffice将pdf转换为docx(以及doc转换为docx)的代码。 我使用了两个windows run接口来测试运行一些我发现相关的代码,也尝试了python,但两者都不起作用。 我在Windows上安装了LibreOffice v6.0.2。 我一直在使用此代码的变体尝试将某些pdf文件转换为与特定pdf文件不相关的docx: 我已经在

  • 我使用dox4j和pdfbox分两步将docx文件的第一页转换为图像,但我目前每次都得到< code>OutOfMemoryError。 我已经能够确定,在调用方法时,在这个过程的最后一步抛出了异常,然而,我已经使用这个方法的第二步转换pdf一段时间了,现在没有问题,所以我不知道可能是什么原因,除非dox4j编码pdf的方式是我尚未测试或已损坏的。 我尝试将替换为,并且pdf的正确呈现似乎并不比我

  • 我在运行时生成了一个docx文档,我想将其转换为PDF,而无需实际将文件保存在本地 PdfConverter无效。我怎样才能做到这一点?

  • 我正在处理一个问题,试图开发一个网络应用程序,其中一部分将上传的docx文件转换为pdf文件(经过一些处理)。使用python-docx和其他方法,我不需要安装word的windows机器,甚至不需要在linux上安装libreoffice,进行大部分处理(我的网络服务器是pythonAnywhere-linux,但没有libreoffice,也没有sudo或codeapt安装权限。但是转换成pd

  • 我正在努力寻找用Python将PDF文件转换为.docx文件的方法。 我见过其他与此相关的帖子,但在我的情况下,它们似乎都不正常。 我特别使用 这给了我输出[1],但在我的文件夹中找不到任何.docx文档。 我已经安装了LibreOffice 5.3。 有什么线索吗? 提前谢谢你!