`
464872333
  • 浏览: 89394 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

FlexPaper源码的修改

 
阅读更多

1.搭建Flexbuilder环境,网上很多,不在赘述。(FlexPaper要求的是Flex4,因为Flex3有的代码不支持)。

2.通过http://flexpaper.googlecode.com/svn/trunk/这个地址,获取Flexpaper的源码(我下载的是2012-1-24日的版本)。在获取前,我们需要安装SVN,这里我们使用TortoiseSVN,安装后打开,选择file->TortoiseSVN->Repo-browser,输入上面的地址即可。(文件见附件,FlexPaper.rar 文件)。

3.新建一个Flex项目,将FlexPaper源码下的src目录和local目录覆盖到你新建的Flex项目的src目录,以及lib下的FlexPaper_Resources.swc文件拷贝到项目的libs目录下。如附件所示:项目结构.jpg。

4.在默认包下打开和你项目名称同名的一个mxml文件,加入如下代码:

 

<?xml version="1.0" encoding="utf-8"?>  
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				xmlns:fp="com.devaldi.controls.flexpaper.*"
				width="100%" height="100%" applicationComplete="initApp();" layout="absolute"
				viewSourceURL="srcview/index.html">  
	
	<mx:Script>  
		<![CDATA[  
			import mx.controls.Alert;  
			
			public var _aid = 0;//文档ID  
			
			[Bindable]  
			public var _Scale:Number = 1;//缩放比例  
			
			[Bindable]  
			public var _SwfFile:String = "";//SWF文件路径  
			
			[Bindable]  
			public var _ZoomTransition:String = "easeOut";  
			
			[Bindable]  
			public var _ZoomTime:Number = 0.6;  
			
			[Bindable]  
			public var _ZoomInterval:Number = 0.1;  
			
			[Bindable]  
			public var _FitPageOnLoad:Boolean = true;//加载后适合高度  
			
			[Bindable]  
			public var _FitWidthOnLoad:Boolean = true;//加载后适合宽度  
			
			[Bindable]  
			public var _PrintEnabled:Boolean = true;//是否支持打印  
			
			[Bindable]  
			public var _FullScreenAsMaxWindow:Boolean = false;//是否支持全屏  
			
			[Bindable]  
			public var _ProgressiveLoading:Boolean = false;//是否延迟加载  
			
			[Bindable]  
			public var _localeChain:String = "zh_CN";//语言  
			
			private var isFocus:Boolean = false;  
			
			//初始化参数  
			private function initApp():void{  
				var params:Object = Application.application.parameters;  
				_Scale = getNumber(params, "Scale", 1);  
				_SwfFile = getString(params, "SwfFile", "Paper.swf");  
				_ZoomTransition = getString(params, "ZoomTransition", "easeOut");  
				_ZoomTime = getNumber(params, "ZoomTime", 0.6);  
				_ZoomInterval = getNumber(params, "ZoomInterval", 0.1);  
				_FitPageOnLoad = getBoolean(params, "FitPageOnLoad", false);  
				_FitWidthOnLoad = getBoolean(params, "FitWidthOnLoad", false);  
				_PrintEnabled = getBoolean(params, "PrintEnabled", true);  
				_FullScreenAsMaxWindow = getBoolean(params, "FullScreenAsMaxWindow", false);  
				_ProgressiveLoading = getBoolean(params, "ProgressiveLoading", true);  
				_localeChain = params["localeChain"];  
				
				//注册事件监听  
				this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);  
				this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);  
				
				//开放给外部(javascript)调用  
				ExternalInterface.addCallback("hasFocus", hasFocus);  
				//ExternalInterface.addCallback("focus", focus);   
				ExternalInterface.addCallback("setViewerFocus", setViewerFocus);      
			}  
			
			
			
			private function onMouseOver(event:MouseEvent):void{  
				this.isFocus = true;  
			}  
			
			private function onMouseOut(event:MouseEvent):void{  
				this.isFocus = false;  
			}  
			
			public function hasFocus():Boolean{  
				//Alert.show("hasFocus");  
				return isFocus;  
			}  
			
			public function setViewerFocus(isFocus:Boolean):void{    
				//Alert.show("setViewerFocus");  
				this.paperViewer.setViewerFocus();  
			}  
			
			/** 
			 *  
			 * 获取String类型参数 
			 * 如果没有,则返回默认值 
			 **/ 
			private function getString(params:Object, name:String, def:String):String{  
				if(params[name] != null){  
					return params[name];  
				}  
				return def;  
			}  
			
			private function getNumber(params:Object, name:String, def:Number):Number{  
				if(params[name] != null){  
					return params[name];  
				}  
				return def;  
			}  
			
			private function getBoolean(params:Object, name:String, def:Boolean):Boolean{  
				//Alert.show("比较:"+name);  
				if(params[name] != null){  
					return params[name] == "true";  
				}   
				return def;  
			}  
		]]>  
	</mx:Script>  
	<!--mx:Panel x="165" y="76" width="250" height="200" layout="absolute" title="一个人">  
	<mx:Label x="59" y="37" text="{Scale}" width="88"/>  
	</mx:Panel-->  
	
	<fp:FlexPaperViewer id="paperViewer" 
						width="100%"   
						height="100%"   
						Scale="{_Scale}"   
						SwfFile="{_SwfFile}"   
						ZoomTransition="{_ZoomTransition}"   
						ZoomTime="{_ZoomTime}"   
						ZoomInterval="{_ZoomInterval}" 
						FitPageOnLoad="{_FitPageOnLoad}" 
						FitWidthOnLoad="{_FitWidthOnLoad}" 
						FullScreenAsMaxWindow="{_FullScreenAsMaxWindow}" 
						ProgressiveLoading="{_ProgressiveLoading}" />  
</mx:Application>
 

 

5.去掉工具栏最右边[关于...]对话框的显示的按钮 

源文件:FlexPaperViewer.mxml 

将源码中查找所有的bttnInfo,共如下三处:

1)bttnInfo.visible = (new MenuIcons.SMALL_TRANSPARENT().width > 10);用"//"注释掉
2)bttnInfo.visible = (new MenuIcons.SMALL_TRANSPARENT().width > 10);用"//"注释掉
3)bttnInfo.visible = true;改为bttnInfo.visible = false;
//spin1.visible = true;注释掉
 spin1.visible = false;

 6.去掉底部的logo图片:

源文件: FlexPaperViewer.mxml

将<fp:FlexPaperViewer_Base ...>的属性最后行加入creationComplete处理: 

<fp:FlexPaperViewer_Base xmlns:mx="http://www.adobe.com/2006/mxml" 
                                                 addedToStage="bindStageEvents(event)" 
                                                 xmlns:fp="com.devaldi.controls.flexpaper.*" 
                                                 xmlns:ct="com.devaldi.controls.*" 
                                                 xmlns:st="com.devaldi.skinning.*"  
                                                 creationComplete="initApp()"> 
 

然后加入处理initApp()函数到<mx:Script>中 

 public function initApp():void {         
                                paper1.removeElementAt(2); 
                        } 

 最后将源码中的函数papersLoadingHandler(event:Event)最后一行加上:paper1.removeElementAt(2);修改后如下所示:

protected override function papersLoadingHandler(event:Event):void{
				//spin1.start();
				//spin1.visible = true;
				spin1.visible = false;
				super.papersLoadingHandler(event);
				paper1.removeElementAt(2);
			}

 7.菜单栏中文显示:

右键项目--->属性---->Flex编译器--->在附加的编译器参数框里加入下面一句:-locale zh_CN -source-path=locale/{locale} -keep-all-type-selectors=true即可。

8.点击菜单后,logo又出现的问题:

源文件: FlexPaperViewer.mxml修改如下代码:

<st:GradientImageButton icon="{MenuIcons.SINGLE_PAGE}" styleName="toolbttn" width="20" click="paper1.switchMode(Viewer.InitViewMode);paper1.removeElementAt(2);" toolTip="@Resource(key='SinglePage', bundle='FlexPaper')" selected="{paper1.ViewMode == Viewer.InitViewMode}" tabIndex="2" visible="{ViewModeToolsVisible}" includeInLayout="{ViewModeToolsVisible}"/>
		<st:GradientImageButton icon="{MenuIcons.TWO_PAGE}" styleName="toolbttn" width="20" click="paper1.switchMode('TwoPage');paper1.removeElementAt(2);" toolTip="@Resource(key='TwoPage', bundle='FlexPaper')" selected="{paper1.ViewMode == ViewModeEnum.TWOPAGE}"  tabIndex="3" visible="{ViewModeToolsVisible}" includeInLayout="{ViewModeToolsVisible}"/>
		<st:GradientImageButton icon="{MenuIcons.THUMBS}" styleName="toolbttn" width="20" click="paper1.switchMode('Tile');paper1.removeElementAt(2);" toolTip="@Resource(key='ThumbView', bundle='FlexPaper')" selected="{paper1.ViewMode == ViewModeEnum.TILE}" tabIndex="4" visible="{ViewModeToolsVisible}" includeInLayout="{ViewModeToolsVisible}"/>
 

protected override function onViewModeChanged(event:ViewModeChangedEvent):void{
				txtPage.text = formatPageNumber(viewer.currPage);
				super.onViewModeChanged(event);
				paper1.removeElementAt(2);
			}
 到此源码就改好了。
  • 大小: 22.9 KB
分享到:
评论
8 楼 tangjian6 2015-10-10  
能实现限制页数否
7 楼 jackyrong 2013-06-15  
HI,能否提供下编译修改后的SWF文件?我这边没flashbuilder,谢谢,email:
jackyrong@tom.com
6 楼 464872333 2013-03-01  
464872333 写道
shizhuxiong 写道
你的这个源码编译以后能正常运行出阅读器来啊?我参照你的方法,生成的阅读器出不来啊!

我的能出来啊,我是在jsp页面调用的。

具体看我的文章,地址是:http://464872333.iteye.com/blog/1534433
5 楼 464872333 2013-03-01  
shizhuxiong 写道
你的这个源码编译以后能正常运行出阅读器来啊?我参照你的方法,生成的阅读器出不来啊!

我的能出来啊,我是在jsp页面调用的。
4 楼 shizhuxiong 2013-02-28  
你的这个源码编译以后能正常运行出阅读器来啊?我参照你的方法,生成的阅读器出不来啊!
3 楼 464872333 2012-11-19  
流水... 写道
好像提供的附件还得重新编译!

嗯,是的吧,我也是不太会Flex的,这是我改过的。
2 楼 流水... 2012-11-19  
好像提供的附件还得重新编译!
1 楼 xgyq0123 2012-10-31  
我怎么获取不了那个开源的项目?

相关推荐

    FlexPaper修改后源码

    flexpaper源码,去掉了logo,去掉了about按钮。可以用Flash builder直接打开,进行二次开发,生成的flexPaper.swf改名为FlexPaperViewer.swf后就可以直接导入从flexPaper网站下载的例子中使用

    FlexPaper源码

    FlexPaper源码和修改后的源码,包括去logo等功能

    FlexPaper源码修改版--去除打印、logo、关于、支持中文文件名

    基于FlexPaper1.5.8 版本的修改 去除打印、logo、关于按钮 支持中文文件名 实现类似百度文库在线浏览文件的不二选择

    FlexPaper 2.1.5 源码

    FlexPaper 2.1.5 svn源码,可以自己下载后修改去掉水印,百度上很多。

    FlexPaper 2.1.2 二次开发Flex源码 二次开发 Logo 、书签、打印、搜索、缩略图、添加按钮、js交互

    基于FlexPaper 2.1.2 版本修改的Flex源码 博客地址:http://www.cnblogs.com/xcong/p/3142155.html 修复双页、缩略图、搜索BUG。 去关于、Logo。 打印添加属性控制。 增加书签功能。

    去除了flexpaper logo和打印的asp源码

    项目简单明了,方便理解,能够直接拿来用。 有鉴于前几天做一个类似文库的功能,采用开源的flexpaper显示,需要去除一些标志做的...如果有兴趣研究源码更改,可以搜搜我的“源代码去除flexpaper logo和打印按钮”项目。

    flexpaper_去除logo,FP等_附修改源码

    仿百度文库实现、flexpaper删除logo、FP

    java + openOffice + swfTools + flexpaper 实现的仿百度文库文档在线浏览(源码)

    鉴于网上找的在线浏览都略去了flexpaper ,于是自己花费几个小时完成了openOffice + swfTools + flexpaper 技术实现仿百度文库的在线浏览。功能已经实现,需要的自己下去优化一下,修改下openoffice和SWFTOOLS安装...

    .net预览office文件

    修改某位前辈代码,使用自己修改过的flexPaper,随后上传修改后的flexpaper源码。flexpaper去掉了logo,about等,默认为中文。

    PDF 在线阅读器 源码

    完全仿照百度文库 开发 使用JAVA+FlexPaper+ swftools 基于MyEclipse 开发,上传pdf文件后可以在线进行查看 支持分页 缩放 全屏,查找 等等.... 开发环境: jdk1.5+Tomcat5.5 使用说明: 1.将OnLinePDF导入到...

    仿百度文库或豆丁网源码

    附件是myeclipse开发的整个工程,包含源码和数据库表结构(已运行在tomcat+oracle上,其它数据库自己修改配置),另外项目相关openOffice、swftools的安装软件请自行到网上下载; 本系统参考百度文库和豆丁网等网站...

    FlexPaper_1.4.5

    1.之前网上找的版本,有些说屏蔽logo,打印,复制,和选中再复制,但是都没完全做到,自己修改了一下源码,完美实现了上传的文件不给非法获取,并且附有FlexPaper_1.4.5版本 2.java实现web传参数显示swf文件,而非写...

    flex4.5打印导出pdf完美版

    此打印是在alivepdf的基础上修改的 已经通过测试 上传的是 源码 导入工程即可用无需任何修改补充一下上次上传的打印功能也是可以的说少库文件 其实不用那个文件也是 可以的 你们自己修改一下

    FlexPaperViewer.swf 去log 去打印 去FP

    swf文件在线预览,通过flexPaperViewer.swf实现预览功能,网上找了很多,但都不全面,有的只是...最后还是自己官网下了源代码,结合网上的一些源码修改方式,各种测试显示无误。供大家享用,如果有需要源文件的可以私聊

    word源码java-KPArchiveMIS:第一个有收入的项目

    swf文件的页面展示:Flexpaper 多文件上传:Uploadify 录入文档:ZUI框架的富文本插件 需求分析 如何部署 1、下载系统源码 2、下载mysql便携版 3、下载openOffice便携版[点此下载]...

Global site tag (gtag.js) - Google Analytics