(写的有点啰嗦,具体的实现方法只是粗体和代码就够了)

给市场部门用dede做个cms,需要附件在线查看。公司有个系统(就叫develop_cms吧)是已经实现的,本以为很容易,不过是下一个插件然后把附件的路径传进去就可以了,哪知道,远没有我想象的那么简单。就简单记录一下最后实现的方法吧。

  1. google了一下,下载了flexpaper,里面一堆东西看着就吓了一跳。也有很多相关的文章,但基本都只是分析flexpaper的参数和自带的demo,可以预览swf,其实工作原理是把文档转换成swf然后预览的………………
  2. flexpaper有个配置页面,如下,需要安装swftools,里面有个pdf2swf,用来将pdf格式转换成swf
  3. php目录里估计就是调用pdf2swf转换格式的,各种复杂,看的头都大了。develop_cms里的实现方法很简单,用exec执行一段命令行就搞定(当然不同格式不同对待),但是这个系统是在linux上,命令不一样。于是在cmd相下试了一下,
    C:\Program Files\swftools\pdf2swf.exe -t C:\.pdf -s flashversion= -o C:\.swf

    好神奇,转换成功~将转换后的swf放到flexpaper里调用,果然可以显示·

  4. 用exec()函数执行以上命令,没有反应,先cd C:\Program Files\swftools\,还是不行,用exec('dir')查看当前目录发现cd没有效果,于是把pdf2swf.exe(是的,只有这一个文件)放到F盘网站目录里,done! php代码如下
    $dir = dirname(__FILE__) . "\\flexpaper";
    $source = str_replace('plus\\flexpaper','uploads\\inner\\', $dir) . $file_name;
    $convert = $dir . "\\docs\\{$file_name}.swf";
    $command = $dir . "\\exe\\pdf2swf.exe -t \"{$source}\" -s flashversion=9 -o \"{$convert}\"";
    $re;
    exec($command,$re,$re);
  5. 当然还有js的配置
    <link rel="stylesheet" type="text/css" href="/flexpaper/css/flexpaper.css" />
    <script type="text/javascript" src="/flexpaper/js/flexpaper.js"></script>
    <script type="text/javascript" src="/flexpaper/js/flexpaper_handlers.js"></script>
    <div id="documentViewer" class="flexpaper_viewer" style="width:100%;height:500px;"></div> <script type="text/javascript">
    $('#documentViewer').FlexPaperViewer(
    { config : {
    SWFFile : , //转换后的swf路径
    jsDirectory : '/flexpaper/js/',
    Scale : 0.6,
    ZoomTransition : 'easeOut',
    ZoomTime : 0.5,
    ZoomInterval : 0.2,
    FitPageOnLoad : true,
    FitWidthOnLoad : false,
    FullScreenAsMaxWindow : false,
    ProgressiveLoading : false,
    MinZoomSize : 0.2,
    MaxZoomSize : 5,
    SearchMatchAll : false,
    InitViewMode : 'Portrait',
    RenderingOrder : 'flash',
    StartAtPage : '', ViewModeToolsVisible : true,
    ZoomToolsVisible : true,
    NavToolsVisible : true,
    CursorToolsVisible : true,
    SearchToolsVisible : true,
    WMode : 'window',
    localeChain: 'en_US'
    }}
    );
    </script>
  6. office等需要另外的软件来转换,暂时还没搞

拖了两周终于写完了,继续加油~

windows 下 php 实现在线预览附件(pdf)的更多相关文章

  1. Office在线预览及PDF在线预览的实现方式史上最全大集合

    Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPD ...

  2. python爬虫处理在线预览的pdf文档

    引言 最近在爬一个网站,然后爬到详情页的时候发现,目标内容是用pdf在线预览的 比如如下网站: https://camelot-py.readthedocs.io/en/master/_static/ ...

  3. Office在线预览及PDF在线预览的实现方式大集合

    一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...

  4. Office在线预览及PDF在线预览的实现方式

    原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...

  5. java原装代码完成pdf在线预览和pdf打印及下载

    这是我在工作中,遇到这样需求,完成需求后,总结的成果,就当做是工作笔记,以免日后忘记,当然,能帮助到别人是最好的啦! 下面进入正题: 前提准备: 1. 项目中至少需要引入的jar包,注意版本: a)  ...

  6. 借助flexpaper实现word在线预览和打印

    为了实现word能够在web上尽量以原始的排版样式展现出来,选择基于activex控件的方式太过于依赖某种浏览器,并且存在可能需要花费金钱购买相应的控件产品:于是借助flexpaper这种flash展 ...

  7. .net mvc使用FlexPaper插件实现在线预览PDF,EXCEL,WORD的方法

    FlexPaper插件可以实现在浏览器中在线预览pdf,word,excel等. 在网上看到很多关于这个插件实现预览的技术,但是很难做到word和excel在线预览. pdf很好实现. 首先下载相关的 ...

  8. word文档在线预览解决方案

    花了一整天在网上翻关于 “word文档在线预览解决方案” 相关的资料,感觉实现难度比较大还是用PDF来解决好了.. 下面列一下比较好的参考资料吧 参考资料 前端实现在线预览pdf.word.xls.p ...

  9. MVC 附件在线预览

    原因:应客户需求,在系统中浏览附件内容,需要先下载到本地然后打开,对使用造成了不便,要求可以不需下载直接在浏览器中打开减少操作步骤. 领导给了3天时间,最后查找方法,写测试项目,往正式项目添加,测试, ...

随机推荐

  1. CodeBlocks提供了预编译的WxWidgets模块,并预置TDM

    Miscellaneous For Windows, we also provide the pre-compiled wxWidgets, version 2.8.12 used to compil ...

  2. 前端构建工具里babel-polyfill的使用问题

    看了很多react工程的package.json文件,里面都没有使用babel-polyfill,那对ES6的新API是如何做到被IE9这样的浏览器识别的呢,难道在webpack打包的时候通过别的方式 ...

  3. 链接hdf5库出现错误的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在链接hdf5库出现一些链接错误: error LNK2001: 无法解析的外部符号 _H5T_NATIVE_DOUB ...

  4. Android-apktool-就从此处开始反编译之旅

    前言 一直听说过反编译,感觉很高大上,一直没自己用过,今天因缘巧合之下,终于要开始逐渐认识,了解和学习一下反编译了~先给自己说下加油,鼓励一下下 apktool的下载和安装 apktool 下载地址: ...

  5. Modbus 通信协议详解

    一.Modbus 协议简介     Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了 ...

  6. Mac下cocos2dx3.1用Cocos IDE写的Lua binding篇01

    本人Lua新手,写着玩玩. 新建一个模版project. 一.改动main.lua require "Cocos2d" require "Cocos2dConstants ...

  7. Java transient关键字【转】

    转自:http://www.blogjava.net/fhtdy2004/archive/2009/06/20/286112.htmlVolatile修饰的成员变量在每次被线程访问时,都强迫从主内存中 ...

  8. DDD实战4 实现产品仓储

    a.要实现仓储,首先要定义仓储接口.在领域层定义仓储接口,IProductRepository.cs. public interface IProductRepository { void Creat ...

  9. Editplus配置Python的开发环境

    Python 有很多集成开发工具,商业的有komodo,Wingide,Boa 等,还有Python 自带的集成环境IDLE,Windows 下还有PythonWin 等.但是,这些工具有的是过于复杂 ...

  10. Viewport3D中的摄像机(二、摄像机动作)

    原文:Viewport3D中的摄像机(二.摄像机动作) 前文介绍了Viewport3D中的两种摄像机:OrthographicCamera和PerspectiveCamera.在3D场景里漫游,最主要 ...