PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)


Posted in PHP onMarch 10, 2016

本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果。分享给大家供大家参考,具体如下:

由于项目要实现类似百度文库的功能,又是我一个人做的项目,所以就想到找免费的现成的来使用。在网上找到的都是一样的。如下:

Flash Paper支持Office文档(.doc,.xls,.ppt)直接转换为PDF或SWF,速度很快,效果较好。可惜,Flash Paper V2.2后没有再更新了。安装Flash Paper后,可以直接使用命令调用FlashPrinter.exe,实现批量转换。

例如:C:\FlashPaper2.2\FlashPrinter.exe C:\Flex技术简介.ppt -o C:\Flex技术简介.swf

下载个FlashPaper,安装好之后,控制面板的打印机那里会出现一个虚拟的打印机,这个就说明安装成功了,win7下我试过32位的和64位的都安装不了。

在命令行试一下上面的命令,路径根据自身调整。执行后,成功就说明可以用了.

接下来就是php使用了,php使用 exec,或者system等来执行cmd命令,如:

exec("C:\FlashPaper2.2\FlashPrinter.exe C:\Flex技术简介.ppt -o C:\Flex技术简介.swf");

执行这个之前要配置以下php.ini 把安全模式设为off(safe_mode = Off),或者开着也行,在safe_mode_exec_dir =设置允许允许exe的路径,设为flashpaer的路径。

测试一下,执行成功!

这 些都是可以在网上查到的,由于我用的是office2007所以word后缀.docx,转换的时候就失败了,一直在网上也找不到原因,无意中,我把要转 换的 a.docx 改名为 a.doc 转换成功了,这样我也想不明白,因为直接在cmd 下,转换.docx 是可以的。同理要转2007的ppt,excel 都是把后缀去掉那个x就可以转换了。

补充:

最近,有个项目要用到类似DOCIN的文档转换和阅读的功能,于是就开始找相关的资料,最后总结出2种解决办法,以下就来探讨下两种方法的各自实现。

第一种:通过FLASH PAPER来转换DOC文档直接生成SWF,这个很简单,下载一个FLASH PAPER 安装就可以调用,我们在程序里是用CMD调用的,调用的命令是:C:\Program Files\Macromedia\FlashPaper 2\FlashPrinter.exe xxx.ppt -o xxx.swf,不过经我测试,这个东西有很大的缺陷,不能并发几个一起用,也就是说只能同时转换一个文档,我不知道有没有其他方法能够解决这个问题,如果你有解决的办法,也请告诉我,FLASH PAPER的转换原理是这样的:建立一个虚拟打印机,打开文档,虚拟打印,取得打印的内容直接生成SWF,所以转换一个文档就需要一个虚拟打印机的运行~~~中间会弹出打印和打开文档的窗口。这个方案不符合我的要求,直接PASS。

第二种:利用开源的软件OPENOFFICE把文档转换成PDF,在通过SWFTOOLS把PDF转换成SWF,其中要用到的东西比较多,下面一一道来。这个方案可以在微软的系统下运行,也可以在LINUX下运行,我是CENTOS5.5字符界面下跑的,下面是过程:

首先安装装CENTOS5.5系统,安装过程就不再罗嗦了,我是最简安装的

装好系统后,就是把需要的软件包都下载下来:我们用到的软件包有

# wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/C DS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/ jdk-6u20-linux-i586.bin?BundledLineItemUUID=fdeJ_hC vMVcAAAEpabADyW5K&OrderID=JRuJ_hCvMlQAAAEpWrADyW5K& ProductID=guBIBe.oc_wAAAEnaDJHqPYe&FileName=/jdk-6u 20-linux-i586.bin 
# wget http://download.services.openoffice.org/files/loca lized/zh-cn/3.2.0/OOo_3.2.0_LinuxIntel_install_zh-C N.tar.gz 
# wget http://www.swftools.org/swftools-0.9.1.tar.gz 
wget http://apache.etoak.com/tomcat/tomcat-6/v6.0.26/bi n/apache-tomcat-6.0.26.tar.gz

还有一个openoffice的插件,我们所有的应用都基于它:jodconverter

下载地址是:http://sourceforge.net/projects/jodconverter/files/

好了,软件包准备好,下面就开工了⌒_⌒

先装JDK & tomcat,安装过程就不罗嗦了,不会的google下

接下来,安装openoffice,

# tar zxvf OOo_3.2.0_LinuxIntel_install_zh-CN.tar.gz 
#cd OOO320_m12_native_packed-1_zh-CN.9483/RPMS 
#rpm -ivh ?force ?nodeps *.rpm

就这样OPENOFFICE就安装好了,如果你的系统没有中文字体,就把中文字体安装上,否则转出来的PDF会乱码

装好openoffice后,接着安装swftools,swftools安装也比较简单,

# tar zxvf swftools-0.9.1.tar.gz 
#cd swftools-0.9.1 
# ./configure ?prefix=/usr/local/swftools/ 
# make && make install

到此,所有该安装的软件都已经安装好了,由于我现在是利用

下面开始把所需服务都启动起来,

先把OPENOFFICE启动起来,我们是当作服务启动的,启动命令如下

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

接着把TOMCAT 启动,把jodconverter做为WEB APP转换服务的,所以先把下灾下来的jodconverter-webapp-2.2.2.zip解压,把jodconverter-webapp- 2.2.2.war放到TOMCAT根目录,运行TOMCAT后,会自动生成APP文件夹,为了书写简单,我们改名为converter,假设你的服务器 IP为:192.168.1.123www.linghan56.cn,TOMCAT端口为8080,浏览器输入:http://192.168.1.123:8080/converter/,看看转换程序运行正常不,启动正常的话,我们的工作就完成一大半了。 主要的工作已经做完,现在剩下的就是怎么应用了,我是利用PHP调用转换的程序的,用户通过PHP上传文件,

判断文件类型,如果是JPG,GIF,PNG,PDF等利用SWFTOOLS可以直接转换的文件,就直接转换,否则,通过http://192.168.1.123:8080/converter/把文件转换为PDF,再利用SWFTOOLS把PDF转为SWF,值得注意的是,PDF转SWF时候,注意把版本转化为9,如果转为9以下的版本的话,AS3操作起来会很麻烦,SWFTOOLS转换的命令如下:

#/usr/local/swftools/bin/pdf2swf -T 9 XXX.pdf XXX.swf

其中-T是版本信息,具体可以通过#/usr/local/swftools/bin/pdf2swf -help查询

现在整个过程完成3/4了,剩下的就是用AS3写一个东西出来,操作PDF生成的SWF,生成的SWF文件格式是这样的,每一页的文档会生成一个movieclip,具体的代码我就不贴不出来了,这个相信也不难。

本来想放一个在线的DEMO的,不过我这个VPS配置太低,512M的内存,还不能自己添加swap,跑了PHP+MYSQL,就跑不动这个了,这个应用要求的内存和CPU还是蛮高的。

比较两种方法,第一种转换出来的东西应该更好,而且支持的格式更多,理论上讲,只要能打印的东西,都能转换,只是不能并发,所以意义不大,如果能利用这个原理,自己写一个转换服务器,解决并发问题,那第一种应该是最合适的。

第二种只能转换openoffice支持的格式,对服务器的要求非常的高。不知道DOCIN和BAIDU文档是怎么样的解决方案

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 中执行系统外部命令
Oct 09 PHP
一个用php3编写的简单计数器
Oct 09 PHP
第二节--PHP5 的对象模型
Nov 16 PHP
php学习之运算符相关概念
Jun 09 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
IIS6.0中配置php服务全过程解析
Aug 07 PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
PHP计算近1年的所有月份
Mar 13 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 #PHP
php注册登录系统简化版
Dec 28 #PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 #PHP
Zend Framework教程之Autoloading用法详解
Mar 08 #PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 #PHP
php bootstrap实现简单登录
Mar 08 #PHP
PHP Echo字符串的连接格式
Mar 07 #PHP
You might like
星际争霸秘籍
2020/03/04 星际争霸
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php session_decode函数用法讲解
2019/05/26 PHP
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
详解jquery和vue对比
2019/04/16 jQuery
小程序中英文混合排序问题解决
2019/08/02 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python操作xml文件示例
2014/04/07 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python创建学生管理系统
2019/11/22 Python
亚马逊印度站:Amazon.in
2017/10/15 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
高级销售员求职信
2013/10/25 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
出生公证委托书
2014/04/03 职场文书
房屋委托书范本
2014/04/04 职场文书
倡议书格式模板
2014/05/13 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
pycharm无法安装cv2模块问题
2022/05/20 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python