Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
笔者最近在给客户开发文档管理系统时,客户要求上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载。笔者想到了 百度文库和豆丁网,百度文库和豆丁网的在线预览都是利用flash来播放文档的,在网上查阅了大量资料,终于实现了该项功能,现将自己的设计和实现整理如 下。
一、如何将文档转成flash支持的swf文件实现在线播放?
1.先用openOffice把ppt、word、excel、txt类型的文档转换成pdf
2.用swftools将pdf转换成swf,然后利用FlexPaper插件实现在线播放预览。
二、具体实现
1.安装必备工具组件
(1)安装openoffice,openoffice是开源免费的文字处理软件,它可以将office文档转成pdf文件(笔者安装到D:\Program Files),openOffice下载地址/download/index.html
(2)安装完openoffice后必须启动其server,以命令行方式启动openoffice server。进入cmd命令行提示符D:\Program 3\program\
键入如下命令:
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" –nofirststartwizard

进入windows任务管理器查看有个进程soffice.bin,说明openoffice启动成功!

(3)安装swfTools(安装到 D:\Program Files)swftools作用是将pdf转换为swf文件以便flexpaper播放。下载地址:/download.html
(4)下载flexpaper,下载地址:flexpaper.devaldi/download/
笔者下载的是FlexPaper_1.5.1,下载后将其解压备用。
(5)下载OpenDocument文档转换器 JODConverter,JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用OpenOffice来进行转换工作,它能进行以下的转换工作:
a.Microsoft Office格式转换为OpenDucument,以及OpenDucument转换为Microsoft Office
b.OpenDucument转换为PDF,Word、Excel、PowerPoint转换为PDF,RTF转换为PDF等。
下载地址:sourceforge/projects/jodconverter/files/
我们后面开发主要用它的jodconverter-2.2.2.jar包

2.软件开发过程
(1)启动Eclipse,新建web项目名称为ctcesims
(2)将上面第4步解压的flexpaper文件中的js文件夹(包含了 flexpaper_flash_debug.js,flexpaper_flash.js,jquery.js,这三个js文件主要是预览swf文件的 插件)拷贝至网站根目录;将FlexPaperViewer.swf拷贝至网站根目录下(该文件主要是用在网页中播放swf文件的播放器),目录结构如下 图

(3)创建documentUpload.jsp文件
[html]view plaincopy
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 
2     pageEncoding="UTF-8"%> 
3 accesstoken expired<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> 
4 <html> 
5 <head> 
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
7 <title>文档在线预览系统</title> 
8 <style> 
9     body {margin-top:100px;background:#fff;font-family: Verdana, Tahoma;} 
10     a {color:#CE4614;} 
11     #msg-box {color: #CE4614; font-size:0.9em;text-align:center;} 
12     #msg-box .logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;} 
mysql怎么卸载干净
13     #msg-box .title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;} 
网站建设推荐
14     #msg-box .nav {margin-top:20px;} 
15 </style> 
16  
17 </head> 
18 <body> 
19 <div id="msg-box"> 
20     <form name="form1"  method="post" enctype="multipart/form-data" action="docUploadConvertAction.jsp"> 
21         <div class="title"> 
22             请上传要处理的文件,过程可能需要几分钟,请稍候片刻。 
23         </div> 
24         <p> 
25             <input name="file1" type="file"> 
26         </p> 
27         <p> 
28             <input type="submit" name="Submit" value="上传"> 
29         </p> 
30     </form > 
31 </div> 
32 </body> 
33 </html> 
(4)创建文档转换类DocConverter.java
[java]view plaincopy
34 sims.util; 
35 import java.io.BufferedInputStream; 
36 import java.io.File; 
37 import java.io.IOException; 
38 import java.io.InputStream; 
39  
40 import com.artofsolving.jodconverter.DocumentConverter; 
41 import com.artofsolving.tion.OpenOfficeConnection; 
42 import com.artofsolving.tion.SocketOpenOfficeConnection; 
43 import com.artofsolving.verter.OpenOfficeDocumentConverter; 
44  
jquery下载文件请求45 /**
46 * doc docx格式转换
47 */ 
48 public class DocConverter { 
49     private static final int environment = 1;// 环境 1:windows 2:linux 
50     private String fileString;// (只涉及pdf2swf路径问题) 
51     private String outputPath = "";// 输入路径 ,如果不设置就输出在默认的位置 
52     private String fileName; 
53     private File pdfFile; 
54     private File swfFile; 
55     private File docFile; 
56      
57     public DocConverter(String fileString) { 
58         ini(fileString); 
59     } 
60  
61     /**
62     * 重新设置file
63     * 
64     * @param fileString
65     */ 
66     public void setFile(String fileString) { 
67         ini(fileString); 
68     } 
69  
70     /**
71     * 初始化
72     * 
73     * @param fileString
74     */ 
75     private void ini(String fileString) { 
76         this.fileString = fileString; 
77 小程序单选按钮样式        fileName = fileString.substring(0, fileString.lastIndexOf(".")); 
78         docFile = new File(fileString); 
linux route命令详解79         pdfFile = new File(fileName + ".pdf"); 
80         swfFile = new File(fileName + ".swf"); 
81     } 
82      
83     /**
84     * 转为PDF
85     * 
86     * @param file
87     */ 
88     private void doc2pdf() throws Exception { 
89         if (ists()) { 
90             if (!ists()) { 
91                 OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); 
92                 try { 
93                     t(); 
94                     DocumentConverter converter = new OpenOfficeDocumentConverter(connection); 
95                     vert(docFile, pdfFile); 
96                     // close the connection 
97                     connection.disconnect(); 
98                     System.out.println("****pdf转换成功,PDF输出:" + Path()+ "****"); 
99                 } catch (java.ConnectException e) { 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。