本文操作环境:windows7系统、php7.1版,dell g3电脑
怎么实现php在线演示功能?
windows下实现php在线预览功能
最近用到文档在线预览功能,之前没接触过,一切从零开始,整了一段时间终于实现,现在把方法分享给大家!
一、主要思路
先将其他格式的文档(office文档、txt、图片等等)通过openoffice转换成pdf格式文档,然后通过swftools(http://www.swftools.org/)将pdf格式文档转换为swf格式文档,最后通过flexpaper显示swf格式的文档,从而实现预览多种格式的文档。
使用到的工具自己从网上下载,很好找的。
二、实现过程
1.其他文档转为pdf
用命令启动openoffice:
运行->cmd,输入下面的命令
cd /d e:/openoffice/program & soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
或者在cmd中进入program目录,然后输入
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
php实现代码:
set_time_limit(0); function makepropertyvalue($name,$value,$osm){ $ostruct = $osm->bridge_getstruct("com.sun.star.beans.propertyvalue"); $ostruct->name = $name; $ostruct->value = $value; return $ostruct; } function word2pdf($doc_url, $output_url){ $osm = new com("com.sun.star.servicemanager") or die ("please be sure that openoffice.org is installed.n"); $args = array(makepropertyvalue("hidden",true,$osm)); $odesktop = $osm->createinstance("com.sun.star.frame.desktop"); $owriterdoc = $odesktop->loadcomponentfromurl($doc_url,"_blank", 0, $args); $export_args = array(makepropertyvalue("filtername","writer_pdf_export",$osm)); $owriterdoc->storetourl($output_url,$export_args); $owriterdoc->close(true); } $doc_file = 'd:/wamp/www/onlineread/uploads/docfile.doc'; $output_file = 'd:/wamp/www/onlineread/uploads/pdffile.pdf'; $doc_file = "file:///" . $doc_file; $output_file = "file:///" . $output_file; word2pdf($doc_file,$output_file);
2.pdf转换为swf并显示
php实现代码:
<div style="width:100%;height:800px;display:block;margin-left: auto;margin-right: auto; margin-top: 20px;"> <a id="viewerplaceholder" style="width:100%;height:800px;display:block;"></a> <script type="text/javascript"> var path="/<?=$convert?>";//调用php的变量,如果不能实现可考虑下一句的写法 //var path="/<?php echo $convert?>"; var fp = new flexpaperviewer( '__public__/flexpaper/flexpaperflash/flexpaperviewer', 'viewerplaceholder', { config : {//配置参数,可自行修改成自己想要的 swffile : escape(path), scale : 1, zoomtransition : 'easeout', zoomtime : 0.5, zoominterval : 0.2, fitpageonload : false, fitwidthonload : false, printenabled : true, fullscreenasmaxwindow : false, progressiveloading : false, minzoomsize : 0.2, maxzoomsize : 5, searchmatchall : false, initviewmode : 'portrait', viewmodetoolsvisible : true, zoomtoolsvisible : true, navtoolsvisible : true, cursortoolsvisible : true, searchtoolsvisible : true, localechain: 'en_us' }}); </script> </div>
3.运行前的准备
需要先进行如下的设置,否则运行过程中可能会出错!
控制面板-管理工具-组件服务-计算机-我的电脑-docm配置,找到openoffice service manager(ver 1.0)右键属性,按下图所示进行配置:
如下图所示找到openoffice service manager(ver 1.0):
在弹出框中选择‘安全’,分别编辑‘启动和激活权限’和‘访问权限’:
在‘启动和激活权限’弹出框中点击添加,输入everyone:
设置everyone的权限:
在‘访问权限’的弹出框中点击添加,输入everyone:
设置everyone权限:
在属性对话框中选择‘标识’,选择‘交互式用户’:
如果遇到com类实例化失败的问题,打开php配置文件,去掉com.allow_dcom=true前面的分号,并添加extension=php_com_dotnet.dll,因为php5.4以后就不内嵌com了。
设置好后不要忘记重启服务哦!
推荐学习:《php视频教程》
以上就是怎么实现php在线演示功能的详细内容。
