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访问查询mysql数据的三种方法
Oct 09 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP 正则表达式常用函数
Aug 17 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
PHP框架自动加载类文件原理详解
Jun 06 PHP
php微信开发之图片回复功能
Jun 14 PHP
php实现的数组转xml案例分析
Sep 28 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
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP7内核之Reference详解
2019/03/14 PHP
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
javascript中的this详解
2014/12/08 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
python3中bytes和string之间的互相转换
2017/02/09 Python
深入理解Django的中间件middleware
2018/03/14 Python
有关Python的22个编程技巧
2018/08/29 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
领导班子四风表现材料
2014/08/23 职场文书
实习单位证明范例
2014/11/17 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL