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 相关文章推荐
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
PHP实现MySQL更新记录的代码
Jun 07 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
帝国cms常用标签汇总
Jul 06 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
PHP中递归的实现实例详解
Nov 14 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 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
编写自己的php扩展函数
2006/10/09 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
Javascript window对象详解
2014/11/12 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
python中__call__内置函数用法实例
2015/06/04 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
酒吧副总经理岗位职责
2013/12/10 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL