Linux下使用Openoffice将word文档转为pdf

一、使用openoffice跟unoconv进行转换

二、安装openoffice,安装包可以从官网下载(Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz)

解压,安装(解压后会有一个zh-CN的文件夹):

tar -zxvf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz
cd zh-CN/RPMS
yum localinstall *.rpm

  注:这里可能需要安装一些依赖,根据提示安装即可

三、之后进入RPMS目录下的desktop-integration文件夹,运行

yum install openoffice4.0-redhat-menus-4.0-9702.noarch.rpm

yum localinstall openoffice4.0-redhat-menus-4.0-9702.noarch.rpm

 

 四、安装完成后启动服务,一般都安装在了/opt/openoffice4目录下

临时启动:

/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

  永久启动:

nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

  

五、查看服务是否启动:

netstat -lnp |grep 8100

  如果没有启动,则需要开启8100端口

  如果提示缺少libXext.so.6,则yum安装

yum install libXext.x86_64
yum install freetype
yum groupinstall "X Window System"

    

六、安装unoconv,使用该服务将word转pdf

yum install unoconv

 

七,安装完成后,测试

unoconv -f pdf test.docx

  如无意外,则会转成同名的pdf文件

八、可能会出现中文字体无法显示,则将window下的字体复制到 /usr/share/fonts/Chinese

mkfontscale
mkfontdir
fc-cache –fv

   

另外,php可以使用exec()函数执行,只能在cli模式下运行,所以需要使用消息队列在进程中进行转换