美文网首页
Linux下用java调用OpenOffice实现doc转PDF

Linux下用java调用OpenOffice实现doc转PDF

作者: 木木子丶 | 来源:发表于2020-12-19 01:01 被阅读0次

前言

目前java语言能做的word转pdf都是通过poi或itext+pdfwriter,先把word转换成html,再通过模版去写出pdf,我们开头也是这样,但是随着文件多种类,开始存在转换文字和图片缺失的情况,经调查是字节码丢失导致的,最后也是网上搜罗了一大堆,除了第三方也没有什么更好的方式,最后看到了openOffice服务,但都是win平台才能使用的,索性在linux上看看能不能搞出来,最后记录下方案,希望能帮到有此业务的朋友

安装

下载源码包

wget http://heanet.dl.sourceforge.net/project/openofficeorg.mirror/4.0.0/binaries/zh-CN/Apache_OpenOffice_4.0.0_Linux_x86-64_install-rpm_zh-CN.tar.gz

解压文件

tar -zxvf Apache_OpenOffice_4.0.0_Linux_x86-64_install-rpm_zh-CN.tar.gz

解压后会在当前目录生成一个zh-CN目录

cd/zh-CN/PRMS/

安装当前目录组件

yum localinstall *.rpm

装完会在当前目录生成一个desktop-integration目录

cd desktop-integration

yum localinstall openoffice4.1.5-redhat-menus-4.1.5-9789.noarch.rpm

启动(必须在openoffice的安装目录下,如/opt/openoffice4下执行)


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

问题

报错(/opt/openoffice4/program/soffice.bin: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
)

安装

yum install libXext.x86_64

安装完后在那两个目录中找到复制到/opt/openoffice4/program/下

cp -a usr/lib64/libXext.so.6 /opt/openoffice4/program/

报错
/opt/openoffice4/program/soffice.bin: error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory

yum install freetype

cp -a usr/lib64/libfreetype.so.6 /opt/openoffice4/program/

报错
no suitable windowing system found, exiting.

yum groupinstall "X Window System"

使用

  1. 在github上克隆项目
git clone https://github.com.dagwieers/unconv
  1. 进入unoconv目录并安装 make install
  1. 使用命令unoconv -f pdf xx.docx

代码整合

注意在调用服务之前请把之前启动的office服务给杀掉,我们不从linux手动执行命令,完全交给job程序来操作,否则报如下错误

错误.png

一切运维搞定后,就大功告成了

成功.png

我们指定的路径下会出现转换后的pdf文件

文件.png

打开来看看,嗯 没什么问题 完美!

打开.png

总结: java + linux 还是不适合做这种桌面级的服务,实在是太麻烦了,有钱的直接买第三方吧 哈哈

相关文章

网友评论

      本文标题:Linux下用java调用OpenOffice实现doc转PDF

      本文链接:https://www.haomeiwen.com/subject/ujrqnktx.html