1. 主要思路:
文档(Word,PPT等)----> 转换为pdf ----> 转换为SWF -----> 使用FlexPaper在线浏览
第一步:文档--->转换为pdf
用openoffice+jodconverter,openoffice是sun公司自己用Java写的一套开源office软件,openoffice的缺点在于这个文件很大。 用Flashpaper实现,有绿版,可通过命令行CMD调用。 第二步:pdf-->转swf
用pdf2swf,pdf2swf提供了命令行参数,我们可以通过Java的Runtime和Process调用pdf2swf提供的命令将pdf转为swf.
第三步就是显示了,通过flexpaper实现
2. CMD命令行中运行SWFTools文件夹名字带有空格
对于 -t ,-o 这两个参数,就是对于源文件路径来输出文件路径的问题,如果你的文件夹的名字中有空格的话,是不能到文件的。 比如说:要转换的pdf源文件在 E:\Program Files\SWFTools\这个文件夹下,当我这样写 -t E:\Program Files\SWFTools\ajax.pdf 或者是输出文件路径写成这样 - o E:\Program Files\SWFTools\ajax.swf 这样都是不能成功的,因为这里面有文件夹名含有空格,在路径的前后加上又引号就能成功啦,如
-o "E:\Program Files\SWFTools\ajax.swf" 这样就OK啦.
3. Flexpaper不能加载swf文件
FlexPaper加载swf时,一直处于等待状态,无法显示,检查swf的路径也没错,但就是一直无法加载。这种情况,很有可能就是.swf文件的版本问题啦。我们运行SWFTools的图形工具()把pdf转换为swf,但是转换后的swf也不能被Flexpaper正常加载,确保路径没错的话,那就是版本的问题啦。查看转换时swf的版本,可以点击 Edit->Options->Viewer。
解决方法:须把pdf转换为版本为9的swf,才能让它在Flexpaper中显示。那么如何转换为9的呢?我自己是使用cmd命令行工具来手工转换的.只须在命令行添加 "-s flashversion=9" 这句,就可以转换为9的版本啦.
4. 运行官方的DEMO及Flexpaper的用法
打开刚刚下载好的Flexpaper文件夹,打开里面的例子 index.html, 声纳网
(1)运行官方的例子,不能加载任何的.swf(包括例子中的swf)(如果能正常显示的话,请跳过这一步)
运行官方例子的时起,连所带的Paper.swf都不能加载成功,只见到右上角的圈圈一直在动,处于等待的状态。:
这种情况,是由于Flexpaper还没获得Adobe Flash的信任,这时你可以前住/support/documentation/en/flashplayer/help/settings_manager04a.html#119065 为FlexPaper添加信任.进入网页之后 ,点击左边的 Global Security Settings papel 这个选项,然后在右边
为你的例子所在的文件夹添加信任。然后你再运行官方的例子,就会发现可以运行成功啦。
(2)Flexpaper的用法
我们可以查看index.html源代码,这里不多说,直接说它的用法吧:
在前端的用法如下:
2 <script type="text/javascript" src="js/jquery.js"></script>
3 <script type="text/javascript" src="js/flexpaper_flash.js"></script>
4 <script type="text/javascript" src="js/flexpaper_flash_debug.js"></script>
html中的代码,只需声明一个a标签即可
<body>
<div style="position:absolute;left:10px;top:10px;"车载式高空作业平台>无线投票系统>
<a id="viewerPlaceHolder" style="width:660px;height:480px;display:block"></a>
<script type="text/javascript">
var fp = new FlexPaperViewer(
羽绒手套 'FlexPaperViewer',
'viewerPlaceHolder',
{ config : {
SwfFile : escape('ajax.swf'),
Scale : 0.6,
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : true,
FitWidthOnLoad : false,
PrintEnabled : true,
FullScreenAsMaxWindow : false,
ProgressiveLoading : false,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : false,
InitViewMode : 'Portrait',
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
localeChain: 'en_US'
}});
</script>
</div>
</body>
基本上,这样就可以在前端显示你的Flexpaper了.
5. 利用JAVA调用把PDF转化pdf为swf
[java:nogutter] view plaincopy
1. /**
2. * 将pdf文件转化成swf文件
3. * @param fileName 文件的绝对路径
4. * @param destPath 目标路径
5. * @return -1:源文件不存在,-2:格式不正确,-3:发生异常,0:转化成功
6. * @author fanglm created on Jul 9, 2010 1:13:04 PM网络电视广告
7. */
8. public static int ConvertPdfToSwf(String fileName,String destPath){
9. String destName = "",fileExt = "";
10. StringBuffer command = new StringBuffer();
11. fileExt = fileName.split("//.")[fileName.split("//.").length-1].toLowerCase();
12. try{
13. File file = new File(fileName);
14. if(!ists()){//判断源文件是否存在
15. return -1;
16. }else if(!fileExt.equals("pdf")){//判断文件是否是pdf格式的文件
17. return -2; 光触媒涂料
18. }
19. else{
20. String swftoolsPath = "D://SWFTools";//获取pdf转swf工具的路径
21. if(!swftoolsPath.substring(swftoolsPath.length()-1, swftoolsPath.length()).equals("//")){
22. swftoolsPath = swftoolsPath+"//"; //在目录后加 "/"
23. }
24. if(!destPath.substring(destPath.length()-1, destPath.length()).equals("//")){
25. destPath = destPath+"//"; //在目录后加 "/"
26. }
27. File destFile = new File(destPath);
28. if(!ists()){//目标文件路径如果不存在,则创建目录
29. destFile.mkdirs();
30. }
31. destName =&Name().substring(0,&Name().length()-4)+".swf";//目标文件名称
32. command.append(swftoolsPath).append(" ").append(fileName).append(" -o ").append(destPath).append(destName);