OpenOffice文件转换的使用(php)

原文: https://blog.csdn.net/xyz_dream/article/details/52672319

今天谈一谈关于php使用OpenOffice转换文件格式的经历,网上搜索了很多关于php对此软件的使用,但是大部分都是一个copy一个地出现,整个搜索下来都TM是一个人写的,而且都没卵用。所以今天简单介绍一个解决方案。



首先肯定先下载OpenOffice,OpenOffice这个软件能将office文件转换为pdf格式,以及许多文件格式的转换,大家自己查询详细功能,今天就拿office文件转换为pdf文件的例子讲一讲就行了,做法都是一样的。



基本思路是这样的,我使用的是通过java jar包,输入命令行的方式进行文件的格式转换。这样做有一个优点,1.简单明了,容易操作,不用考虑过多复杂而且找不到的API函数之类的东西,直接达到转换目的。话说回来,这也有一个缺点,就是文件命名不能有空格,一旦有空格,命令行就失去效果了。例如
,假定一个命
令 copy 21.txt ./test 这个拷贝21.txt文件到 当前的test目录下面,但是如果你的文件命名有空格, copy 2
1.txt ./test 虽然文件命名肯定是能通过的,但是你执行这条指令会报错,找不到指定文件。
系统以为你要拷贝的文件叫
2 ,后面的1.txt可能视为参数或者非法的参数,达不到你要拷贝2 1.txt文件的目的,以至于报错就是找不到文件,没有2这个文件。



java jar包 : 点击打开链接



demo演示:点击打开链接



1.上官网, http://www.openoffice.org。下载openoffice





2.点击 Download




3. 点击下载对应操作系统版本就行了。安装和普通软件一样,这个就不一一叙述了。





4.设置权限



cmd 运行Dcomcnfg.exe->组件服务->计算机->我的电脑->DCOM配置->OpenOffice
Service Manager..




5. 鼠标右击->属性,选择安全
,和标识这2个配置。标识配置=>交互式用户,安全=>自定义,全部添加
Everyone权限。





点击编辑->添加Everyone权限就行了。





6. 启动OpenOffice服务命令: 打开cmd(建议用管理员权限运行,保证服务正常开启)。 先进入OpenOffice安装目录,例如我安装的: cd
C:\Program Files (x86)\OpenOffice 4\program



启动服务:
soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard




查看进程,服务是否正常开启:








下面开始演示转换过程:



将java jar包解压,和 tran.php 处于同一级目录。以及一个测试的 test.doc文件





主要代码如下:



 <span style=”font-family:Microsoft YaHei;”>function tranOffice($input_file,$type=”pdf”){

$input_file=iconv(“utf-8”, “gb2312”, $input_file);

$out_file=substr($input_file, 0,strrpos($input_file, “.”));
if($type!==”pdf”)

$out_file=$out_file.’.html’;
else
$out_file=$out_file.’.pdf’;
$file=”java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar “.”./“.”$input_file”.” ./“.”$out_file”;
$status=exec($file);
return $status;
}</span>


核心转换java命令行java
-jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar 源文件 目标文件
即可。



首先先打开doc文件看看:





运行
tran.php:









多出了test.pdf文件,我们打开看看:





完好无损,完美转换!



缺点介绍,前面说了文件命名不能有空格。我们来试试,test.doc变为t est.doc试一下。





浏览器访问tran.php,查看目录没有产生pdf文件,转换失败。



本次经验杂谈到此结束,不懂的地方再仔细看看流程,下载我上传的demo案例,朋友们自己看看吧。