`
nlslzf
  • 浏览: 1049008 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Flex调用SWF查看PDF

    博客分类:
  • flex
阅读更多
http://www.blogjava.net/kissjava/archive/2008/09/26/231383.html
有时候一些资料只能给别人看,如可打印的文档如DOC,PDF,但不能让其他无权限的人另存或者打印,特别是web版的文件管理类的系统,总会考虑到这个问题。当用IE直接打开pdf的时候,尽管可以疲敝IE的另存为,但是点击PDF文件的时候,再按F8的时候,PDF的阅读器如(adobereader)会显示ToolsBar,所以直接打开pdf貌似行不同(目前所知道的)。当时一听到这个需求立马就想用swing(因为我只懂一些swing),把pdf转换成图片,然后每一页对应一张图片显示,但是马上给否定了,第一转换出来的图片不清晰(我目前所了解的)而且这图片放大缩小的效果也不好看,第二不想花时间和别人去争论swing慢的问题。

         刚巧进一家新公司没什么任务,在看flex,就想能不能把PDF转换成swf呢?好,马上google,结果还真找到有这么好的东东SWFTOOLS,这款东西是老外用c写的,还是开源的,够强!它有很多功能包括PDF2SWF,SWFCombine,SWFStrings,SWFDump,JPEG2SWF,PNG2SWF,GIF2SWF,WAV2SWF,AVI2SWF,Font2SWF。在这里我们只需要PDF2SWF,关于PDF2SWF的命令大家可以查看他的帮助documentation,E文不好的可以看《如何將PDF轉換成SWF》,这个东西是把pdf的每一页转换成swf的每一帧,这样的话又可以很好的解决翻页功能。安装好就可以用来测试了。然后用cmd进入到安装的目录下,随便找一份pdf进行测试,如下:

图片中“-o”的那个参数就是指点生成的swf的名称和路径,这样就能转成swf,而且非常清晰和pdf无异,简单吧~

         整合在java里面也简单,只要一个用Runtime.getRuntime().exec()就行,如下:
package kissjava.pdf;
/**
*@author kissjava;
*/

import java.io.IOException;

public class PDFToSWF {
    public static void main(String[] args) throws IOException{
        Process process = Runtime.getRuntime().exec("d:\\Program Files\\SWFTools\\pdf2swf.exe -o \"e:\\test.swf\"  -t \"e:\\flexBinding.pdf\""); 
        System.out.println("sucess!!!");
    }
}


这样等生成了swf,就发个通知告诉客户端可以调用这个swf。
但是当写好mxml后却bug一大堆,下面是flex程序初始化的一个函数:
private function init():void{
                var mc:MovieClip = swfload.content as MovieClip;
                mc.gotoAndStop(1);
                var myContextMenu : ContextMenu = new ContextMenu();
                  myContextMenu.hideBuiltInItems();
                  this.contextMenu = myContextMenu;                
                //swfload.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
                //swfload.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
            }


却发现mc为null,怎么可能呢?用别人用flash写的swf,明明是可以通讯的,debug进去,发现swfload.content 是AVM1Movie,这东西是个老东西是as2的,他和MovieClip是不来电的,而且用反编译的查看这个生成的swf,它显示的版本居然是flash6,天啊,这么老的版本,要想和flash9通讯很困难,找了很多资料,都说很复杂。但是这款最新下载的工具更新的时间明明是2008-09-22,没道理不支持flash9啊,可是它的帮助文档却没设置flash版本这方面的参数说明,苦闷了很久,抱着试试的态度去看了下他的源码(我很怕C哈),结果里面果然有蹊跷,居然有指定flash版本的参数,它为什么不在文档里说明呢??

把上面生成swf语句改成如下:
Process process = Runtime.getRuntime().exec("f:\\Program Files\\SWFTools\\pdf2swf.exe -o \"e:\\test.swf\" -s flashversion=9 \"e:\\flexBinding.pdf\""); 


再运行flex,ok,跑的爽。测试效果如下:

  • 大小: 63.5 KB
  • 大小: 10.9 KB
分享到:
评论
3 楼 EyejavaLi 2011-03-20  
不通过工具能直接转文件成swf吗?
2 楼 nlslzf 2009-08-18  
1.我的是转载的
2.我自己照着做,没有乱码的问题
3.建议您看看是否有版本的问题,转换的时候,有个版本的选项,您细查一下
1 楼 Willam2004 2009-08-18  
楼主你好,我根据你的提示从网上下载了swftools-2009-08-12-1514,但是打开我的pdf文件,显示的却是乱码。因为我的pdf字体采用的是UniGB-UCS2-H CMAP,是中文字体编码。
我看见你的PDF转成Swf都可以显示中文,不知道你是如何解决的?

相关推荐

    Flex入门介绍(PDF)

    当Flex应用程序被编译时,MXML标记被转换为ActionScript类,然后进一步编译为SWF字节码,存储在SWF文件中。ActionScript的强大在于它可以处理事件驱动编程、数据处理和复杂的业务逻辑,是Flex应用动态行为的核心。 ...

    Flex从入门到精通(pdf已分割)

    Flex是Adobe公司推出的一种用于...通过“Flex从入门到精通”的系列PDF,你可以逐章学习,每份PDF对应一个主题,方便你根据需要快速查阅和学习。这将帮助你逐步成长为一位熟练的Flex开发者,创作出令人赞叹的RIA应用。

    flex 3 PDF 组件事例

    本案例主要探讨的是如何在 Flex 3 中使用 PDF 组件来展示 PDF 文档。 PDF(Portable Document Format)是一种广泛使用的文档格式,它能够保留文档的原始布局和格式,使得用户在不同设备和操作系统上都能一致地查看...

    Flex中文帮助 PDF

    通过阅读《Flex中文帮助No1-2章.pdf》、《Flex中文帮助No3章.pdf》、《Flex中文帮助No4章A.pdf》和《Flex中文帮助No4章B.pdf》这四个章节,读者将逐步掌握Flex的基本概念和实践技巧,为后续的Flex项目开发打下坚实的...

    pdf装swf java源码

    4. **Java源码集成**:在Java项目中,你可以通过调用`Runtime.getRuntime().exec()`方法执行`pdf2swf.exe`,并传递所需的参数。这样可以将PDF转换功能集成到你的应用中。 5. **错误处理和日志记录**:在执行转换时...

    flex入门pdf格式

    10. **学习资源**:由于"flex入门pdf"是针对初学者的,它可能会涵盖创建第一个Flex项目、组件的使用、事件处理、数据绑定等基本概念,并提供实践示例帮助理解和应用。 总的来说,Flex是构建富互联网应用的强大工具...

    Flex之FlexPaper的使用

    它基于Adobe Flex技术,允许开发者将PDF或图像文件转换为SWF格式,以便在Web浏览器中流畅地浏览。在本文中,我们将深入探讨FlexPaper的使用,包括其基本概念、安装、配置以及如何在页面上集成和展示SWF文件。 1. **...

    flex4.0实现翻书效果,并动态 使用FlexPaper显示PDF文档

    FlexPaper是一个开源的PDF和SWF查看器,它可以将PDF文档转换为交互式的翻书效果。在Flex项目中集成FlexPaper,我们可以提供用户一个直观且吸引人的阅读体验。`FlexPaper_SDK4.swc`是FlexPaper的库文件,它是编译Flex...

    flex帮助文档--(flex学习文档)

    编译后的Flex应用通常以SWF格式运行在浏览器的Flash Player插件上,也可以打包为桌面应用或移动应用(使用Adobe AIR)。 9. **Flex的版本迭代** 随着技术的发展,Flex经历了多个版本的更新,包括Flex 3、4、4.5等...

    flexpaperviewer网页PDF文档预览显示效果代码

    通过查看和分析这个文件,你可以学习如何设置HTML结构、引入必要的JavaScript库以及调用API来加载和控制PDF文档。 3. **nihao.swf**: 另一个SWF文件,可能是特定功能或组件的Flash文件,可能与预览功能有关。SWF是...

    BlazeDS结合pdf导出的例子

    BlazeDS是一款由Adobe开发的开源服务器端技术,主要用于提供实时数据推送服务,它与Flex客户端(基于ActionScript的富互联网应用)配合使用,能够实现高效的数据交换和远程调用。在本例中,我们将讨论如何利用...

    flex中文帮助文档

    Flex应用程序通常使用MXML和ActionScript编写,然后由Flex编译器转换为SWF格式,可以在Adobe Flash Player或Adobe AIR环境中运行。 在"flex中文帮助文档"中,你可以找到关于Flex开发的详尽信息。这个PDF文档可能...

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立).pdf

    Flex应用通常编译成SWF文件,然后可以运行在Adobe Flash Player或Adobe AIR上。Flex主要使用MXML(一种XML标记语言)和ActionScript(基于ECMAScript的编程语言)来编写。MXML用于布局和界面构建,而ActionScript则...

    Adobe Flex中文教程

    - Adobe Flex中文教程《Adobe Flex Quick Starts(中文).pdf》可能是教程的起点,其中可能涵盖了Flex的基础概念、组件使用、数据处理和项目构建等内容。 - Adobe官方文档、在线论坛和社区是获取更多学习资源和解答...

    itextpdf的相关jar包

    在本篇文章中,我们将深入探讨iTextPDF以及如何使用它来将SWF(ShockWave Flash)文件嵌入到PDF中。 iTextPDF是iText项目的一部分,由iText Software Corp开发,它提供了丰富的API,使得开发人员可以轻松地进行PDF...

    txt、word、ppt转换swf

    2. **生成Flash内容**:使用C#编写程序,调用Adobe提供的Flash开发工具,如Flex或FlashDevelop,或者使用第三方库如SWFTools,它们提供了将文本和图像转换为SWF的接口。例如,SWFTools中的`pdf2swf`和`ppt2swf`工具...

Global site tag (gtag.js) - Google Analytics