博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在线预览-Java 使用 Print2Flash 实现Office文档在线阅读
阅读量:7061 次
发布时间:2019-06-28

本文共 3431 字,大约阅读时间需要 11 分钟。

       近期项目上遇到一个需求是用户上传的文档进行在线浏览,之前有过一篇使用 OpenOffice 将 word 转换成 html 页面进行展示的。现在介绍一个新的工具那就是 Print2Flash 。

      Print2Flash是一个虚拟打印机类的文档转换软件,因此只要是可打印的文档,都可以轻松转换为Flash文件,即SWF动画,特别是用于转换PDF、Word、Excel、PowerPoint等文档为SWF格式。

Print2Flash 与 Macromedia 的  是同类型软件,但是SWF转换功能要增强了很多,如转换PDF为SWF格式时,支持超链接的转换。

       Print2Flash 提供了4个可定制的SWF播放器主题,并且支持简体中文界面的播放器;转换过程中可设置使用的Flash Player版本,以获得最佳的兼容性,另外还可以添加水印、页面缩略图、文档权限(如禁止打印、禁止复制文本)等。

使用说明:

      由于一直没有搞定虚拟打印机的安装与卸载,所以暂不提供绿色版,直接使用安装版吧,当前版本Print2Flash 3.1,安装完会有一个Print2Flash 3 Printer的虚拟打印机。不过Print2Flash在转换PPT为SWF文件时,是不如   强大的,毕竟后几个是专为PowerPoint 转换Flash开发的,但是Print2Flash的转换速度极快。

       PDF 转换 SWF 还可以尝试下,如果想将SWF反过来转换成其他视频格式,则推荐使用  以及

 

Office文档(word,excel,ppt)在线预览查看,有很多种方式:

1、调用 WebOffice 组件,进行 word 预览,要求客户端安装word,仅适用IE, word2013, IE11会提示word停止响应;

2、使用 OpenOffice 将 Word 转为 html 文档;

3、使用 FlexPaper,感觉不是很美观,不过还是可以用;

4、使用 FlashPaper,这个是很早期的产品,样式不会丢失,不过只支持32位操作系统,也没更新了,不支持64位;

5、使用 Print2Flash,效果跟 FlashPaper 差不多,它的展示效果很棒,支持文字搜索,全屏阅读,关键是样式不会有任何丢失。

     下面主要介绍这个,先上个图。

 

详细操作步骤

1、下载 Print2Flash,我这是下载的是64位的,官方 有最新的版本,自己测试最好搜个破解版,因为官方版本不购买的情况下在生成的 swf 文件的底部会有版权说明,下好了直接安装,安装建议直接安装在根目录,便于后期目录调用,比如 C:\Print2Flash3;安装好了之后目录如下:

 

2、实现过程,官方的实现方式是需要注册服务,在程序里引用Interop.Print2Flash3.dll,并调用如下代码进行转换。

 

我这里使用的另外的方式,用java调用命令行工具执行转换命令生成swf,关键代码如下:

 

printFlashInstallPath = C\:\\Print2Flash3\\p2fServer.exe

这里是我的配置文件的内容。

上面的 converter 是命令行内容,传进来两个参数,第一个是 office 文件路径,第二个是生成 swf 文件的路径,中间加空格。

 

*************************************************************************************************************************************************

其实这个方法是万金油,支持所有可以用命令行的调用的应用。非常实用,官方的实现方式直接忽略。

如果发现调用命令行的时候只是弹出了CMD窗口,但是没有执行命令,检查一下两个文件的路径是不是复杂或过长,特别是生成 swf 的路径,修改下路径重新测试,项目中遇到过因路径问题无法转换的问题,这时使用一个临时目录在 C:\temp 下,生成后将文件copy到自己需要的目录就OK了。

如果遇到有丢失.dll 的情况不能调用的,需要自己去下载对应的 dll,这个是根据操作系统来的,看人品了,我在部署有些机器的碰到过。

*************************************************************************************************************************************************

好的,转换说完了。

 

展示篇

这个其实就是做一个 swf 的展示页面,在页面上添加相关的JS,达到展示效果,方法千千万,没有什么需要详细介绍。

#parse('/common/meta.jsp')#parse('/common/core.htm') 

页面上可能有些废代码,不过不影响使用。

页面里的 Script 里面的 url 需要替换成你生成的 SWF 文件,可以配上相对路径或者是输出流,我这里配置的是一个方法调用,返回输出流。

var url = "/worksmonitor/worksmonitor!showswf.action?workid=354&fileid=364&path="

下面是后端实现代码:

String workid = Struts2Utils.getRequest().getParameter("workid");        String fileid = Struts2Utils.getRequest().getParameter("fileid");                String filePath = Config.getConfig("swf_path") + File.separator + workid + "_" + fileid + ".swf";        if (null != filePath) {            HttpServletResponse response = Struts2Utils.getResponse();            File f = new File(filePath);            if (f.exists()) {                FileInputStream is = new FileInputStream(filePath);                int i = is.available(); // 得到文件大小                   byte data[] = new byte[i];                is.read(data); // 读数据                   is.close();                response.setContentType("image/*"); // 设置返回的文件类型                  OutputStream out = response.getOutputStream(); // 得到向客户端输出二进制数据的对象                  out.write(data); // 输出数据                  out.close();            }        }

 

如果有任何疑问,或者更简便的方法请留言,共商大技。

转载于:https://www.cnblogs.com/laramia/p/5091286.html

你可能感兴趣的文章
Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导...
查看>>
linux 配置静态IP
查看>>
linux Posix 信号量 二
查看>>
【leetcode】 Letter Combinations of a Phone Number(middle)
查看>>
poj 1061青蛙的约会
查看>>
Linux系统管理员的命令行工具箱目录
查看>>
去掉浏览器的代理服务器
查看>>
【转】 JSONObject使用方法
查看>>
(多图) FIR数字滤波器的FPGA实现研究
查看>>
Simple Factory vs. Factory Method vs. Abstract Factory【简单工厂,工厂方法以及抽象工厂的比较】...
查看>>
Sublime Text 3 史上最性感的编辑器
查看>>
阻塞与死锁(一)——基础知识
查看>>
聚合索引(clustered index) / 非聚合索引(nonclustered index)
查看>>
Linux进程间通信——信号集函数
查看>>
[LeetCode] Set Matrix Zeroes 矩阵赋零
查看>>
(转)Babel-现在开始使用 ES6
查看>>
架设证书服务器 及 让IIS启用HTTPS服务(转)
查看>>
华为离职副总裁徐家骏:年薪千万的工作感悟
查看>>
zedboard上移植OPENCV库
查看>>
eclipse重构详解(转)
查看>>