利用flex实现pdf显示
功能
1 显示pdf文件
2 分段加载,节省带宽
3 支持拖动,上一页、下一页、全屏、指定页面
显示页面
转换工具
pdfswf.exe 工具下载 http://www.swftools.org/download.html
<?xml version="1.0" encoding="utf-8"?> <mx:Application creationComplete="init()" layout="vertical" verticalGap="0" horizontalGap="0" left="0" right="0" paddingTop="0" paddingLeft="0" paddingRight="0" paddingBottom="0" backgroundGradientColors="[0x999999,0x111111]" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.events.IndexChangedEvent; import mx.controls.Alert; private var mc:MovieClip=null; private var path:String; //放大倍数 private var zoom:Number=1; //第几部份 private var part:int=0; //当前页 private var page:int=0; //每页大小 private var pageSize:int=0; //所有页面数量 private var totalPage:int=0; private var dig:Dialog; public function init():void { dig=new Dialog(this, true); //if (this.parameters.hasOwnProperty("swf")) if (!this.parameters.hasOwnProperty("swf")) { //path=this.parameters.swf; path="pdf/source_25_5"; this.LoadSwf(part); } else { //Alert.show("swf参数不正确"); dig.open("swf参数不正确", "swf参数不正确", true); } } public function LoadSwf(part:int, goPage:int=1):void { dig.open("当前操作", "正在加载文件,请稍等"); pageSize=int(path.substring(path.lastIndexOf("_") + 1, path.length)); totalPage=int(path.substring(path.indexOf("_") + 1, path.lastIndexOf("_"))); var folder:String=path.substring(path.indexOf("/") + 1, path.length); //var fileName:String=path.substring(path.indexOf("/") + 1, path.indexOf("_")); page=goPage; loader.source=path + "/" + part + ".swf"; loader.addEventListener(Event.COMPLETE, function(e:Event):void { mc=(e.target as SWFLoader).content as MovieClip; this.total=mc.totalFrames; mc.gotoAndStop(goPage); //page=1; changeState(); zoom=Number(loader.width) / mc.width; loader.height=mc.height * zoom; dig.close(); loader.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function():void { dig.close(); dig.open("当前操作", "你查看的文件不存在"); //Alert.show("你查看的文件不存在"); }); loader.load(); this.lbTotal1.text=this.lbTotal2.text=totalPage + "页"; } private function btnFull_click(e:Event):void { stage.displayState=(stage.displayState == StageDisplayState.NORMAL ? StageDisplayState.FULL_SCREEN : StageDisplayState.NORMAL); if (this.stage.displayState == StageDisplayState.FULL_SCREEN) { this.btnFull1.label="返回"; } else { this.btnFull1.label="全屏"; } this.main.height=this.height - 50; title1.width=title2.width=main.width=width; btnFull2.x=btnFull1.x=this.width - 50; } private function btnNext_click(e:Event):void { if (page == mc.totalFrames) { part++; //page=0; LoadSwf(part); changeState(); } else { page++; mc.gotoAndStop(page); changeState(); } trace(this.box.verticalScrollPosition); } private function btnPre_click(e:Event):void { page--; if (page == 0 && part != 0) { part--; LoadSwf(part, pageSize); } else { //trace(page); mc.gotoAndStop(page); } changeState(); } private function changeState():void { this.txtCurrent2.text=this.txtCurrent1.text=String(part * pageSize + page); //this.lbTotal2.text=this.lbTotal1.text=String(total); if (part == 0 && page == 1) { this.btnPre2.enabled=this.btnPre1.enabled=false; } else if ((part + 1) * page == this.totalPage) { this.btnNext2.enabled=this.btnNext1.enabled=false; } else { this.btnPre2.enabled=this.btnPre1.enabled=true; this.btnNext2.enabled=this.btnNext1.enabled=true; } this.main.height=this.height - 50; title1.width=title2.width=main.width=width; btnFull2.x=btnFull1.x=this.width - 50; if (mc != null) { //Alert.show("mc.width"+mc.width); //mc.x=(this.width-mc.width*zoom)/2; } if (part == totalPage / pageSize) { totalPage=(part - 1) * pageSize + mc.totalFrames; } this.lbTotal1.text=this.totalPage.toString(); this.main.verticalScrollPosition=0; } private function btnZooomIn_click(e:Event):void { mc.height*=1.1; mc.width*=1.1; } private function txtCurrent_change(e:KeyboardEvent):void { if (e.keyCode == 13) { var input:int=int(txtCurrent1.text); if (input > totalPage || input < 0) { dig.open("系统提示", "页码不合法", false); return; } part=(input / pageSize); page=(input) % pageSize; if (page == 0) { part=part - 1; page=pageSize; } this.LoadSwf(part, page); changeState(); } } private function btnZooomOut_click(e:Event):void { mc.height*=0.9; mc.width*=0.9; } //拖动 public function beginDrag(e:MouseEvent):void { loader.startDrag(); e.target.filters=[new DropShadowFilter(10, 45, 0x88888888)]; e.updateAfterEvent(); loader.addEventListener(MouseEvent.MOUSE_UP, endDrag); loader.removeEventListener(MouseEvent.MOUSE_DOWN, beginDrag); } public function endDrag(e:Event):void { loader.stopDrag(); e.target.filters=[]; loader.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag); loader.removeEventListener(MouseEvent.MOUSE_UP, endDrag); } ]]> </mx:Script> <mx:Canvas id="title1" width="1007" height="25" alpha="0.8" backgroundColor="#80C6F2" fontSize="9"> <mx:Button x="131" y="1" label="<" id="btnPre1" click="btnPre_click(event)"/> <mx:Button x="3" y="1" label="<<" id="btnClose1"/> <mx:Button x="326" y="1" label="+" click="btnZooomIn_click(event)"/> <mx:Button x="380" y="1" label="-" click="btnZooomOut_click(event)"/> <mx:Button x="900" id="btnFull1" y="1" click="btnFull_click(event)" label="全屏"/> <mx:Button x="259" y="1" label=">" id="btnNext1" click="btnNext_click(event)"/> <mx:Text x="226" y="4" text="1" id="lbTotal1"/> <mx:TextInput x="179" y="1" keyUp="txtCurrent_change(event)" width="46" id="txtCurrent1"/> </mx:Canvas> <mx:Canvas y="0" id="main" width="1007" verticalScrollPolicy="on" backgroundColor="#666666"> <mx:VBox id="left" width="0" height="100%" horizontalGap="0" backgroundColor="#ffffff"/> <mx:VBox id="box" styleName="boxtop" width="{main.width-16}" verticalScrollPolicy="off" horizontalCenter="true" verticalGap="0"> <mx:SWFLoader useHandCursor="true" buttonMode="true" bottom="2" id="loader" width="{main.width-20}" showBusyCursor="false" height="100%"/> </mx:VBox> </mx:Canvas> <mx:Canvas id="title2" width="1007" height="25" alpha="0.8" backgroundColor="#80C6F2" fontSize="9"> <mx:Button x="131" y="1" label="<" id="btnPre2" click="btnPre_click(event)"/> <mx:Button x="3" y="1" label="<<" id="btnClose2"/> <mx:Button x="326" y="1" label="+" click="btnZooomIn_click(event)"/> <mx:Button x="380" y="1" label="-" click="btnZooomOut_click(event)"/> <mx:Button x="900" id="btnFull2" y="1" click="btnFull_click(event)" label="全屏"/> <mx:Button x="259" y="1" label=">" id="btnNext2" click="btnNext_click(event)"/> <mx:Text x="226" y="4" text="1" id="lbTotal2"/> <mx:TextInput x="179" keyUp="txtCurrent_change(event)" y="1" width="46" id="txtCurrent2"/> </mx:Canvas> <mx:Style source="global.css"/> </mx:Application>
理念:网站优化工具之家致力于面向搜索引擎网站建设,SEO优化标准制定及免费搜索优化工具研发,是宁波首个面向搜索引擎网站服务团队
网站:seo.al0574.com
posted on 2010-07-03 21:15 yaoshiyou 阅读(4432) 评论(2) 编辑 收藏 举报