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 Files\SWFTools来说明)。

               只有安装好了swftools后才能使用相关的命令行来进行操作。

               例1:swfTools常用的命令命令(在cmd命令行把指定目录C:\Program Files\SWFTools)

                        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文件。


    4. 详细代码

         例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.BufferedReader;

               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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值