有才华的人,别忘记给滋润你的那块土壤施肥
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
28 随笔 :: 5 文章 :: 147 评论 :: 0 Trackbacks
<
2008年9月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(15)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java俱乐部(0/0)
随笔分类
Flex(7)
(rss)
It's not about me
(rss)
java基础(2)
(rss)
js&css(3)
(rss)
swing(13)
(rss)
数据库(2)
(rss)
转贴(3)
(rss)
随笔档案
2011年3月 (1)
2011年1月 (1)
2010年1月 (1)
2009年11月 (2)
2009年8月 (5)
2009年7月 (1)
2009年6月 (1)
2009年4月 (1)
2009年3月 (1)
2009年2月 (1)
2008年12月 (2)
2008年11月 (1)
2008年9月 (1)
2008年8月 (1)
2008年7月 (2)
2008年5月 (1)
2008年4月 (5)
2008年3月 (5)
文章分类
Swing
(rss)
web
(rss)
记得常去逛逛
desktop form
developerWorks 中国
infoq
javadesktop
javalobby
javase
sun中国
搜索
最新评论
1. re: 固定JTable中的前几列
评论内容较长,点击标题查看
--founder
2. re: 固定JTable中的前几列
行数很多时(如2W行,30列),paintComponent会导致内存溢出
--founder
3. re: mysql存储过程学习及java调用存储过程[未登录]
不错,学习了
--linkin
4. re: 【三八节】 女程序员的求友说明书 [未登录]
haha
--zxx
5. re: mysql存储过程学习及java调用存储过程[未登录]
是个入门的好例子,我顺利的跑通了,只有菜鸟才会骂
--小鱼
阅读排行榜
1. mysql存储过程学习及java调用存储过程(32235)
2. 用Flex调用SWF查看PDF(12522)
3. Flex事件讲解【转】(12407)
4. java实现系统托盘(5632)
5. DataGrid透明显示背景图片,及表头透明(4535)
评论排行榜
1. 用Flex调用SWF查看PDF(50)
2. mysql存储过程学习及java调用存储过程(30)
3. java实现系统托盘(15)
4. 【三八节】 女程序员的求友说明书 (7)
5. Flex Hack 02:DataGrid列尾,用于数据汇总(6)
用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一大堆,下面是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,跑的爽。测试效果如下:
posted on 2008-09-26 22:17
kissjava
阅读(12522)
评论(50)
编辑
收藏
所属分类:
Flex
评论
#
re: 用Flex调用SWF查看PDF
2008-09-27 12:23
比
真强。
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2008-09-27 23:16
枯宽
刚上网发现Macromedia有个把doc转成swf的,太强了
下面是个例子:
http://www.nihg.org/blogview.asp?logID=297
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2008-10-17 17:07
next_dream
请教一下,我想知道为什么我像你这样写以后不能控制swf停止和第几帧跳转呢?他总是在不停的循环播放我导入的fswf文件。能不能把你的这个抓图的flex代码给我一份,谢谢。小弟刚刚研究还请你多多指教。
next_dream@126.com 我的邮箱
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2008-10-17 17:24
next_dream
我的flex是这么写
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="
http://www.adobe.com/2006/mxml"
layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[
private function initApp():void{
var mc:MovieClip = swfload.content as MovieClip;
mc.gotoAndStop(1);
var myContextMenu : ContextMenu = new ContextMenu();
myContextMenu.hideBuiltInItems();
this.contextMenu = myContextMenu;
}
]]>
</mx:Script>
<mx:Panel >
<mx:SWFLoader id="swfload" source="@Embed('pdf/zhu.swf')" />
</mx:Panel>
</mx:WindowedApplication>
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2008-10-24 10:44
枯宽
@next_dream
首先你得确定你的这个swf是什么类型的,用debug的形式查看swfload.content是AVM1Movie 还是什么?
如果swfload.content 根本就拿不到为null
那么<mx:SWFLoader id="swfload" source="@Embed('pdf/zhu.swf')" />
=====》试试
<mx:SWFLoader id="swfload" source="@Embed('pdf/zhu.swf')"complete="callLater(callLater, [swfloadComplete,[event]]);" />
swfloadComplete为:
private function swfloadComplete(event:Event):void{
mc.gotoAndStop(1);//设置当前页为第一页
}
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2008-12-04 10:23
fly
你好,能不能发个完整的代码呢?谢谢, 发到我邮箱也行,luofeng113-113@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2008-12-09 10:25
jking
最近也在研究flex与java的整合,能否发个完整的代码到我的邮箱里,谢谢了
xieminxian@yeah.net
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2008-12-09 12:05
tulip
我最近在学习flex,能把代码也发给我一份吗?我的邮箱是linyujade@163.com.谢谢了。
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2008-12-21 14:47
waiting
大侠,我也正在学习flex,有幸拜读了你的文章,能不能也给我一份代码研究一下,谢谢! waitany@163.com.
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2009-02-12 16:31
Tony
我最近在学习flex,能把代码也发给我一份吗?我的邮箱是ibm-online@qq.com谢谢了
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-03-06 11:58
qsecofr
我最近在学习flex,能把代码也发给我一份吗?我的邮箱是qsecofr2000@163.com谢谢了
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2009-04-24 17:23
xiaogang
作者能把源码发给我吗
我的邮箱是vtaminn@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-05-05 09:50
CTK
最近在学习flex,看了你的文章,受益颇多,能否把代码也发给我一份学习学习?我的邮箱是luoctk@163.com谢谢了
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2009-05-19 17:30
Terry
作者能把源码发给我一份吗
我的邮箱是TarzanTerry@yahoo.com.hk
谢谢了
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-07-13 10:28
8772
如果后台是使用c#能有办法吗?
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-07-14 17:17
jamin
你好,能发个源码过来学习一下吗?
我的邮件是:jamin_381@hotmail.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-07-16 08:52
枯宽
@8772
肯定可以的~不过没试过
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-07-29 19:29
tsubasa
能把源码发给我一份吗 3Q
邮箱是tsubasa_Wing10588@hotmail.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-08-09 13:00
水火
能把源码发给我吗 谢谢
email: delphi-li@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-08-21 15:41
leieli
能把源码发给我吗?谢谢啦!!!
malei1986@139.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-08-25 17:00
崇拜楼主
我也需要啊
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2009-09-21 17:12
lib
可以也给我发一份代码吗?谢谢了libo_591@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-10-09 17:07
manager
在flex web应用中也能使用你说的这种方法吗?
能否提供完整源码,不胜感激!
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-10-22 11:13
p27135
转成swf一样也能下载呀
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-11-04 20:58
Lingchen Bu
谢谢你的文章。请问你这篇文章设计软件的版本是多少?
我当前的版本swftools0.90 Flex 3.2
我出现的问题是。flex不能加载生成的swf。编译错误。当我换另外一个通过flash生成的swf事能够正常加载。所以我怀疑pdf2swf生成的swf里面是不是缺少什么信息,flex无法加载。
再次谢谢!
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-11-05 09:03
kissjava
@Lingchen Bu
跟踪进去看看swfload.content 是不是AVM1Movie?是的话,那么你就要按文中所说的,指定flashversion=9了。
一般就没其他什么问题了。
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-11-05 09:43
Lingchen Bu
@kissjava
谢谢你的回复。
我建立flex porject的时候能够正常编译。显示正常。
但是在使用AIR project的时,编译就编译不过去。报的错误是
"Unable to create source PDFViewer__embed_mxml_pdf_rmsd_swf_308507626. PDFViewer.mxml"
当我换做其他由Adobe Flash生成的swf的时候编译能够正常通过。
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-11-07 15:49
xinxin
给小弟 发一份 谢谢了 xinxin2005100@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-12-16 15:51
bianjiang
谢谢楼主,我想学习一下,给我发一份 谢谢拉 bianjiang09@126.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2009-12-17 09:16
grassking
我也想要一份wxc0564335@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-02-23 13:20
bnmbj
楼主:给小弟个代码如何?
我正在摸索中......
邮箱:zhchongyao@126.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2010-02-25 22:34
xiaofei
您好,能否把源码发一份给我呢?谢谢.
feiling2007.love@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-03-01 17:28
JTee
给小弟 发一份 谢谢了 sianke731@126.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2010-03-01 22:08
小飞
您好,能否把源码给我一份呢?谢谢。
feiling2007.love@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2010-03-02 17:42
Alan
播放swf只能一帧一帧播放吗?那我的下拉框作用就不大了,可以实现像看文件那样,可以下拉到下一页吗?
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2010-03-03 23:42
小飞
您好,我在转换的过程中遇到一个问题。
就是转化后的swf文件 里面的文字都比较小(也就是pdf文件里面的文字都比较小,换句话说就是pdf文件的宽度都比较小),有没有办法设置转化后的swf文件里面的Pdf 文件的宽度大小呢?谢谢。
我的邮箱是feiling2007.love@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2010-03-04 17:43
kissjava
@小飞
swftoos的安装目录下面有个GUI程序,你运行它看看转换的效果看,如果它能正常的话,那就有途径的,这个工具对字体的确是有些麻烦,特别是亚洲字体,很久没关注这方面的啦。自个找吧,祝你好运~~~
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2010-03-14 00:33
小刘
你好,我也正在学习flex加载pdf。
我也想要一份 la5baby@yahoo.com.cn.
谢谢。
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-03-16 20:20
chanyujiajia
有空请发一份源代码给我,谢谢。
chanyujiajia@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-04-08 15:16
chenwenjun
大哥,小弟我跪求楼主的Flex调用SWF查看PDF的源码,有空请发一份源代码给我,谢谢。
cwj114473275@163.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-04-24 22:21
machine
可以给我发一份这个源代码吗?谢谢。steve2008.ma@gmail.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-11-24 15:06
jaon
你是如何将所有帧一起显示出来的?
我的做的只能一帧一帧的去翻页不能同时显示出来,拉滚动条查看
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2010-12-07 23:08
lihw
学习下,能给我发份吗?lihaiwu2005@gmail.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2011-04-20 12:30
kingsmalltwo
正在学习 前辈能把源码发我一份吗?
kingsmalltwo@gmail.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2011-06-20 16:49
guo
我现在也正在研究flex显示pdf文档,大侠能否给我一份你的完整代码,谢谢!
我的邮箱是guozhiguo86@126.com ; abcxyz86@126.com
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2011-10-25 20:01
HD Lee
高手可否给一份源代码,我正在写一个类似的view,问题很多。。。。
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2011-12-15 10:57
小弟
求大神给小弟发个完整版啊 654797076@qq.com 好人一生平安啊
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2011-12-15 11:02
小弟
如果要读的文件是在服务器中,而管理人员可以上传文件,那么如何自动将上传的文件转换成swf格式,用户端在浏览pdf文件时,并没有swf文件,是要从服务器中读取的,这部分如何进行绑定啊?逻辑上有点不清楚,求指教
回复
更多评论
#
re: 用Flex调用SWF查看PDF[未登录]
2011-12-15 15:25
kissjava
@小弟
上传文件时就放进线程池,用SWFTOOLS做文件转换的。调用swf的时候,若没找到,就先转换,再调用。
代码没了。。。上一家公司的。
回复
更多评论
#
re: 用Flex调用SWF查看PDF
2012-06-29 10:16
CDD
有才华的人,别忘记给滋润你的那块土壤施肥
膜拜LZ这句话
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Flex Hack 02:DataGrid列尾,用于数据汇总
Flex Hack 01:labelFunction的使用
actionscript之滤镜
DataGrid透明显示背景图片,及表头透明
【转】Flex中元数据标签
用Flex调用SWF查看PDF
Flex事件讲解【转】
Powered by:
BlogJava
Copyright © kissjava