java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

时间:2021-05-16 21:07:50
我在java中,使用openoffice,将docx转换为pdf,是可以转换成功的,但是出了一些小问题。

代码:
connection.connect();   
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);   
converter.convert(wordFile, pdfFile);    //进行转换

主要的转换代码就是这三句
可以生成pdf,并且格式都是正确的,但是我的docx里面是有图片的,生成的pdf里面没有图片,这是什么原因呢?

希望有大家可以解答一下。
或者是有没有什么其它的方法可以让docx转为pdf

jacob这个我也用了的,但是因为一直在报错,解决了两天都没有解决,就放弃了,改用“openoffice”,现在就只差图片不能显示这个问题了。

java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

31 个解决方案

#1


自己顶上去~~

求解答啊~搜了很多,都不知道是什么问题,快郁闷死了 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#2


直接用软件转,看看有问题没。

#3


引用 2 楼 yangqiu0928 的回复:
直接用软件转,看看有问题没。


测试了的,我先测试的是直接将我的docx输出为pdf格式,图片是存在的,然后我去搜了一下,发现了“LibreOffice”,它是在“openoffice”基础上的升级【暂时这么理解】,然后不通过程序,直接用“LibreOffice”它将docx转为pdf,图片是在的,然后我就把程序里面的“Openoffice”改成了“LibreOffice”,转出的pdf格式还是木有图片。。。。木有图片。。。 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答
这是怎么一回事。。。。。还是说我要先把“openoffice”给卸载了?

#4


去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。

#5


引用 4 楼 yangqiu0928 的回复:
去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


下载最新版的“Openoffice”?我去试试。

#6


引用 4 楼 yangqiu0928 的回复:
去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


试了,最新版本的“Openoffice”,转成pdf,图片还是木有出来。啊啊啊~~~
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#7


引用 6 楼 yp_1234 的回复:
Quote: 引用 4 楼 yangqiu0928 的回复:

去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


试了,最新版本的“Openoffice”,转成pdf,图片还是木有出来。啊啊啊~~~
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答


明天给你恢复吧,相关资料在家呢,单位没有例子。

#8


引用 7 楼 yangqiu0928 的回复:
Quote: 引用 6 楼 yp_1234 的回复:

Quote: 引用 4 楼 yangqiu0928 的回复:

去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


试了,最新版本的“Openoffice”,转成pdf,图片还是木有出来。啊啊啊~~~
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答


明天给你恢复吧,相关资料在家呢,单位没有例子。


恩恩。谢谢~~~~ java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#9


java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#10


引用 9 楼 yp_1234 的回复:
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

据我观察,你用的还是老版本的openoffice 新版本的写法不是你这样写的 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#11


引用 10 楼 yangqiu0928 的回复:
Quote: 引用 9 楼 yp_1234 的回复:

java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

据我观察,你用的还是老版本的openoffice 新版本的写法不是你这样写的 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答


新版本应该怎么写?我那个是在网上搜出来的。。好像用“openoffice”的人很少,好多都是用的“jacob”。
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#12


http://download.csdn.net/detail/yangqiu0928/6411119

#13


引用 12 楼 yangqiu0928 的回复:
http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

#14


引用 13 楼 yp_1234 的回复:
Quote: 引用 12 楼 yangqiu0928 的回复:

http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

我是这样写的,一切都很正常。

#15


为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片

#16


引用 14 楼 yangqiu0928 的回复:
Quote: 引用 13 楼 yp_1234 的回复:

Quote: 引用 12 楼 yangqiu0928 的回复:

http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

我是这样写的,一切都很正常。


OfficeManagerSingle officeManagerSingle = OfficeManagerSingle.getOfficeManagerSingle();
OfficeManager officeManager = officeManagerSingle.getOfficeManager(configuration);

这两句是什么意思?“OfficeManagerSingle”这个应该是你自己写的一个类吧?我这边要报错。

然后我就用的你注释掉的那两句话:
OfficeManager officeManager = configuration.buildOfficeManager();
officeManager.start();

最后写出来就是这样的:

//准备启动服务....
configuration.setOfficeHome(OFFICE_HOME); //设置OpenOffice.org安装目录
configuration.setPortNumbers(port);  //设置转换端口,默认为8100
//设置任务执行超时为5分钟
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);
//设置任务队列超时为24小时
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);

OfficeManager officeManager = configuration.buildOfficeManager();
officeManager.start();     //启动服务

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(wordFile, pdfFile);    //进行转换


然后我的“Openoffice”版本是:OpenOffice 4.0.1
安装文件的名字是:Apache_OpenOffice_4.0.1_Win_x86_install_zh-CN.exe

你用过jacob没?

#17


引用 15 楼 tlfu_12344 的回复:
为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片


我试一下呢。插入到word中的图片,用不用放入到项目中?

#18


引用 17 楼 yp_1234 的回复:
Quote: 引用 15 楼 tlfu_12344 的回复:

为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片


我试一下呢。插入到word中的图片,用不用放入到项目中?
不会,他自己会生成

#19


引用 15 楼 tlfu_12344 的回复:
为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片


你的word中的图片是怎么放进去的?
是“插入-图片-来自文件”吗?
我生成的html好像也没有图片,,这是怎么一回事啊。。。。。 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#20


java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答嗯我的可以,我给你看看,我生成的是html

#21


第二个图是word中的,第一个是生成的html中展示的

#22


如果楼主想要高效的其它方式 可以试试直接调用Office自带的COM来转

#23


呼~经过反复实践,终于可以了。虽然具体原因不是很清楚,但是应该是和我建立的word文档有关系。

我先测试了我要转换的docx文档,图片是不能生成的,
然后我又新建了一个doc,测试新建的那个是图片可以显示的。
因为我的电脑上不能新建docx,我就将doc的后缀改成了docx,测试后,图片可以显示。
我又让别人发了一个在她电脑上新建的docx,测试发现图片是可以出来。
接着我修改了一下别人发过来的docx,再次进行测试,神奇的事情就发生了。。。。居然没有图片!!

按照这个逻辑来看,我不能在我的电脑上修改不是在我电脑上新建的文档,否则图片就显示不出来。

这是为什么。。太奇怪了。不过至少可以解决我现在的问题了。 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#24


引用 14 楼 yangqiu0928 的回复:
Quote: 引用 13 楼 yp_1234 的回复:

Quote: 引用 12 楼 yangqiu0928 的回复:

http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

我是这样写的,一切都很正常。


谢谢你的代码~~~~是我文档建立的问题~~再一次感谢~~~~

#25


引用 12 楼 yangqiu0928 的回复:
http://download.csdn.net/detail/yangqiu0928/6411119


有个额外的问题,docx转doc的时候,我的docx中有表格,但是转出的doc,表格错位了。。。这是怎么回事呢?

#26


这个问题我也遇到过,我是要自己生成一个复杂的docx包括图片、图表、目录等,在linux平台下完成的。你是怎么解决的,我的判断是openoffice不兼容word的2007格式即docx,图片和chart等2007格式下都是超链接,丢失图片的原因正是因为如此。
  我现在想的的解决方法就是将生成的docx转换为doc 因为docx4j 操作docx ,
ps 有什么好的解决方法可以分享一下哈。

#27


lz我的为什么转换docx就不行呢 lz你用的jodconverter jar包是哪个版本的?

#28


引用 27 楼 wkjames 的回复:
lz我的为什么转换docx就不行呢 lz你用的jodconverter jar包是哪个版本的?


我没有用JODC的方法。我用的是openoffice,将docx转换成pdf,我的模板文件是docx~~~

#29


lz你的代码调用的是jocd jar的方法啊

#30


我的真的跟你的情况一模一样,一点不差!就是不能修改非本机创建的docx文件,本机创建的修改也没关系。你是怎么解决的?

#31


楼主:yp_1234 您好,我也有个需求word转pdf,调用openoffice服务不太稳定、突然说不能连接,折腾了好久,可以共享下的案例吗?或者留个联系方式沟通向你学些,谢谢。

#1


自己顶上去~~

求解答啊~搜了很多,都不知道是什么问题,快郁闷死了 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#2


直接用软件转,看看有问题没。

#3


引用 2 楼 yangqiu0928 的回复:
直接用软件转,看看有问题没。


测试了的,我先测试的是直接将我的docx输出为pdf格式,图片是存在的,然后我去搜了一下,发现了“LibreOffice”,它是在“openoffice”基础上的升级【暂时这么理解】,然后不通过程序,直接用“LibreOffice”它将docx转为pdf,图片是在的,然后我就把程序里面的“Openoffice”改成了“LibreOffice”,转出的pdf格式还是木有图片。。。。木有图片。。。 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答
这是怎么一回事。。。。。还是说我要先把“openoffice”给卸载了?

#4


去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。

#5


引用 4 楼 yangqiu0928 的回复:
去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


下载最新版的“Openoffice”?我去试试。

#6


引用 4 楼 yangqiu0928 的回复:
去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


试了,最新版本的“Openoffice”,转成pdf,图片还是木有出来。啊啊啊~~~
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#7


引用 6 楼 yp_1234 的回复:
Quote: 引用 4 楼 yangqiu0928 的回复:

去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


试了,最新版本的“Openoffice”,转成pdf,图片还是木有出来。啊啊啊~~~
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答


明天给你恢复吧,相关资料在家呢,单位没有例子。

#8


引用 7 楼 yangqiu0928 的回复:
Quote: 引用 6 楼 yp_1234 的回复:

Quote: 引用 4 楼 yangqiu0928 的回复:

去官网下载最新版本的试试。我之前用老版本的,遇到开启服务的问题,后来改用新版的就ok了,不过没有遇到图片丢失问题。


试了,最新版本的“Openoffice”,转成pdf,图片还是木有出来。啊啊啊~~~
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答


明天给你恢复吧,相关资料在家呢,单位没有例子。


恩恩。谢谢~~~~ java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#9


java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#10


引用 9 楼 yp_1234 的回复:
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

据我观察,你用的还是老版本的openoffice 新版本的写法不是你这样写的 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#11


引用 10 楼 yangqiu0928 的回复:
Quote: 引用 9 楼 yp_1234 的回复:

java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

据我观察,你用的还是老版本的openoffice 新版本的写法不是你这样写的 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答


新版本应该怎么写?我那个是在网上搜出来的。。好像用“openoffice”的人很少,好多都是用的“jacob”。
java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#12


http://download.csdn.net/detail/yangqiu0928/6411119

#13


引用 12 楼 yangqiu0928 的回复:
http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

#14


引用 13 楼 yp_1234 的回复:
Quote: 引用 12 楼 yangqiu0928 的回复:

http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

我是这样写的,一切都很正常。

#15


为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片

#16


引用 14 楼 yangqiu0928 的回复:
Quote: 引用 13 楼 yp_1234 的回复:

Quote: 引用 12 楼 yangqiu0928 的回复:

http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

我是这样写的,一切都很正常。


OfficeManagerSingle officeManagerSingle = OfficeManagerSingle.getOfficeManagerSingle();
OfficeManager officeManager = officeManagerSingle.getOfficeManager(configuration);

这两句是什么意思?“OfficeManagerSingle”这个应该是你自己写的一个类吧?我这边要报错。

然后我就用的你注释掉的那两句话:
OfficeManager officeManager = configuration.buildOfficeManager();
officeManager.start();

最后写出来就是这样的:

//准备启动服务....
configuration.setOfficeHome(OFFICE_HOME); //设置OpenOffice.org安装目录
configuration.setPortNumbers(port);  //设置转换端口,默认为8100
//设置任务执行超时为5分钟
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);
//设置任务队列超时为24小时
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);

OfficeManager officeManager = configuration.buildOfficeManager();
officeManager.start();     //启动服务

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(wordFile, pdfFile);    //进行转换


然后我的“Openoffice”版本是:OpenOffice 4.0.1
安装文件的名字是:Apache_OpenOffice_4.0.1_Win_x86_install_zh-CN.exe

你用过jacob没?

#17


引用 15 楼 tlfu_12344 的回复:
为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片


我试一下呢。插入到word中的图片,用不用放入到项目中?

#18


引用 17 楼 yp_1234 的回复:
Quote: 引用 15 楼 tlfu_12344 的回复:

为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片


我试一下呢。插入到word中的图片,用不用放入到项目中?
不会,他自己会生成

#19


引用 15 楼 tlfu_12344 的回复:
为什么我的有了,你确定你那word中是图片嘛,换换试试。不行的话你生成html看有没有图片


你的word中的图片是怎么放进去的?
是“插入-图片-来自文件”吗?
我生成的html好像也没有图片,,这是怎么一回事啊。。。。。 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#20


java 使用Openoffice 将docx转换为pdf,有点小问题,求解答java 使用Openoffice 将docx转换为pdf,有点小问题,求解答嗯我的可以,我给你看看,我生成的是html

#21


第二个图是word中的,第一个是生成的html中展示的

#22


如果楼主想要高效的其它方式 可以试试直接调用Office自带的COM来转

#23


呼~经过反复实践,终于可以了。虽然具体原因不是很清楚,但是应该是和我建立的word文档有关系。

我先测试了我要转换的docx文档,图片是不能生成的,
然后我又新建了一个doc,测试新建的那个是图片可以显示的。
因为我的电脑上不能新建docx,我就将doc的后缀改成了docx,测试后,图片可以显示。
我又让别人发了一个在她电脑上新建的docx,测试发现图片是可以出来。
接着我修改了一下别人发过来的docx,再次进行测试,神奇的事情就发生了。。。。居然没有图片!!

按照这个逻辑来看,我不能在我的电脑上修改不是在我电脑上新建的文档,否则图片就显示不出来。

这是为什么。。太奇怪了。不过至少可以解决我现在的问题了。 java 使用Openoffice 将docx转换为pdf,有点小问题,求解答

#24


引用 14 楼 yangqiu0928 的回复:
Quote: 引用 13 楼 yp_1234 的回复:

Quote: 引用 12 楼 yangqiu0928 的回复:

http://download.csdn.net/detail/yangqiu0928/6411119


你按照你的代码写,转换成pdf的时候图片不会丢失?还是会显示出来?

我是这样写的,一切都很正常。


谢谢你的代码~~~~是我文档建立的问题~~再一次感谢~~~~

#25


引用 12 楼 yangqiu0928 的回复:
http://download.csdn.net/detail/yangqiu0928/6411119


有个额外的问题,docx转doc的时候,我的docx中有表格,但是转出的doc,表格错位了。。。这是怎么回事呢?

#26


这个问题我也遇到过,我是要自己生成一个复杂的docx包括图片、图表、目录等,在linux平台下完成的。你是怎么解决的,我的判断是openoffice不兼容word的2007格式即docx,图片和chart等2007格式下都是超链接,丢失图片的原因正是因为如此。
  我现在想的的解决方法就是将生成的docx转换为doc 因为docx4j 操作docx ,
ps 有什么好的解决方法可以分享一下哈。

#27


lz我的为什么转换docx就不行呢 lz你用的jodconverter jar包是哪个版本的?

#28


引用 27 楼 wkjames 的回复:
lz我的为什么转换docx就不行呢 lz你用的jodconverter jar包是哪个版本的?


我没有用JODC的方法。我用的是openoffice,将docx转换成pdf,我的模板文件是docx~~~

#29


lz你的代码调用的是jocd jar的方法啊

#30


我的真的跟你的情况一模一样,一点不差!就是不能修改非本机创建的docx文件,本机创建的修改也没关系。你是怎么解决的?

#31


楼主:yp_1234 您好,我也有个需求word转pdf,调用openoffice服务不太稳定、突然说不能连接,折腾了好久,可以共享下的案例吗?或者留个联系方式沟通向你学些,谢谢。