flexpaper是个不错的将pdf,word之类的文件转化为swf的开源工具,关于这个其实网上说了很多了,它作出来的效果有点象百度文库的效果了,但最近发现一个问题,就是在 SwfFile : escape("xxxx.swf"); 这里,可能会形成很容易经过绝对路径下载到swf的地址,因而能够下载到swf,那么有什么好的方法保护之呢?固然,要搞到很复杂是不大可能的,除非有百度的能力,但简单的保护仍是有办法的. 办法就是,其实flexpaper的SwfFile是支持以文件流的方式读文件的,因此, 能够简单写一个action或者servlet来读取,代码以下: [code="java"] try { ServletOutputStream out = this.getResponse().getOutputStream (); this.ismsdocversion = this.docversionsService .getswfnamebydocumentId(documentId); String realPath =ServletActionContext.getServletContext().getRealPath("swffiles")+"/"+this.ismsdocversion.getAttachmentflashname(); logger.info("swrealpath is"+realPath); InputStream ips = null; OutputStream ops = null; this.getResponse().reset(); this.getResponse().setContentType("application/swf"); File file = new File(realPath); ops = this.getResponse().getOutputStream(); ips = new FileInputStream(file); this.getResponse().addHeader("Content-Length", new Long(file.length()).toString()); int i = 0; byte[] buffer = new byte[1024]; i = ips.read(buffer); while (i != -1) { ops.write(buffer, 0, i); i = ips.read(buffer); } ips.close(); ops.flush(); ops.close(); } catch (Exception e) { e.printStackTrace(); } [/code] 而后在flexpaper中,指定为: SwfFile : escape('<%=basePath%>docview/docview!getSwffile.action?documentId=${ismsdocversion.documentId}'), 其实就是指定为这个servlet输出,这样就能够达到不能直接下载SWF的目的了. 另外,在网上发现一位北京兄弟搞的专门对flexpaper进行二次发开的 网站产品,功能比较强大,也受到这位兄弟的指点,特别感谢, 他的网站是: http://flexpaper.studylead.com/ 支持的功能有: 一、单页异步加载-速度奇快!!! 二、自定义在线播放器界面、可放上本身的公司Logo,或者换想要的皮肤。 三、word、ppt、excel、pdf、txt、wps等后台转换为swf功能。 四、可使用OpenOffice和FlashPaper 两种方式转换 文件。 五、在线浏览文件格式: MS Office文档: doc,docx ppt,pptx xls,xlsx vsd,vsdx pot,potx pps,ppsx rtf; WPS office系列: wps et dps 图片: jpg png gif bmp PDF: pdf 纯文本: txt 六、系统已经实现了关键字查询定位;可设置多个初始搜索关键字,以"|"分割,详见示例 关键字定位。 七、系统实现了控制文档显示页数,可用于收费文档使用,详见示例 控制文档显示页数。 八、系统实现了播放器加载广告,可用于文档添加广告使用,详见示例 播放器加载广告。 九、系统实现了播放器内按页插入广告,可自定义广告内容和插入位置;本站文档均添加了广告示例,请查看。 十、系统实现了全文检索,对文档创建索引,跟百度搜索相似,详见网站搜索。 有兴趣的朋友能够看看