您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现笔者最近在给客户开发文档管理系统时,客户要求上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载。笔者想到了百度文库和豆丁网,百度文库和豆丁网的在线预览都是利用flash来播放文档的,在网上查阅了大量资料,终于实现了该项功能,现将自己的设计和实现整理如下。一、如何将文档转成flash支持的swf文件实现在线播放?1.先用openOffice把ppt、word、excel、txt类型的文档转换成pdf2.用swftools将pdf转换成swf,然后利用FlexPaper插件实现在线播放预览。二、具体实现1.安装必备工具组件(1)安装openoffice,openoffice是开源免费的文字处理软件,它可以将office文档转成pdf文件(笔者安装到D:\ProgramFiles),openOffice下载地址(2)安装完openoffice后必须启动其server,以命令行方式启动openofficeserver。进入cmd命令行提示符D:\ProgramFiles\OpenOffice.org3\program\键入如下命令:soffice-headless-accept=socket,host=127.0.0.1,port=8100;urp;–nofirststartwizard进入windows任务管理器查看有个进程soffice.bin,说明openoffice启动成功!(3)安装swfTools(安装到D:\ProgramFiles)swftools作用是将pdf转换为swf文件以便flexpaper播放。下载地址:(4)下载flexpaper,下载地址:笔者下载的是FlexPaper_1.5.1,下载后将其解压备用。(5)下载OpenDocument文档转换器JODConverter,JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用OpenOffice来进行转换工作,它能进行以下的转换工作:a.MicrosoftOffice格式转换为OpenDucument,以及OpenDucument转换为MicrosoftOfficeb.OpenDucument转换为PDF,Word、Excel、PowerPoint转换为PDF,RTF转换为PDF等。下载地址:我们后面开发主要用它的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]viewplaincopy%@pagelanguage=javacontentType=text/html;charset=UTF-8pageEncoding=UTF-8%!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//ENhtmlheadmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8title文档在线预览系统/titlestylebody{margin-top:100px;background:#fff;font-family:Verdana,Tahoma;}a{color:#CE4614;}#msg-box{color:#CE4614;font-size:0.9em;text-align:center;}#msg-box.logo{border-bottom:5pxsolid#ECE5D9;margin-bottom:20px;padding-bottom:10px;}#msg-box.title{font-size:1.4em;font-weight:bold;margin:0030px0;}#msg-box.nav{margin-top:20px;}/style/headbodydivid=msg-boxformname=form1method=postenctype=multipart/form-dataaction=docUploadConvertAction.jspdivclass=title请上传要处理的文件,过程可能需要几分钟,请稍候片刻。/divpinputname=file1type=file/ppinputtype=submitname=Submitvalue=上传/p/form/div/body/html(4)创建文档转换类DocConverter.java[java]viewplaincopypackagecom.cectsims.util;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importcom.artofsolving.jodconverter.DocumentConverter;importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;/***docdocx格式转换*/publicclassDocConverter{privatestaticfinalintenvironment=1;//环境1:windows2:linuxprivateStringfileString;//(只涉及pdf2swf路径问题)privateStringoutputPath=;//输入路径,如果不设置就输出在默认的位置privateStringfileName;privateFilepdfFile;privateFileswfFile;privateFiledocFile;publicDocConverter(StringfileString){ini(fileString);}/***重新设置file**@paramfileString*/publicvoidsetFile(StringfileString){ini(fileString);}/***初始化**@paramfileString*/privatevoidini(StringfileString){this.fileString=fileString;fileName=fileString.substring(0,fileString.lastIndexOf(.));docFile=newFile(fileString);pdfFile=newFile(fileName+.pdf);swfFile=newFile(fileName+.swf);}/***转为PDF**@paramfile*/privatevoiddoc2pdf()throwsException{if(docFile.exists()){if(!pdfFile.exists()){OpenOfficeConnectionconnection=newSocketOpenOfficeConnection(8100);try{connection.connect();DocumentConverterconverter=newOpenOfficeDocumentConverter(connection);converter.convert(docFile,pdfFile);//closetheconnectionconnection.disconnect();System.out.println(****pdf转换成功,PDF输出:+pdfFile.getPath()+****);}catch(java.net.ConnectExceptione){e.printStackTrace();System.out.println(****swf转换器异常,openoffice服务未启动!****);throwe;}catch(com.artofsolving.jodconverter.openoffice.connection.OpenOfficeExceptione){e.printStackTrace();System.out.println(****swf转换器异常,读取转换文件失败****);throwe;}catch(Exceptione){e.printStackTrace();throwe;}}else{System.out.println(****已经转换为pdf,不需要再进行转化****);}}else{System.out.println(****swf转换器异常,需要转换的文档不存在,无法转换****);}}/***转换成swf*/@SuppressWarnings(unused)privatevoidpdf2swf()throwsException{Runtimer=Runtime.getRuntime();if(!swfFile.exists()){if(pdfFile.exists()){if(environment==1){//windows环境处理try{Processp=r.exec(D:/ProgramFiles/SWFTools/pdf2swf.exe+pdfFile.getPath()+-o+swfFile.getPath()+-T9);System.out.print(loadStream(p.getInputStream()));System.err.print(loadStream(p.getErrorStream()));System.out.print(lo
本文标题:Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
链接地址:https://www.777doc.com/doc-2878308 .html