关于使用PHP转换office文件为PDF的解决方案!
最近遇到了相关的问题,需要让office相关文件在线浏览,类似于百度文库,之前接触过,知道可以使用pdf.js在线浏览PDF文件,那么现在就需要将Word文件转为PDF文件,PPT文件转为PDF文件,Excel文件转为PDF文件,然后让用户在线浏览,这样效果就达到了。本次着重讲解文件转换openoffice的使用。
目录如下:
必须配置Java运行环境
下载安装
主要安装OpenOffice 及 jodconverter (点此下载 原谅我打个友链)
OpenOffice的官网地址: https://www.openoffice.org
OpenOffice的文档地址: https://wiki.openoffice.org/wiki/Main_Page
OpenOffice的下载地址: https://www.openoffice.org/download/index.html
这里面可以按照自己的操作系统进行选择并下载:
下载之后直接以默认的方式安装即可,也可以自定义的哈。
设置权限
按照下方的步骤打开OpenOffice的服务管理配置:
cmd 运行Dcomcnfg.exe->组件服务->计算机->我的电脑->DCOM配置->OpenOffice Service Manager..
打开之后如下图:
设置“安全”选项卡
选中OpenOffice的服务后,鼠标右键,选择“属性”,打开如下界面:
按照上图红框标识的进行设置,将“安全”选项 所有的内容都设置为 “自定义” > 然后添加 “Everyone” 用户,允许所有权限即可
设置 “标识”选项卡
选择 “交互式用户” > 确认并应用
启动OpenOffice服务命令
打开cmd(建议用管理员权限运行,保证服务正常开启)。
先进入OpenOffice安装目录,例如我安装的: cd C:\Program Files (x86)\OpenOffice 4\program
启动服务:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
运行之后,打开 “任务管理器”,可以看到应用已经正常运行了
使用jodconverter 转换文件
核心转换java命令行是
java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar 源文件路径 目标文件路径
可以直接使用以上命令,在dos命令行模式下进行转换。如此便可使用PHP代码执行此命令了,PHP的代码如下:
<?php
/**
* Created by PhpStorm.
* User: yezhimeih7
* Date: 2017/4/6
* Time: 16:13
* copy: http://www.tcioc.com
*/
set_time_limit(0);
function openOffice($input_file,$type="pdf"){
//转换路径的字符编码
$input_file=iconv("utf-8", "gb2312", $input_file);
//获取输出的标题
$out_file=substr($input_file, 0,strrpos($input_file, "."));
//非指定转换为PDF格式的文件,默认后缀为html
if($type!=="pdf"){
$out_file=$out_file.'.html';
}else{
// 对输出标题 去除空格
$out_file=$out_file.'.pdf';
$out_file=trim($out_file);
$out_file=str_replace(" ","",$out_file);
}
// dos 命令中,对于有空格的文件夹或者文件名,需要用 双引号(") 括起来,这样就可以正常运行dos命令了
$file='java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar ./'.'"'.$input_file.'" ./'.'"'.$out_file.'" ';
// PHP执行命令,这里在linux系统时,会有些不同
$status=exec($file);
return $status;
}
// 调用函数,处理转换
openOffice("./data/upload/ueditor/分析设计.pptx");
这里的PHP代码可以 用网站的形式访问,也可以用 cli 的模式运行。
运行成功之后,如下图所示:
注意:文件名中 带有 空格,依旧可以转换的哟~
Linux下OpenOffice的使用(转)
你需要几下载几个包,然后安装配置一下:
OOo_3.3.0_Linux_x86_install-rpm-wJRE_en-US.tar.gz
OOo-SDK_3.3.0_Linux_x86_install-rpm_en-US.tar.gz
jodconverter.2.2.2
1. 安装openoffice3
tar zxvf OOo_3.3.0_Linux_x86_install-rpm-wJRE_en-US.tar.gz
cd OOO330_m20_native_packed-1_en-US.9567/RPMS
rpm -ivh *.rpm --nodeps --force
安装后的默认目录是在:/opt/目录下面
启动服务:
/opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
开机启动:
vi /etc/rc.local
在最后面加入启动语句
2. 安装OpenOffice SDK3.3
tar zxvf OOo-SDK_3.3.0_Linux_x86_install-rpm_en-US.tar.gz
cd OOO330_m20_native_packed-1_en-US.9567/RPMS/
rpm -vih *.rpm
3. 安装jodconverter.2.2.2 ,安装了这个之后就已经可以实现DOC转PDF了。
这个安装很简单,直接上网站下一个这个东东回来。
解压,复制到一个目录里面去,就能直接用了,调用它里面的/lib/jodconverter-cli-2.2.2.jar这个玩意儿就行,可以直接运行命令测试:
java -jar /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/1.doc /tmp/1.pdf
配置运行上面的命令成功之后,可以参考windows下的PHP代码调用运行即可!
参考资料:
https://www.openoffice.org
http://blog.csdn.net/xyz_dream/article/details/52672319
https://zhidao.baidu.com/question/1047506507169557019.html
https://www.oschina.net/question/227511_87517
https://wiki.openoffice.org/wiki/Main_Page