加载中…
正文 字体大小:

FlexPaper初步使用时遇到的问题解决

(2012-11-21 14:32:57)
标签:

flexpaper

it

分类: Flex

1.获取资源,官网http://flexpaper.devaldi.com/download/提供了三个版本的下载,我的环境是FB4.6,所以需要的是FlexPaper_1.4.1_SDK_4.0_beta_swc.zip这个。

FlexPaper初步使用时遇到的问题解决

解压文件,得到FlexPaper_SDK4.swc,添加到libs,下载安装swftools,具体参考http://hi.baidu.com/abpsoft/item/ea28931a3bb67d653e87cec0

测试代码:

  1. layout="absolute"
  2. width="800" height="500"
  3. xmlns:flexpaper="com.devaldi.controls.flexpaper.*">
  4.   
  5. Scale="1" SwfFile="Paper3.swf" />
  6.   

 

3.去除右上角的FP和右下角的logo,具体参考http://blog.csdn.net/sghys/article/details/8145718 以及http://www.cnblogs.com/yimiao/archive/2012/01/05/2312852.html

另外需要注意的是:

(1)新建项目用来测试,测试成功了还得自己新建个库项目来得到swc文件;

(2)编译器参数:-locale en_US -source-path=locale/{locale} -locale zh_CN 解决英文的问题。

FlexPaper初步使用时遇到的问题解决

 

注:通过以上操作,能显示了,但还并未深入实践,不知会不会有什么问题。

 

 

20130401继续研究,完善此文:

主要解决的问题有java后台实现pdf2swf;前端jsp页面及html实现pdf浏览;以及一些问题的解决方法;

 

2.使用cmd实现pdf2swf:

FlexPaper初步使用时遇到的问题解决

FlexPaper初步使用时遇到的问题解决

附:进入文件夹:

cd 文件夹名

dir 查看所有文件夹

 

另外,使用软件FlexPaper Desktop Publisher,导入pdf后中文是空白不显示,不知道这个软件干啥使的,恼火的很

FlexPaper初步使用时遇到的问题解决

3.java后台实现pdf2swf

(1)定义一个类Converter.java:

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class Converter {

 public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws IOException {
     //目标路径不存在则建立目标路径
     File dest = new File(destPath);
     if (!dest.exists()) dest.mkdirs();   
     //源文件不存在则返回
     File source = new File(sourcePath);
     if (!source.exists()) return 0;   
     //调用pdf2swf命令进行转换
     String command = "D:\\Program Files\\SWFTools\\pdf2swf.exe" + " -o " + destPath + "\" + fileName
       +" -s flashversion=9" +" -t "+sourcePath
       //+" -s languagedir=D:\\lifc\\soft\\Flex\\FlexPaper\\xpdf-chinese-simplified"+" -f"; 
       +" -f"; 
     Process pro = Runtime.getRuntime().exec(command);   
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
     while (bufferedReader.readLine() != null);    
     try {
      pro.waitFor();
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      
     return pro.exitValue();
 }
 
 public static void main(String []args) throws IOException {
     String sourcePath = "E:\\test.pdf";
     String destPath = "D:\\Java\\WorkSpace_myEclipse\\myProj1\\flex_src\\swf\";
     String fileName = "test124.swf";
     Converter.convertPDF2SWF(sourcePath, destPath, fileName);
  }

}

 

(2)新建个jsp测试页面

添加代码Converter.main(null);

运行测试,成功实现转换:

FlexPaper初步使用时遇到的问题解决

(3)注意事项

注意command字符串的参数,详细说明请参考

SWFTools 命令 http://blog.csdn.net/fh13760184/article/details/4100421

" -s flashversion=9"是为了解决不能加载自己转换的swf的问题(我没遇到这个问题,写上还是写上了保险)

" -f"是为了解决搜索不能高亮显示及不能复制的问题。

gpdf2swf这个工具的转换参数设置里只提供了flash version,7和8供选择

FlexPaper初步使用时遇到的问题解决

4.前端jsp页面及html实现pdf浏览

两者没什么差别,主要是为了测试

(1)jsp

FlexPaper初步使用时遇到的问题解决

(2)html

FlexPaper初步使用时遇到的问题解决

(3)注意事项

注意FlexPaperViewer和要显示的swf文件的路径;

swf文件的路径不能写绝对路径,否则会报错,报了错按常规的添加信任或者设置调试器参数-use -network=false都不能解决:
FlexPaper初步使用时遇到的问题解决


FlexPaper初步使用时遇到的问题解决


FlexPaper初步使用时遇到的问题解决

FlexPaper初步使用时遇到的问题解决

 

ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,

这些参数修改成false也不起作用,不知是都要去修改FlexPaperViewer,然后重编译才行(未亲自实践,不确定);

 

localeChain: 'zh_CN'这句很关键,一开始我因为乱码改成了localeChain: 'en_US',后来复制中文粘贴全部变成“f”字符的问题折腾了很久,悲痛啊

FlexPaper初步使用时遇到的问题解决

开始一直以为是command的问题,各种尝试,还是没能解决,偶然发现这句,改了之后果然奏效!!

比如xpdf设置,组合测试了-F ,-s languagedir,-s fondir,-f等都没能成功

FlexPaper初步使用时遇到的问题解决

 

工具栏提示英文修改成中文:

右键项目--->属性---->Flex编译器--->在附加的编译器参数框里加入下面一句:-locale zh_CN -source-path=locale/{locale} -keep-all-type-selectors=true即可。
FlexPaper初步使用时遇到的问题解决

工具栏的部分工具没有tooltips的修复办法:

在FlexPaperViewer.mxml里找到声明,发觉是有三个工具无tooltips,分别是:Rotate,TextSelect,TextDrag.原因是locale下无声明,添加即可

FlexPaper初步使用时遇到的问题解决

FlexPaper初步使用时遇到的问题解决

隐藏右键菜单的“关于 FlexPaper”菜单项的方法:

在FlexPaperViewer_Base.mxml中搜索“contextMenu”找到如下代码段,进行修改,注释掉contextMenu.customItems.push(cmi_about);即可

FlexPaper初步使用时遇到的问题解决

 

结果如下图所示:

FlexPaper初步使用时遇到的问题解决

当然,如果想取消“打印”菜单项,同样位置找到contextMenu.customItems.push(cmi_print);注释掉即可。

 

单页双页缩略图之间切换时会出现logo进度条的解决方法:

找到Streaming/DupImage.as
找到语句:private var _skinImgl:Bitmap = new MenuIcons.LOGO_SMALL();替换为: private var _skinImgl:Bitmap = new Bitmap();即可

但是切换到双页时还是会出现进度条,这个问题暂未解决。

 

源代码全部修改好之后,需要重编译得到项目文件的swf,遇到的问题解决方法:

我源码都修改好了,运行测试了都没有问题,我的项目名称叫FlexPaper11,因此对应FlexPaper11.mxml,编译得到FlexPaper11.swf,改个名字叫做FlexPaperViewer.swf,替换我之前java环境下测试时的同名文件,运行报错:

提示“Error#2032流错误,URL:http://localhost:8081/myProj1/swf/textLayout_2.0.0.232.swf”,我的FlexPaperViewer.swf是放在swf文件夹下的,看这错误是没有找到textLayout_2.0.0.232.swf文件FlexPaper初步使用时遇到的问题解决

我从FlexPaper11项目的bin-debug下把文件拷贝过来,又陆续报了其他的文件的错误,包括以下文件,共7个:
FlexPaper初步使用时遇到的问题解决

都拷贝完了之后,可以正常运行了。看来是编译的时候没打包进来,当时这个swf才277k,而之前的是500k左右,肯定是哪设置有问题,后来

FlexPaper初步使用时遇到的问题解决

默认的框架链接是“使用SDK默认值(运行时共享库)”修改为“合并到代码中”,我也尝试过去掉勾选“在调试时使用本地调试运行时共享库”选项,后来想重现问题,找出真正的原因,反复几次改设置都正常,没在出错,有点纳闷,以后再遇到就多试几次吧,good luck!!

这样就会发觉编译后,bin-debug下不会出现上述的7个文件,swf也成了1M多,再导出发布版本,.文件会小很多,如图所示:

FlexPaper初步使用时遇到的问题解决

FlexPaper初步使用时遇到的问题解决

这样下来,问题是基本都解决了,折腾的。

 

(4)测试结果

FlexPaper初步使用时遇到的问题解决

其实还有不少问题需要进一步研究,比如右键菜单问题,还有一些具体的参数设置等等

暂时这样吧,真正用到了碰到了再弄吧。

5.参考文章

(1)利用pdf2swf将PDF转换成SWF http://hi.baidu.com/zhengxinglong/item/0ccef1d9b41fb33a48e1ddc0 

(2)去除logo等设置 http://www.cnblogs.com/CaroBMW/archive/2012/10/02/2710617.html

(3)FlexPaper+SWFTools 实现仿百度文库及一些小问题http://www.cnblogs.com/qinpeifeng107/archive/2011/08/29/2158879.html

(4)用Flex调用SWF查看PDF  http://www.blogjava.net/kissjava/archive/2008/09/26/231383.html

(5)Flexpaper 开发教程 http://wenku.baidu.com/view/7d8d1bf8f705cc1755270966.html

(6)去除flexpaper的LOGO,双页时也不会出现  http://blog.csdn.net/shiqidide/article/details/8002862

(7)Flexpaper 源码的修改 http://464872333.iteye.com/blog/1532534

第(5)篇写的很系统,不过我是最后才看到的,参照这篇可以走不少弯路。

 

如果谁看到了我这篇文章,也希望对他有所帮助。。。

 

 

 

 

 

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有