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 相关文章推荐
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
PHP中预定义的6种接口介绍
May 12 PHP
PHP滚动日志的代码实现
Jun 10 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 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实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
关于PHP开发的9条建议
2015/07/27 PHP
浅谈php7的重大新特性
2015/10/23 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
Python中基本的日期时间处理的学习教程
2015/10/16 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
详解Python IO口多路复用
2020/06/17 Python
python 如何实现遗传算法
2020/09/22 Python
python编程的核心知识点总结
2021/02/08 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
英国现代市场:ARKET
2019/04/10 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
数学检讨书1000字
2014/02/24 职场文书
服务理念口号
2014/06/11 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
初中语文教学研修日志
2015/11/13 职场文书