java远程调用openoffice服务将word文件转换成pdf问题

小龙在线 发布于 2016/06/17 10:55
阅读 6K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

启动openoffice服务的命令


soffice -headless -accept="socket,host=192.168.1.129,port=8100;urp;" -nofirststartwizard

关键java程序


OpenOfficeConnection connection = new SocketOpenOfficeConnection("192.168.1.129", 8100);

看构造函数是支持java程序远程调用openoffice服务的,但是实际测试出现异常

word文件和java程序都在应用服务器192.168.1.130上,openoffice服务在192.168.1.129上


Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: conversion failed: could not load input document
	at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:131)
	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)
Caused by: com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one.
	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.$Proxy5.loadComponentFromURL(Unknown Source)
	at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadDocument(OpenOfficeDocumentConverter.java:150)
	at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:127)
	... 6 more


后来发现,在openoffice服务器上也放一份word文件,就可以成功转换了,并且转换生成的pdf文件也在openoffice服务器上

如此以来,java调用openoffice服务将word文件转换成pdf,必须保证openoffice服务和文件在同一个服务器上???



加载中
0
cike_wu
cike_wu
确实是这样的
豆芽moon
不是这样的,远程调用openoffice的话,用DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);就好,并且远程主机启动时的ip不能写成127.0.0.1,需要写成外部能访问到的实际ip
0
zi_wu_xian
zi_wu_xian
这样实现太痛苦了,用PageOffice直接调用WebSaveAsPDF()转PDF文件就可以了,尤其是转换格式肯定完美。
0
兰若寺
兰若寺
//DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
            DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);

第二行的方式,我测试是可以用来远程调用的。但是还是有些问题。




OSCHINA
登录后可查看更多优质内容
返回顶部
顶部