FlexPaper二次开发问题及搜索高亮显示
最近有个需求,做一个IT知识库,类似于文库,说到文库肯定会用到在线浏览文档了,所有在网上翻阅了一下类似豆丁的在线浏览器插件的资料,将其进行了二次开发,在这跟需要用到的朋友分享一下,下面部分内容用到有些前辈的博客内容,首次写博,写的不好之处请见谅。。。高手勿喷,O(∩_∩)O谢谢
1.前期准备工作
1.首先二次开发,当然前提是需要一份FlexPaper的源码。源码下载地址:
http://files.cnblogs.com/yimiao/FlexPaper.rar
2.由于开发需要Adobe Flash Builder,我用的版本是4.5的
在这里贴一篇关于Adobe Flash Builder4.5的下载及安装方面的博客供大伙参阅一下。博客:
http://blog.csdn.net/buptdavid/article/details/6880497
提供个key:1499-4181-9296-6452-2998-3656
准备工作做完之后,接着往下看:
2.源码修改
首先在flash builder中新建一个flex项目,第一步填写项目名称FlexPaperViewer,第二步直接默认,最后一步也无需更改。
1.1然后把你1步下载下来的源码解压。
1.2将这个文件直接拷贝到FlexPaperView项目中,如下图显示:
2. 1将项目下FlexPaperViewer/src/默认包/FlexPaperViewer.mxml文件内容换成:
1 <?xml version="1.0" encoding="utf-8"?> 2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 3 xmlns:fp="com.devaldi.controls.flexpaper.*" 4 layout="absolute" width="100%" height="100%" 5 applicationComplete="initApp();"> 6 7 <mx:Script> 8 <![CDATA[9 import mx.controls.Alert;10 11 public var _aid = 0;//文档ID 12 13 [Bindable]14 public var _Scale:Number = 1;//缩放比例 15 16 [Bindable]17 public var _SwfFile:String = "";//SWF文件路径 18 19 [Bindable]20 public var _ZoomTransition:String = "easeOut";21 22 [Bindable]23 public var _ZoomTime:Number = 0.6;24 25 [Bindable]26 public var _ZoomInterval:Number = 0.1;27 28 [Bindable]29 public var _FitPageOnLoad:Boolean = false;//加载后适合高度 30 31 [Bindable]32 public var _FitWidthOnLoad:Boolean = false;//加载后适合宽度 33 34 [Bindable]35 public var _PrintEnabled:Boolean = false;//是否支持打印 36 37 [Bindable]38 public var _FullScreenAsMaxWindow:Boolean = true;//是否支付全屏 39 40 [Bindable]41 public var _ProgressiveLoading:Boolean = true;//是否延迟加载 42 43 [Bindable]44 public var _localeChain:String = "zh_CN";//语言 45 46 private var isFocus:Boolean = false;47 48 //初始化参数 49 private function initApp():void{50 var params:Object =Application.application.parameters;51 _Scale = getNumber(params, "Scale", 1);52 _SwfFile = getString(params, "SwfFile", "Paper.swf");53 _ZoomTransition = getString(params, "ZoomTransition", "easeOut");54 _ZoomTime = getNumber(params, "ZoomTime", 0.8);55 _ZoomInterval = getNumber(params, "ZoomInterval", 0.1);56 _FitPageOnLoad = getBoolean(params, "FitPageOnLoad", false);57 _FitWidthOnLoad = getBoolean(params, "FitWidthOnLoad", false);58 _PrintEnabled = getBoolean(params, "PrintEnabled", true);59 _FullScreenAsMaxWindow = getBoolean(params, "FullScreenAsMaxWindow", false);60 _ProgressiveLoading = getBoolean(params, "ProgressiveLoading", true);61 _localeChain = params["localeChain"];62 63 //注册事件监听 64 this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);65 this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);66 67 //开放给外部(javascript)调用 68 ExternalInterface.addCallback("hasFocus", hasFocus);69 //ExternalInterface.addCallback("focus", focus); 70 ExternalInterface.addCallback("setViewerFocus", setViewerFocus);71 ExternalInterface.addCallback("gotoPage", gotoPage);72 }73 74 75 76 private function onMouseOver(event:MouseEvent):void{77 this.isFocus = true;78 }79 80 private function onMouseOut(event:MouseEvent):void{81 this.isFocus = false;82 }83 84 publicfunction hasFocus():Boolean{85 //Alert.show("hasFocus"); 86 returnisFocus;87 }88 89 public function setViewerFocus(isFocus:Boolean):void{90 //Alert.show("setViewerFocus"); 91 this.paperViewer.setViewerFocus();92 }93 public function gotoPage(p:Number):void{94 this.paperViewer.gotoPage(p);95 }96 /**97 *98 * 获取String类型参数99 * 如果没有,则返回默认值100 **/ 101 private function getString(params:Object, name:String, def:String):String{102 if(params[name] != null){103 return params[name];104 }105 returndef;106 }107 108 private function getNumber(params:Object, name:String, def:Number):Number{109 if(params[name] != null){110 return params[name];111 }112 returndef;113 }114 115 private function getBoolean(params:Object, name:String, def:Boolean):Boolean{116 //Alert.show("比较:"+name); 117 if(params[name] != null){118 return params[name] == "true";119 }120 returndef;121 }122 ]]> 123 </mx:Script> 124 125 <fp:FlexPaperViewer id="paperViewer" 126 width="100%" 127 height="100%" 128 Scale="{_Scale}" 129 SwfFile="{_SwfFile}" 130 ZoomTransition="{_ZoomTransition}" 131 ZoomTime="{_ZoomTime}" 132 ZoomInterval="{_ZoomInterval}" 133 FitPageOnLoad="{_FitPageOnLoad}" 134 FitWidthOnLoad="{_FitWidthOnLoad}" 135 PrintEnabled="{_PrintEnabled}" 136 FullScreenAsMaxWindow="{_FullScreenAsMaxWindow}" 137 ProgressiveLoading="{_ProgressiveLoading}" /> 138 </mx:Application>
2.2替换内容之后,运行程序,会出现如下一个错误:
点击这个错误,跳到错误语句那里,然后将其删除,不会影响程序
2.3
再运行程序,浏览器就能显示出来了
3.样式修改
3.1:去除右上角Logo,以及右下角logo
--1.去右上角logo,首先打开FlexPaperViewer.mxml文件,搜索bttnInfo,一共就三句,全部注释掉。然后再运行,就会发现右上角的logo就没了
--2.右下角Logo
打开Viewer.as文件,找到createDisplayContainer这个函数。在addChild(_skinImgDo);后面加入_skinImgDo.visible = false;(虽然不懂,但是这些看看也都能知道个大概),再运行的时候发现右下角的Logo也不见了
--3:去打印按钮
去右上角logo,首先打开FlexPaperViewer.mxml文件,搜索print,将这行注释或者删除,打印按钮也消失了
3.2:修改样式或者删除工具栏里面的按钮都可以在FlexPaperViewer.mxml文件里进行相应的操作
感觉工具栏里面的图标不好看的话,可以在网上down一些小图标然后拷贝到assets这个文件夹里面,然后将原来的图标的名字换到你的图标里面就行了
这是我换过图标的样子,大家也都可以更换一下,根据自己的喜好换换。原先的感觉太死板不怎么好看
3.3:当鼠标移到工具栏上的图标时,上面显示英文提示:如果想换成中文的话,找到文件夹路径locale/en_Us/FlexPaper.properties的这个文件,修改对应的提示如下所示:
1 # locale/en_US/FlexPaper.properties2 Print=打印3 FitWidth=自适应宽度4 FitPage=自适应高度5 Scale=缩放6 ThumbView=多页显示7 CurrentPage=当前页8 Search=搜索9 NextPage=下一页10 PreviousPage=上一页11 Fullscreen=全屏显示12 About=About13 Finishedsearching=文档搜索完成,没有找到更多的匹配项!14 Searchfinished=搜索完成15 Selectprintrange=Select print range16 All=All17 CurrentPage=当前页18 Pages=Pages:19 Enterpagenumbers=Enter page numbers and/or page ranges separated by commas. For example 1,3,5-12 20 Cancel=Cancel21 IncorrectRange=Incorrect Range22 Incorrectrangespecified=Incorrect range specified23 About=About24 Developedby=Developed by Devaldi.25 Formoreinformation=For more information, see26 CopyText=Copy Text27 TwoPage=两页显示28 SinglePage=单页显示29 FirstPage=首页30 LastPage=尾页
4.高亮显示问题:
修改之后的浏览器搜索内容时,不会出现高亮显示,这是为什么呢,有的朋友可能发现,自带的文件Paper.swf就可以,为什么自己生成的swf文件不可以呢?
这个原因是因为你使用SWFTools里面这个转换工具pdf2swf.exe时,参数没给, string argsStr = PDFFilePath + " -o " + targetPath + " -T 9 -f";,加上-f就可以查找时高亮显示了
另附上pdf2swf.exe详细参数:
其中把pdf转成swf的工具就是pdf2swf了。在命令行中运行pdf2swf src.pdf des.swf一般能满足需求。而命令行参数可以通过pdf2swf -f得到:
-h , –help Print short help message and exit 打印帮助信息
-V , –version Print version info and exit 打印版本号
-o , –output file.swf Direct output to file.swf. If file.swf contains ‘13568621′ (file13568630.swf), then each page指定输出的swf文件名
-p , –pages range Convert only pages in range with range e.g. 1-20
or 1,4,6,9-11 or
指定转换的页面范围,使用的页码描述方法与打印机打印文件时候的选页一样
-P , –password password Use password for deciphering the pdf.指定打开pdf的密码
-v , –verbose Be verbose. Use more than one -v for greater effect.转换时输出详细的内容
-z , –zlib Use Flash 6 (MX) zlib compression.使用Flash 6的zlib压缩机制
-i , –ignore Allows pdf2swf to change the draw order of the pdf. This may make the generated允许程序修改pdf的绘制顺序,可能会导致结果与原来有差异
-j , –jpegquality quality Set quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)设置转换其中的jpeg图片的质量,从0到100,默认值是85。
-s , –set param=value Set a SWF encoder specific parameter. See pdf2swf -s help for more information. 设置SWF转码时候的参数,具体参数可以用pdf2swf -s help获取
-w , –samewindow When converting pdf hyperlinks, don’t make the links open a new window. 设置转换后的swf打开原pdf中的连接时使用相同的窗口
-t , –stop Insert a stop() command in each page. 在每页结尾添加一个stop()命令
-T , –flashversion num Set Flash Version in the SWF header to num. 设置SWF所使用的flash版本号
-F , –fontdir directory Add directory to the font search path. 指定字体文件所在路径
-b , –defaultviewer Link a standard viewer to the swf file. 指定默认的swf导航文件,用来翻页、放大缩小等等
-l , –defaultloader Link a standard preloader to the swf file which will be displayed while the main swf is loading. 指定默认的swf加载文件,用来显示加载进程效果
-B , –viewer filename Link viewer filename to the swf file. 指定swf导航文件,作用同-b
-L , –preloader filename Link preloader filename to the swf file. 指定swf加载文件,作用同-l
-q , –quiet Suppress normal messages. Use -qq to suppress warnings, also. 不打印普通信息,用-qq就不打印警告信息。
-S , –shapes Don’t use SWF Fonts, but store everything as shape. 不使用字体,所有都转为形状。
-f , –fonts Store full fonts in SWF. (Don’t reduce to used characters). 在swf中保存全部字体。
-G , –flatten Remove as many clip layers from file as possible. 在文件中尽量去除影片层,合并它们
-I , –info Don’t do actual conversion, just display a list of all pages in the PDF. 不做实际转换,仅显示PDF的信息。
-Q , –maxtime n Abort conversion after n seconds. Only available on Unix. 如果运行时间超时则退出。
基本上这个小插件的的二次开发就到这里了,写了这么多,感觉有点啰嗦。不过能帮助到大家还是很好的
FlexPaper二次开发问题及搜索高亮显示相关推荐
- UG NX二次开发(C#)-CAM-不再高亮显示所有的加工特征(CAMFeature)
文章目录 1.前言 2.加工特征高亮显示的示例 3.获取加工特征的几何对象 3.1 获取面对象并取消高亮显示 3.2 获取坐标系对象并取消高亮显示 4.创建一个不再高亮显示所有加工特征的方法 1.前言 ...
- flexpaper java 例子_【转载】《Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子(4.1节) ......
主要文件.文件夹说明: Examples存放Flexpaper使用例子 Js存放Flexpaper调用的JS文件 Php存放PHP使用的文档.JS.库.SWF文件 Index.html例子主页 Fle ...
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单等相关问题...
原文:关于FlexPaper 2.1.2版本 二次开发 Logo .打印.搜索.缩略图.添加按钮.js交互.右键菜单等相关问题 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash( ...
- c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作
c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作 在这里插入图片描述 using Autodesk.AutoCAD.DatabaseServices; using ...
- 基于phantomjs二次开发的百度元搜索采集器
在爬虫.自然语言处理群320349384中的交流中,偶然接触到phantomjs.casper等相对于httpclient较新的框架及采集解决方案,微查之后发现方案可行,故尽清明三日之力,将其二次开发 ...
- DZ各个数据表详解(DZ论坛各表详细说明,二次开发用)
DZ各个数据表详解(DZ论坛各表详细说明,二次开发用) DZ默认库的53个数据表 cdb_access (用户权限表) uid 用户id fid 论坛id allowview 允许浏览 allowpo ...
- wordpress二次开发技巧-functions.php篇
前言 最近又写了个网站,也是基于wordpress,LEE周刊官网:www.leeweekly.com.这个网站和轩枫阁的部分功能有所不同,部分功能困扰了挺久,通过Google搜索到了各种解决方案,记 ...
- UG/NX二次开发-阿飞博客专栏目录(九块九抄代码)
九块九抄代码,小例子,随时用,随时查,ctrl+c to ctrl+v 方便大家抄代码 博客园免费试看部分UF函数 https://www.cnblogs.com/nxopen2018/ 全部内容请九 ...
- SuperMap GIS二次开发MVC实战训练-佛山顺德慢性病GIS项目总结
SuperMap GIS二次开发MVC实战训练-佛山顺德慢性病GIS项目总结 作者:谢景 任务完成时间:2018年12月24日-2019年1月15日 完成模块功能:区域定位.查询搜索.路径分析.周边分 ...
最新文章
- http请求的3位返回码简单解释
- android从放弃到精通第10天 勿忘初心
- jQuery 3.0的domManip浅析
- 深入浅出统计学 第四五章 离散概率的计算与分布
- TabHost两种实现方式
- 《ASP.NET Core 微服务实战》-- 读书笔记(第10章)
- 【单调栈】奶牛的歌声(jzoj 1256)
- 今年双12全天 邮政、快递企业共揽收邮(快)件达4.6亿件
- ODP.NET数据访问
- java rtree源码_rtree R树用java实现的源代码,欢迎广大用户学习交流 Applet 272万源代码下载- www.pudn.com...
- leetcode题库--63不同路径 II
- html 给一个无限宽,html – CSS div与其内容一样宽
- Java:详解List集合的排序功能
- iphone屏幕镜像如何全屏_苹果手机镜像不是全屏 苹果手机如何屏幕镜像
- Windows设置自动开关机
- java 判断是否为英文字母_java 如何判断是否是26个英文字母
- 第五章 Spring Boot的数据库编程
- 【企业架构】企业架构角色和职责
- 数据库课程设计--公交车管理系统总结(Qt学习小结)
- dom更新到底在javascript事件循环的哪个阶段?「前端每日一题v22.11.17」
热门文章
- html增加点击进入,html中实现回车或点击进入-----Mr.Zhang
- catia 桥接曲面圆角_4.3.7.1-Catia曲面之多桥接曲面_简单构面
- SpringBoot开发最佳实践
- 苏格拉底的oracle,苏格拉底的五个经典故事
- Linux的shell脚本函数教程
- 3. 什么是icmp?icmp与ip的关系_「2020.12.3」黄俊捷热搜被爆料?郭俊辰交往女朋友?为什么三只跨年不合体?郝富申和王俊凯关系?Naomi和alracco?...
- linux远程登录ssh免密码配置方法
- Linux命令——find详解
- 六、配置Oracle数据库的网络环境
- (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统