在 UNO LibreOffice 中使用 writer_pdf_Export 过滤器时出现问题

Posted

技术标签:

【中文标题】在 UNO LibreOffice 中使用 writer_pdf_Export 过滤器时出现问题【英文标题】:Problem when using writer_pdf_Export filter in UNO LibreOffice 【发布时间】:2018-11-15 10:35:38 【问题描述】:

我在 Ubuntu 16.03 上安装了 LibreOffice [LibreOffice 6.1.3.2 10(Build:2)] 和 sdk。

我使用了sdk包中的java示例DocumentConverter来转换不同格式的odt。

使用“MS WORD 97”或“Text”没有问题,但使用“writer_pdf_Export”会以异常结束

好的

java -jar /home/js/libreoffice6.1_sdk/LINUXexample.out/class/JavaDocumentHandlingExamples/DocumentConverter.jar "./test" "MS WORD 97" "doc" "/home/js/libreoffice6.1_sdk/LINUXexample.out/misc/JavaDocumentHandlingExamples/converted_files"
Connected to a running office ...

The converted documents will stored in "/home/js/libreoffice6.1_sdk/LINUXexample.out/misc/JavaDocumentHandlingExamples/converted_files!
[test]
   test1.odt

KO

java -jar /home/js/libreoffice6.1_sdk/LINUXexample.out/class/JavaDocumentHandlingExamples/DocumentConverter.jar "./test" "writer_pdf_Export" "pdf" "/home/js/libreoffice6.1_sdk/LINUXexample.out/misc/JavaDocumentHandlingExamples/converted_files"
Connected to a running office ...

The converted documents will stored in "/home/js/libreoffice6.1_sdk/LINUXexample.out/misc/JavaDocumentHandlingExamples/converted_files!
[test]
com.sun.star.task.ErrorCodeIOException: SfxBaseModel::impl_store <file:////home/js/libreoffice6.1_sdk/LINUXexample.out/misc/JavaDocumentHandlingExamples/converted_files/test1.pdf> failed: 0x81a(Error Area:Io Class:Parameter Code:26)
    at   com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:158)
    at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:122)
    at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:312)
    at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:281)
    at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:81)
    at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:618)
    at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:145)
    at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:129)
    at com.sun.proxy.$Proxy5.storeAsURL(Unknown Source)
    at DocumentConverter.traverse(DocumentConverter.java:137)
    at DocumentConverter.main(DocumentConverter.java:216)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.star.lib.loader.Loader.main(Loader.java:132)
  test1.odt

我需要通过java使用UNO接口转换成任何格式,我也确实需要pdf... 有什么帮助吗?

【问题讨论】:

【参考方案1】:

你是在做“storeAsURL”还是“storeToURL”?

“storeAsURL”类似于“另存为”——当您以可编辑格式保存文档时。

“storeToURL”类似于“Export”——用于以不可编辑的格式生成输出。

所以我怀疑,如果你从“storeAsURL”切换到“storeToURL”,你会得到你想要的 PDF。

【讨论】:

不是 OP,但我有同样的问题,不幸的是,这并不能解决我的问题。

以上是关于在 UNO LibreOffice 中使用 writer_pdf_Export 过滤器时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Python libreoffice 使用 uno 设置边距值、最佳高度和打印文档

Bootstrap Uno LibreOffice 异常

无法在 python 中为 ubuntu 16.04 上的 libreoffice 导入 uno

在 UNO LibreOffice 中使用 writer_pdf_Export 过滤器时出现问题

Python UNO(libreoffice):如何为工作表启用自动过滤器

LibreOffice UNO:设置样式(可以使用 Java、VB、Python、C++、任何使用 UNO API 的语言提供)