Flex实现浏览器在线显示Word文档(不能实现Word在线编辑).
思想:生成Word->pdf->swf->flexpaper显示.oh ,my god!
用开源Itext.jar生成Word文档;
通过开源jacob.jar实现Word转换成PDF;
通过软件Pdf2Swf转换PDF成Swf文件;
通过开源FlexPaper.swf组件显示Swf文件.
(有点繁琐,但是我没找到解决的办法,貌似有个OpenOffice,但是收费...)
第一步:生成Word文档(用到的Jar包在文件附录)
Itext是个好东西,可以在word里面画表格
第二步:Word转换成PDF文件(用到的Jar包在文件附录)
如果安装的是Office2010,运行这个方法应该是没有问题的,如果是Office2007,那需要安装Office组件(SaveAsPDFandXPS2007).
注意:用Jacob包,需要在系统盘C:\Windows\System32添加一个jacob-1.17-M2-x64.dll文件(我的系统是64位的,32位系统就添加jacob-1.17-M2-x32.dll,文件见附录)
第三步:Pdf转换成Swf文件(用到的Jar包在文件附录)
需要安装工具swftools-0.9.2.exe,文件太大,请百度"swftools-0.9.2.exe"下载,转换成功的swf文件,是可以用播放器打开的.我做的时候,碰到一个很头疼的问题,转换的过程没报错,出异常,但是在页面显示(第四步)的时候就是不显示swf文件.
建议:以上步骤用我给的JAR包,DLL文件,还有flexpaper,可以避免版本问题,以及系统(我的是win7_64位系统)兼容问题等.
第四步:页面显示Swf文件(用到的开源.swf在文件附录)
word->pdf->swf,最后的Swf文件,存放的位置是Tomcat 7.0\webapps\项目名称\;否则就会不显示swf文件(反正我是碰到了这个问题).注:以上代码,我已经实现效果,可以删除一些多余的代码,直接修改测试.
思想:生成Word->pdf->swf->flexpaper显示.oh ,my god!

用开源Itext.jar生成Word文档;
通过开源jacob.jar实现Word转换成PDF;
通过软件Pdf2Swf转换PDF成Swf文件;
通过开源FlexPaper.swf组件显示Swf文件.
(有点繁琐,但是我没找到解决的办法,貌似有个OpenOffice,但是收费...)
第一步:生成Word文档(用到的Jar包在文件附录)
// 第一步:创建一个document对象。 Document document = new Document(PageSize.A4); // 第二步:将文件输出流指向一个文件。 RtfWriter2.getInstance(document, new FileOutputStream("C:\\mmmmm.doc")); // 第三步:打开文档。 document.open(); //字体 Font font = new Font(Font.NORMAL, 14,Font.BOLD, new Color(0, 0, 0)); // 第四步:在文档中增加一个段落。 Paragraph paragraph = new Paragraph("xxxxxxxxxxxxx", font); paragraph .setAlignment(Element.ALIGN_CENTER); document.add(paragraph ); // 第五步:关闭文档。 document.close();
Itext是个好东西,可以在word里面画表格

第二步:Word转换成PDF文件(用到的Jar包在文件附录)
package com.sddl.dao.dky.Utils; import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; public class Word2PdfUtil { int wdDoNotSaveChanges = 0;// 不保存待定的更改。 int wdFormatPDF = 17;// PDF 格式 public String word2PdfUtil(String fileName) { System.out.println(fileName); String toFilename = fileName + ".pdf"; System.out.println("启动Word"); ActiveXComponent app = null; try { app = new ActiveXComponent("Word.Application"); app.setProperty("Visible", false); Dispatch docs = app.getProperty("Documents").toDispatch(); System.out.println("打开文档" + fileName); Dispatch doc = Dispatch.call(docs,// "Open", // fileName,// FileName false,// ConfirmConversions true // ReadOnly ).toDispatch(); System.out.println("转换文档到PDF" + toFilename); File tofile = new File(toFilename); if (tofile.exists()) { tofile.delete(); } Dispatch.call(doc,// "SaveAs", // toFilename, // FileName wdFormatPDF); Dispatch.call(doc, "Close", false); } catch (Exception e) { System.out.println("========Error:文档转换失败:" + e.getMessage()); } finally { if (app != null) app.invoke("Quit", wdDoNotSaveChanges); } System.out.println(toFilename); return toFilename; } }
如果安装的是Office2010,运行这个方法应该是没有问题的,如果是Office2007,那需要安装Office组件(SaveAsPDFandXPS2007).
注意:用Jacob包,需要在系统盘C:\Windows\System32添加一个jacob-1.17-M2-x64.dll文件(我的系统是64位的,32位系统就添加jacob-1.17-M2-x32.dll,文件见附录)
第三步:Pdf转换成Swf文件(用到的Jar包在文件附录)
package com.sddl.dao; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; public class test { public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws IOException { // 目标路径不存在则建立目标路径 File dest = new File(destPath); if (!dest.exists()) dest.mkdirs(); // 源文件不存在则返回 File source = new File(sourcePath); if (!source.exists()) return 0; // 调用pdf2swf命令进行转换 String command = "\"D:\\Program Files (x86)\\SWFTools\\pdf2swf.exe\" -s open \"" + sourcePath + "\" -o \"" + fileName + "\" -s flashversion=9"; Process pro = Runtime.getRuntime().exec(command); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(pro.getInputStream())); System.out.println("MMMMMMMmmmmm"); while (bufferedReader.readLine() != null) ; try { pro.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(pro.toString()); return pro.exitValue(); } public static void main(String[] args) throws IOException { String sourcePath = "c:\\test.pdf"; String destPath = "c:\\"; String fileName = "c:\\test.swf"; test.convertPDF2SWF(sourcePath, destPath, fileName); } }
需要安装工具swftools-0.9.2.exe,文件太大,请百度"swftools-0.9.2.exe"下载,转换成功的swf文件,是可以用播放器打开的.我做的时候,碰到一个很头疼的问题,转换的过程没报错,出异常,但是在页面显示(第四步)的时候就是不显示swf文件.
建议:以上步骤用我给的JAR包,DLL文件,还有flexpaper,可以避免版本问题,以及系统(我的是win7_64位系统)兼容问题等.
第四步:页面显示Swf文件(用到的开源.swf在文件附录)
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:supportClasses="com.esri.ags.skins.supportClasses.*" width="100%" height="100%" xmlns:flexpaper="com.devaldi.controls.flexpaper.*"> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <s:RemoteObject id="pgbgDao" destination="pgbgDao" fault="pgbgDao_resultHandler(event)"> <s:method name="checkEstimate" result="checkEstimate_resultHandler(event)"/> <s:method name="checkFiles" result="checkFiles_resultHandler(event)"/> <s:method name="pgbgAction" result="pgbgAction_resultHandler(event)"/> </s:RemoteObject> </fx:Declarations> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.utils.StringUtil; [Bindable] public var swfName:String = "";//Swf名称 public var deptId:int = 200000656; public var deptName:String = "滨州供电公司"; public var evaluationId:int = 200000111; public var evaluationDate:String = "2011/5/23"; public var guideline_planId:int = 1; [Bindable] public var swfFlag:Boolean = false; /**click事件*/ protected function doActionForDoc_clickHandler(event:MouseEvent):void { // } protected function checkEstimate_resultHandler(event:ResultEvent):void { if(event.result as Boolean==false){ Alert.show("没有评估得分!","提示!"); }else{ /**检查swf文件是否存在*/ pgbgDao.checkFiles(deptId,evaluationId,guideline_planId); } } protected function checkFiles_resultHandler(event:ResultEvent):void { if((event.result as Boolean)==false){ pgbgDao.pgbgAction(deptId,deptName,evaluationId,evaluationDate,guideline_planId); }else{ //swfName = deptId+""+evaluationId+evaluationDate+".swf" } } /**开始生成评估报告*/ protected function pgbgAction_resultHandler(event:ResultEvent):void{ swfName = event.result as String; if(StringUtil.trim(swfName).length!=0){ swfFlag = true; } } protected function pgbgDao_resultHandler(event:FaultEvent):void { Alert.show("----"+event.message); } ]]> </fx:Script> <mx:VBox width="100%" height="100%"> <mx:Spacer width="30"/> <mx:Button label="doActionForDoc" id="doActionForDoc" cornerRadius="0" height="25" click="doActionForDoc_clickHandler(event)"/> <mx:HBox width="100%" height="100%" visible="{swfFlag}" includeInLayout="{swfFlag}"> <flexpaper:FlexPaperViewer Scale="1.5" id="flexPaper" width="100%" height="100%" SwfFile="{swfName}"> </flexpaper:FlexPaperViewer> </mx:HBox> </mx:VBox> </s:Application>
word->pdf->swf,最后的Swf文件,存放的位置是Tomcat 7.0\webapps\项目名称\;否则就会不显示swf文件(反正我是碰到了这个问题).注:以上代码,我已经实现效果,可以删除一些多余的代码,直接修改测试.
- 新建文件夹.rar (2.4 MB)
- 下载次数: 84
- FlexPaper.rar (588 KB)
- 下载次数: 66
发表评论
-
推荐一个个人觉得很不错的博客
2013-08-20 16:47 352http://www.cnblogs.com/xwdreame ... -
POI解析Excel,最高支持2010版本的Excel导入数据库
2013-08-20 16:38 4196本文代码直接COPY就可以测试修改 POI解析Excel,(E ... -
Flex+JAVA+Servlet 实现上传
2013-08-20 10:00 937Flex 页面代码 <?xml version=&q ... -
简单的----Flex从服务器上下载文件,不用后台代码支持
2013-08-19 17:02 1871<?xml version="1.0&qu ... -
Flex拉伸.PNG图片,边角不会变形
2013-08-08 15:39 819<mx:Canvas width="59% ... -
Flex4中修改toolTip的字体以及效果
2013-08-08 15:41 906在Flex4的可视组件中,可以通过toolTip指定鼠标移到对 ... -
Flex的Array和ArrayCollection
2013-08-08 15:40 7511.array作为控件使用 FLEX3 ... -
Flex4中添加自定义右键菜单
2013-08-08 15:41 769下面这个例子给Flex的右键添加一个自定义的菜单,并且在点击菜 ... -
Flex全屏的实现
2013-06-21 01:52 636编写如下事件,实现全屏: stage.displayState ... -
去掉Flex4生成的SWF加载时的进度条
2013-06-21 01:47 928方法一: <?xml version="1.0 ... -
Flex4中动态生成RadioButton,绑定数据源
2013-06-21 01:43 828代码如下: <?xml version="1. ... -
破解过的Flex amcharts,有例子
2013-06-21 01:33 1651附件已经上传: 解压后Documentation下有Index ... -
Flex4 自带组件添加的 柱状图、饼状图等图表
2013-06-21 01:21 15871.添加一个最简单的柱状图 <?xml version ...
相关推荐
FlexPaper是一款功能强大的在线文档预览组件,专为Flex开发者设计,用于在Web应用程序中实现PDF和Word文档的无缝预览。本组件分为两个版本,即SDK3.5和SDK4.0,以适应不同Flex开发环境的需求。 1. Flex平台介绍 ...
FlexPaper作为Flex库的一部分,能够轻松集成到Flex应用程序中,同时也支持其他格式的文档(如Word、PPT等)通过转换为PDF后进行在线浏览。 要使用FlexPaper,首先需要将PDF文档转换为SWF格式。这一过程可以通过开源...
标题“FlexPaper_2.2.4php在线浏览WORD文档”表明我们要讨论的是FlexPaper的2.2.4版本,它专门针对PHP环境,提供了在线预览Microsoft Word文档的能力。 在描述中提到的"FlexPaper_2.2.4php在线浏览WORD文档",意味...
【标题】"Net + Flex在线文档预览(支持Word PPT Xls Pdf等)"涉及到的技术领域主要包括.NET框架、Swftools、Flexpaper以及在线文档处理技术。这些技术共同构建了一个功能强大的Web应用程序,使得用户无需下载原始文件...
FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需...另外你也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。
FlexPaper去广告、开发示例、可直接导入flex builder 4开发环境中。 FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来...另外你也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。
Adobe Flex SDK中的FlexPaper或SwfTools可以实现PDF到SWF的转换。这些工具将PDF文件解析为一系列的图形和文本,然后生成SWF动画,以便在Web浏览器中流畅地查看。 在进行这些转换时,需要引入相关的jar包。"lib所...