最近需要实现一个类似百度文库的功能,在Google上淘了一段时间,发现FlashPaper还算能够不错的实现此需求。
首先讲下思路:
1>安装FlashPaper;
2>利用java代码将doc等文件转换为swf文件;
3>页面展示swf即可。
关于FlashPaper的使用及安装这里就不再赘述,网上的资料很多,可以自行Google。
下面是java下如何利用FlashPaper将doc等文件转化为swf文件-->
@param swfName 指定生成的swf文件名
@param documentName
需要转换为swf的文档名
String converter = "C:\\Program Files\\Macromedia\\FlashPaper
2\\FlashPrinter.exe -o C:\\struts\\swf\\"
+ swfName + ".swf
C:\\struts\\document\\" + documentName;
上述代码实际上就是调用FlashPrinter.exe实现转换功能。
用过FlashPaper的朋友可能会发现FlashPaper生成的swf文件左上角有Adobe的商标,非常不雅观,而且swf还可以下载,当然这就和百度文库的在线阅读相悖了。如何隐藏商标和取消打印按钮哪?更有甚,如何定制自己的FlashPaper swf文件哪?这才是本文着重要讲的地方。
首先展示下我自己定制的swf文件:
下面将讲述如何定制swf文件:
1:下载 http://download.csdn.net/source/3439538的DefaultViewer2.swf文件(PS:这里有点推荐自己资源的意思,请不要鄙视我,O(∩_∩)O哈哈~),在此swf文件的基础上实现自己的修改。
2:利用swf反编译工具,保存反编译过的.fla文件。
3:利用falsh制作工具(如Adobe Flash Professional CS5),打开此fla文件,找到第3个帧,添加下列代码即可实现定制(具体说明可以参加我的上一篇文章FlashPaper组件__API,隐藏即false,显示即true,请根据需要自行修改):
gMainView.showUIElement("PrevNext", true);
gMainView.showUIElement("Print", false);
gMainView.showUIElement("Find", true);
gMainView.showUIElement("Tool", false);
gMainView.showUIElement("Pop", false);
gMainView.showUIElement("Zoom", true);
gMainView.showUIElement("Page", true);
gMainView.showUIElement("Overflow", true);
4:将修改过的fla导出为swf文件,命名为DefaultViewer2.swf,找到FlashPaper的安装路径X:\Program Files\Macromedia\FlashPaper 2\Interface,覆盖下面的swf文件即可。
即完成swf的自定制。
页面展示部分:
如果直接在页面上展示swf文件,那么有点IT常识的人依旧可以在客户端通过迅雷等软件捕获swf文件,然后下载下来,这样依旧不能保护swf文件。在这里我的解决方法是利用一个空swf文件来加载你需要展示的swf文件,这样即使swf被捕获也只能捕获到这个空swf文件。而且,切记空swf需要加密的,否则被反编译后依旧很容易找到你的展示文件。PS:如果朋友们有更好的展示swf的解决办法欢迎留言探讨。
综上:大致过程就是这样,希望对朋友们有帮助,毕竟网上类似的资料少之又少。
如果有问题可以和我联系。O(∩_∩)O~ ~
利用FlashPaper实现类似百度文库功能,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/zhwl/p/3756340.html