投稿

linux openoffice doc转pdf,Linux Openoffice转换Office为pdf

kittenchen PHP
2022-10-29 0 3

注意点:上传文件名生成一个别名备用,在文件路径中使用英文或数组


总结下:


1.碰到的坑不少,网上资料很多不全面,就拿linux上安装openoffice来说,需要安装一堆的依赖才成功跑起来


安装的方法给个地址:https://blog.csdn.net/qq_27229113/article/details/82054128


2.刚开始的时候在windows调试,只使用一个openoffice即可,当然windows配置也比较复杂,写过另外一篇,


地址: https://blog.csdn.net/qq_27229113/article/details/81984394,用完后发现咋ewindows上不能支持excel,有点尴尬,这里我没有再去调试,或许是可以的,大家自行调试


3.当部署到linux上的时候,发现,com组下在linxux系统不支持,最后找到一种方法,是java的JODConverter包,用起来也比较方便,安装比较简单,在下面我已经贴出来了,自行参考,


4.字体编码乱码的问题,我将linux系统设置为中文zh_CN.utf8,后面发现不是这个问题,我把centos系统自己增加了微软雅黑和黑体,没效果,openoffice增加字体,没效果,最后将java的jdk下添加字体成功了,这里爬坑挺多的


5.最后说说和自己犯得错,我前期忘了将上传的文件转为英文格式,导致在用php调取命令行的时候出现报错,也就是下面的php调用的时候出现了,所有转为统一规范的英文名字,


希望对大家有用.看了挺多的教程,php转office的方法确实比较少,点个关注!谢谢,转载几个放个我地址


 


开始搞!!!


JODConverter(Java OpenDocument Converter),可以转换不同Office格式的文档。它利用OpenOffice.org,可以自动化OpenOffice.org支持的所有转换。包括转换为pdf文件,部分支持转换到html文件。


JODConverter下载地址:https://sourceforge.net/projects/jodconverter


openoffice安装请移步:http://www.webyang.net/Html/web/article_336.html


进入目录:cd /opt

下载:wget https://downloads.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip

解压:unzip jodconverter-2.2.2.zip

进入目录:cd jodconverter-2.2.2/lib

测试转换(test.docx=>test.pdf):java -jar jodconverter-cli-2.2.2.jar test.docx test.pdf

显示:

Sep 20, 2017 3:40:05 PM com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection connect

INFO: connected

Sep 20, 2017 3:40:06 PM com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection disposing

INFO: disconnected


查看,已经有了test.pdf,可以直接访问。


php调用

<?php

$command = "java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar test.docx test.pdf";

//exec($command, $output);

//system($command);

passthru($command);


三个方法任选一种即可,根据需求可以封装成一个通用方法。

注意下,这三个方法可能是php的禁用方法,在php.ini中修改disable_functions即可。 

 


window下还可以试下通过php的COM组件来实现此功能。注意:com组件只支持window环境。 

另外还有很多在线转换的,也可以去看看~


java命令输入java的安装路径(这里要注意jdk的绝对路径,要不然在php代码里面无法唤起jdk,切记)

例如

/opt/local/jdk1.8.0_131/bin/java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /opt/local/nginx-1.12.0/html/content/web/upload/file/999.doc /opt/local/nginx-1.12.0/html/content/web/upload/pdf/999_doc.pdf


下面就是乱码的问题了


字体下载地址: https://download.csdn.net/download/qq_27229113/10643969


编码问题解决


 


查看系统编码

echo $LANG

设置系统编码

export LC_ALL="zh_CN.utf8"


 


字体编码问题的尝试


用vim /etc/fonts/fonts.conf,可以看到系统字体文件在/usr/share/fonts,将windows系统字体文件连接到此目录下

ln -s /usr/local/fonts fonts

然后更新缓存:fc-cache

重启openoffice:

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

再转换,字体终于显示正确,不再有乱码


问题解决: 

尝试一:此时可能是linux下的jre没有相应的中文字体的问题 


尝试二:openoffice字体问题


尝试三:java的jdk字体问题


结论:是jdk的字体,一个是openoffice字体,(有可能个人安装的linux系统有所不同,大家多做尝试)


方法:

下载 simhei.ttf 黑体 

simsun.ttc 宋体 

两种字体文件 


1.

找到jre的字体路径:/usr/jdk1.6.0_22/jre/lib/fonts 

新建文件夹fallback:mkdir fallback 

将字体simhei.ttf 、simsun.ttc拷贝到/usr/jdk1.6.0_22/jre/lib/fonts/fallback目录下 

重启openoffice 

ps ax|grep soffice 

显示如下: 

22739 pts/5 S 0:00 /bin/sh /opt/openoffice.org3/program/soffice -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard 

22747 pts/5 Sl 0:01 /opt/openoffice.org3/program/soffice.bin -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard 

23789 pts/5 S+ 0:00 grep soffice 

关闭soffice进程:kill 22739 

以后台启动openoffice: 

/opt/openoffice.org3/program/soffice -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard &; 


2.linux系统下字体和openoffice字体都是找的相应目录fonts存放即可


例如:


/usr/share/fonts 下放中文字体


fc-cache-fv 更新字体缓存


 


好了,希望对大家有用!


文章知识点与官方知识档案

————————————————

版权声明:本文为CSDN博主「可以吧可以吧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_27229113/article/details/82353909

文章为作者原创,不要转载哦!

首页 编程信息 PHP linux openoffice doc转pdf,Linux Openoffice转换Office为pdf

相关文章