linux下安装OpenOffice及使用java调用OpenOffice转换word、Excel为pdf并添加水印

一、linux下安装OpenOffice

OpenOffice是Apache的一款开源的软件,我主要是用来转换office文档成pdf文件,并给其添加水印等。

(1)下载安装包

进入主题,首先我们需要下载OpenOffice的安装包,安装包分成windows系统、linux系统、32位、64位、rpm包、deb包,我是安装在linux下,我安装的linux是64位的,并且使用的redhat的CentOS,所以选择这个包

如果不知道是多少位的,命令输入 uname -p 如果是x86_64 那么就是64位,如果是i386 i686就是32位的

如果忘记了自己安装的版本,命令行输入 lsb_release -a 就可以看到,如果是CentOS,选择rpm,如果是Ubuntu,选择deb

如果想了解rpm和deb的请查看博客:https://blog.csdn.net/frank0712105003/article/details/8125662

我就以linux 64位 CentOS 为例安装OpenOffice。如果嫌下载慢,可以私聊我,或者在百度网盘下载:https://pan.baidu.com/s/1DHxyNM652A7ozL0vC7Iudw   提取码:8z7u

x86的是32位,x86_64是64位的,看好了下载

(2)解压并安装rpm

将下载好的安装包,我们正常都是放在/usr/local/目录下,可以自己建一个OpenOffice文件夹,输入命令:tar -zxvf Apache_OpenOffice_4.1.7_Linux_x86-64_install-rpm_z.gz ,解压完成进入zh-CN/RPMS 文件夹 ,安装解压出来的 rpm 包,输入命令 :rpm -ivh *.rpm,安装完成后的界面如图:

在进入desktop-integration文件夹,继续安装对应linux的rpm,我的linux是CentOS所以选择redhat的,输入命令:rpm -ivh openoffice4.1.7-redhat-menus-4.1.7-9800.noarch.rpm ,如图 :

安装完成如图:

(3)启动OpenOffic服务:

OpenOffice默认安装到opt文件夹下了,我默认了安装路径,所以启动命令是:
/opt/openoffice4/program/soffice -headless -accept="socket,host=虚拟机的地址,port=8100;urp;" -nofirststartwizard 临时启动
/opt/openoffice4/program/soffice -headless -accept="socket,host=虚拟机地址,port=8100;urp;" -nofirststartwizard & 后台启动
e

验证是否启动成功:

用netstat -lnp |grep soffice或者 ps -ef|grep soffice 查看启动状态,如下图所示表示启动成功。

我只是测试所以ip是127.0.0.1,表示只能本机调用,如果想在其他主机调用该linux下的OpenOffice,要设置在一个网段内,不然是无法访问到的,也就无法调用OpenOffice服务。

(4)启动OpenOffice可能出现的问题:

A.error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
解决:这个是找不到libXext.so.6文件。去系统里面的/usr/lib64中或者/usr/lib,查看有没有这个文件,如果有就copy到/opt/openoffice4/program/目录里面,赋予chmod 777 libXext.so.6。
如果没有,需要安装:yum install libXext.x86_64(64位) (yum install libXext.i686 32位)。安装成功后,进入/usr/lib64中将libXext.so.6拷贝到/opt/openoffoce4/program中:cp libXext.so.6 /opt/openoffice4/program/,进入/opt/openoffice4/program/赋予权限。(这个是看一位大佬博客写的,我也忘记博客地址了,不好意思)

B.no suitable windowing system found   输入命令 :yum -y groupinstall "X Window System"  如果 出现 


输入命令:yum groupinstall 'GNOME Desktop' 等待安装完成即可,不清楚为什么使用单引号。

感谢https://www.cnblogs.com/SLKnate/p/linux_centos7_XWindowSystem.html博客园这位大佬,我才成功启动了OpenOffice

安装完成再启动一次OpenOffice即可。

二、使用java程序调用OpenOffice实现转换并添加水印

(1)思路

首先连接OpenOffice,给定待转换的office文件,指定转换完成的pdf路径及名称,拿到pdf对象,添加水印对象,添加水印。

看了下大佬们的coding,大致的思路就是这样的。

(2)资料下载

具体实现我写了一个Demo,我将需要的安装包及jar包还有字体还有demo,放到百度云,链接: 

链接: https://pan.baidu.com/s/1wTqtBNVgaSVuqardgeKjXw 提取码: gjhd   x86是32位的 x86_64是64位的

我写的Demo都有注释,很容易看懂,待转换的文件放在/data目录下,指定是1.docx,生成的pdf也是在该目录下1.pdf,添加水印的是2.pdf。

(3)可能出现的问题

A.OpenOffice报拒绝连接的异常,您忘记开启OpenOffice服务,开启OpenOffice服务后再尝。

B.如果转换完成的pdf中文出现乱码或者显示方框,说明你的linux下没有字体,我在上传的百度云,有一个ttc后缀的文件(宋体简体),或者自己找一个字体,将其放到linux下/usr/share/fonts文件夹下,重启一下OpenOffice服务即可,再次运行程序。

C.有的转换xlsx或者docx文件时,无法转换或者异常,是因为jodconverter的版本是2.2.1,2.2.2版本就支持了,你直接修改pom依赖可能也下载不到,因为中央仓库没有,所以我在百度云上传的jar就是2.2.2的,放在你本地仓库指定的文件夹下,maven update下就可以了

D.即便你使用了2.2.2版本,可能转换有的doc,xls文档,生成的pdf是xml文件,因为这类都是xml类型的文档,有一种解决方案,另存,在转换即可。如何区分呢,用记事本打开,显示xml就是xml类型的,显示乱码就是正常的office文档。

到这里整篇博客就结束了,可能所写之处有不对的地方,希望各位前辈多多包涵,指出我的不足,让我们一起进步,一起成长。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值