用Flex调用SWF查看PDF
有时候一些资料只能给别人看,如可打印的文档如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一大
相关文档:
本帖最后由 flashyiyi 于 2009-2-22 23:18 编辑
最终我决定还是用“隐藏”这个不是很合适的词。mx_internal是一个自定义命名空间,至于“命名空间”到底是什么就不在这里说了。总之,当我们在代码头部写上:
use namespace mx_internal
(如果是.AS文件,需要手动import mx.core.mx_internal,注 ......
这个类提供的功能有:
从浏览器中获取完整的URL
主机名
当前所使用的协议
端口
主域名后面的路径
参数值
原文地址:http://www.flexpasta.com/index.php/2008/03/15/getting-url-parameters-host-name-port-in-flex-actionscript/
package com.flexpasta.utils
{
import flash.external.ExternalInterface;
im ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridListData;
imp ......
在flex的开发当中,不可避免的要出错,但是flash的错误弹出真是太吓人了,一点都不友好。我们要怎么来屏蔽它,弹出我们想要的对话框呢?过程中有什么要注意的呢?
在java里面我们处理异常的方法就是try{}catch(){}finally{}。我尝试过这样的方法。
FileReference f=new FileReference();
会出错,但是用tr ......
首先建立插件文件存放目录:
D:\eclipse_plugins\flex3\eclipse\features
D:\eclipse_plugins\flex3\eclipse\plugins
以上路径根据本机实际情况确定
然后把Flex Builder3 中的文件拷贝到对应目录下:
D:\IDE\Flex Builder 3\features\com.adobe * -> D:\eclipse_plugins\flex3\eclipse\features
D:\IDE\Flex ......