Flash在线文档开发思路
一、需求与目的: ?????1. 基本界面和功能展示:? ???????? ?????2. 主要功能: ????????? 通过flex/flash程序使用户可以通过浏览器在线阅读相关的文件或文档,查看相关的资料或信息, ???????? 或者打印/下载此pdf文件以及其他的操作等。 ? ?二、可行性分析和技术实现: ???????1.???? 展示的方式: ???????????? ?文档以flash的形式在网页上展示要解决两个问题:以什么格式展示flash和文档如何转化为符合格式的flash。 ???????????? ?(1).展示flash有两种方式 ?????????????????? a.使用SWFTools的工具直接将pdf转化成一个整体的flash展示,但这种方式的flash较大,且不容易控制,故用得较少。 ?????????????????? b.使用一个开源的flexpaper播放器,它可以播放一帧一页的flash; ????????????????????? 在flexpaper的基础上,如果遇到大文档则会出现速度和性能的问题,这个时候需要像百度文库、豆丁一样修改flexpaper, ????????????????????? 让它支持一次仅读取指定页数的flash;如果文档安全级别较高,不允许下载查看,则需要给flexpaper加上加密解密算法; ????????????????????? 如果需要登录用户才能查看,则要让flexpaper有登录UI。 ????????????? ?(2).文档如何转化为符合格式的flash ???????????????????? Flex/flash是不能直接读取及加载pdf和进行相应的操作的, ???????????????????? 目前业界的主流应用解决方案(如百度文库和豆丁网)都是通过把相关的pdf文件转化成swf文件, ???????????????????? 在通过flex/flash程序的加载和控制来展示出来。 ?????????????????????转化文档为flash的思路有一条,但有多种实现方式。一般文档需要先转化为pdf,再从pdf转化为flash。 2.转换的具体的操作实现 ????????? 针对上述的需求分析,实现此功能的主要思路就是要把一般文档先转化为pdf,再从pdf转化为flash。 ???????? (1). 一般文档转化为pdf ?????????????? 一般文档转化为pdf的方法有很多,例如使用虚拟打印机,使用MicrosoftOffice的API,使用OpenOffice转化, ?????????????? adobe 公司的acrobat等,不过转化的过程中,可能由于文档有误、损坏、加密等原因造成转化失败。 ???????? (2). pdf转化为flash ????????????? ?pdf转化为flash可以直接使用swfTools的pdf2swf即可实现多种方式的转化(命令行或java/php语言动态执行等)。 ?????????????? 安装上此工具后通过代码(如java/php语言等)或者直接通过命令行操作来实现是现在比较常用的一种方式。 ?????????????? swfTools是一个开源(免费)的工具,可以把pdf或png图像转换为swf格式的文件。 ?????????????? 首先要先安装好swftools(本文档以安装在C:Program FilesSWFTools来说明)。 ?????????????? 只有安装好了swftools后才能使用相关的命令行来进行操作。 ?????????????? 例1:swfTools常用的命令命令(在cmd命令行把指定目录C:Program FilesSWFTools) ??????????????????????? pdf2swf -o aa.swf -s flashversion=9 aa.pdf ?????????????????????? ?pdf2swf pdf2swf aa.pdf -o aa.swf -T 9 ??????????????????????? pdf2swf pdf2swf aa.pdf -o aa.swf ????????????????例2:通过java程序将指定的pdf文件转换为相应的swf文件: ???????????????????????? 参见MySwfTools.java文件。 ??????3. flex/flash加载和播放文档转换而来的swf文件 ?????????? 使用第三方插件flexpaper来加载和操作由pdf转换而来的swf文件: ?????????? FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与swftools一起使用, ?????????? 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。 ????????? ?下载并获取到相应的swc文件,放到我们的flex/flash工程中直接使用。 ??????????? 例3:参见flexPdf.mxml文件。
???????? 例2: MySwfTools.java ????????????? /** ?????????????? * @title基于swfTools工具和java语言实现pdf文件转换为swf文件 ?????????????? * @author xuechong ?????????????? * @version 0.1 ?????????????? * @date 2011.06.01 ?????????????? * @environment java6.0 swfTools0.9.1 ?????????????? * @from?http://www.iteye.com/topic/538361 ?????????????? */
?????????????? import java.io.File; ?????????????? import java.io.InputStreamReader; ?????????????? import java.io.IOException; ?????????????? public class MySwfTools{ ?????????????????? public static void main(String[] args)throws IOException{ ???????????????????????? String pdfUrl = "D:/dataTest/aa.pdf"; ???????????????????????? String destPath = "d:"; ???????????????????????? String fileName = "hello.swf"; ???????????????????????? convertHandler(pdfUrl,destPath,fileName); ????????????????? } ????? ?????????????????? public static int convertHandler(String pdfUrl,String destPath,String fileName)throws IOException{ ?????????????????????? File dest = new File(destPath); ?????????????????????? if(!dest.exists()){ ?????????????????????????? dest.mkdirs();??? //目标路径不存在则建立目标路径 ?????????????????????? } ?????????????????????? File source = new File(pdfUrl); ??????????????????????if(!source.exists()){??? //源文件不存在则返回0 ????????????????????????????? return 0; ????????????????????????? } ??????????????????????????String swfToolsUrl = "C:/Program Files/SWFTools/pdf2swf.exe";?? //swfTools的当前安装目录(绝对路径) ??????????????????????????String cmds = ????????????????????????? " -o /" + destPath + "/" + fileName + "/ -s languagedir=D:/xpdf -chinese-simplified -s flashversion=9 /" + pdfUrl + "/"; ????????????????????????? String command = swfToolsUrl + cmds; ????????????????????????? Process pro = Runtime.getRuntime().exec(command); ?????????????????????????????????? BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream())); ????????????????????????? while(br.readLine() != null); ????????????????????????? try{ ???????????????????????????????? pro.waitFor(); ????????????????????????? }catch(InterruptedException e){ ???????????????????????????????? e.printStackTrace(); ????????????????????????? return pro.exitValue(); ??????????????????? } ?????????? } ????????? 例3: flexPdf.mxml ???????????????? <?xml version="1.0" encoding="utf-8"?> ???????????????? <s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009" ?????????????????????????????????????????????? ?xmlns:s="library://ns.adobe.com/flex/spark" ????????????????????????????????????????????????xmlns:mx="library://ns.adobe.com/flex/mx" ??????????????????????????????????????????????? xmlns:flexpaper="com.devaldi.controls.flexpaper.*" ??????????????????????????????????????????????? minWidth="955" minHeight="600"> ???????????????????????????? <flexpaper:FlexPaperViewer id="swfload" width="800" height="500" ?????????????????????????????????????????????????????????????????????????? SwfFile="aa.swf"/> ?????????????????? </s:Application> ???? 三.相关工具和插件介绍: ???1. swfTools ?????? swfTools是一种实用工具与Adobe Flash文件(swf文件)工作的集合。 ?????? 该工具集包括用于阅读的swf文件,结合他们,和他们建立从其他内容(如图像,声音文件,视频或源代码)程序。 ?????? swfTools是在GPL下发布的。及永久免费。 ????? ?swfTools是一组用来处理Flash的swf文件的工具包,包括: ?????? (1).合并工具swfcombine ?????? (2).抽取工具swfextract ?????? (3). pdf/jpeg/png/avi/ttf/wav到swf的转换工具: ???????????? pdf2swf,jpeg2swf,png2swf,avi2swf,font2swf,and wav2swf? ????????(4).文本解析工具swfstrings ??????? (5). swf解析器swfdump ??????? (6). SWF读写库rfxswflib 2.flexpaper ?????? ?flexpaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与pdf2swf一起使用,使在flex中显示pdf成为可能, ??????? 而这个过程并无需pdf软件环境的支持。它可以被当做Flex的库来使用。 ??????? 另外你也可以通过将一些例如word/ppt/excel等文档转成pdf,然后实现在线浏览 ???????? Flexpaper目前有三个版本的: GPL License (free)/ Commercial License/ Unlimited license 四.相关网站链接和参考资料 ????? swfTools官网:??http://www.swftools.org/ ????? swfTools下载:??http://www.swftools.org/download.html ????? 介绍swfTools:??http://www.iteye.com/topic/538361 ??????????????????????????????http://bbs.9ria.com/thread-40043-1-1.html ??????????????????????????????http://baike.baidu.com/view/5638152.htm ???????flexpaper官网:??http://flexpaper.devaldi.com ?????? flexpaper下载:??http://flexpaper.devaldi.com/download/ ????? 介绍flexPaper:??http://bbs.9ria.com/thread-40043-1-1.html ????????????????????????????? ?http://blog.minidx.com/2010/02/18/3106.html ????????????????????????????? ?http://www.oschina.net/p/flexpaper ????????????????????????????? ?http://www.cnblogs.com/sobne/articles/1822479.html ??? flexPaper的中文支持:??http://bbs.9ria.com/thread-66129-1-1.html ??? flexPaper组件用Flex4兼容性问题:??http://bbs.9ria.com/thread-81318-1-1.html ??? flex阅读器延迟加载分页加载:?http://bbs.9ria.com/viewthread.php?tid=74836 ??? flexPaper显示word等文档:??http://www.oschina.net/question/59911_20089 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |