在 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 设置边距值、最佳高度和打印文档
无法在 python 中为 ubuntu 16.04 上的 libreoffice 导入 uno
在 UNO LibreOffice 中使用 writer_pdf_Export 过滤器时出现问题
Python UNO(libreoffice):如何为工作表启用自动过滤器
LibreOffice UNO:设置样式(可以使用 Java、VB、Python、C++、任何使用 UNO API 的语言提供)