`
464872333
  • 浏览: 90543 次
  • 性别: 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源码修改版--去除打印、logo、关于、支持中文文件名

    综上所述,这个FlexPaper源码修改版提供了一个更加可控、定制化的在线文档查看解决方案,特别是对于需要处理中文文件名和限制打印功能的场景。开发者可以根据自身的实际需求,灵活运用和进一步优化这个版本。

    FlexPaper修改后源码

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

    FlexPaper源码

    3. **源码修改**:提供的"修改后的源码"可能包括了对原始FlexPaper代码的调整,如去Logo功能,这通常是通过修改客户端展示代码实现的,找到显示Logo的部分并移除或替换。 4. **自定义功能**:除了去Logo,源码还...

    FlexPaper 2.1.5 源码

    此外,源码修改可能涉及到版本控制,因此熟悉SVN(Subversion)这样的版本控制系统是必要的,它可以追踪和管理代码变更。 在深入修改源码之前,建议先在本地环境中搭建一个开发环境,进行编译和测试,确保修改不会...

    flexpaper源码

    这个“flexpaper 源码”指的是FlexPaper的核心代码库,提供了SDK(Software Development Kit),供开发者进行二次开发,以集成到自己的应用或网站中,实现自定义的功能或界面。 在FlexPaper SDK4中,我们可以找到...

    flexpaper全套源码加示例

    FlexPaper 是一款强大的在线PDF阅读器,它提供了丰富的...总之,通过这套FlexPaper源码和示例,开发者不仅可以快速搭建在线PDF阅读功能,还可以深入理解其工作原理,从而进行二次开发和定制,满足更复杂的业务需求。

    flexpaper源码下载

    标题“flexpaper源码下载”暗示我们将讨论Flexpaper的源代码获取以及可能的定制与开发工作。 描述中提到,为了实现高级别的在线阅读安全性,我们需要对Flexpaper和SWF文件进行双重加密。Flexpaper的加密处理是在...

    FlexPaper 源码

    这个源码包提供了一整套解决方案,让开发者能够轻松地在网站上嵌入高质量的PDF阅读体验。下面我们将详细探讨FlexPaper的核心特性、工作原理以及如何在项目中集成和自定义。 1. **FlexPaper核心特性**: - **多格式...

    Flexpaper二次开发入门教程.pdf

    在Adobe Flash Builder中创建一个新的Flex项目,并将下载的Flexpaper源码复制到项目目录下。这一步骤对于集成Flexpaper的功能至关重要,同时也为后续的定制开发打下基础。 ### SWFTools的简单使用 SWFTools是与...

    FLexPaper实现java在线预览源码

    这个"FLexPaper实现java在线预览源码"的项目可能包含了对FlexPaper的集成、自定义配置以及去除特定功能的代码修改。 首先,关于"去Logo",这通常意味着在预览文档时,源码中可能包含了移除FlexPaper默认显示的Logo...

    flexpaper2.2.7去水印版

    4. **源码修改** 这个版本的FlexPaper是个人开发者基于原始源码进行修改的结果,体现了开发者对FlexPaper框架的深入理解和编程技能。源码级别的修改可能涉及到JavaScript、ActionScript或服务器端脚本,以实现特定...

    flexpaper2.0.6.SWC

    源码的提供意味着开发者可以直接查看和修改FlexPaper的内部实现,这对于深度定制和性能优化非常有帮助。通过分析源码,开发者可以更好地理解其工作原理,解决潜在问题,或者添加特定的功能模块。 Web例子是...

    flex项目 FlexPaper 2.1.2

    在进行二次开发时,需要深入理解FlexPaper的源码结构,熟悉其组件模型和事件模型。同时,由于涉及跨语言(ActionScript和JavaScript)交互,对这两者都要有扎实的基础。在压缩包文件"flex项目.rar"中,可能包含了...

    FlexPaper_2.1.5.zip

    4. **Changelog.txt**: 这个文件记录了 FlexPaper 2.1.5 版本的所有更改和更新。通过阅读它,开发者可以了解此版本相对于前一版本做了哪些改进、修复了哪些bug,以及可能引入的新功能。 5. **LICENSE 文件**: ...

    FlexPaper_2.1.0官方版本

    - **源码开放**:开发者可以查看和修改源码,根据需求进行扩展和优化。 然而,随着HTML5和移动设备的普及,Flash的支持逐渐减少。因此,在现代项目中,开发者可能需要考虑使用FlexPaper的HTML5替代方案,如PDF.js或...

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

    首先,你需要获取FlexPaper的源码,这通常在官方下载页面可以找到。解压下载的压缩包,里面包含了JavaScript、CSS、图片以及HTML示例文件。 1. **去除Logo**: - 找到FlexPaper的皮肤文件夹,一般在`skins`目录下...

    Flexpaper二次开发入门教程

    2.3 导入Flexpaper源码到Flash Builder 创建一个新的Flex项目,然后将下载的Flexpaper源代码复制到项目目录中,以便在项目中使用和修改。 **3. SWFTools的简单使用** SWFTools是Flexpaper的重要辅助工具,用于将PDF...

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

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

Global site tag (gtag.js) - Google Analytics