利用FlashPaper实现类似百度文库功能

时间:2021-04-08 04:30:04

最近需要实现一个类似百度文库的功能,在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文件:

利用FlashPaper实现类似百度文库功能

下面将讲述如何定制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~ ~