如果想要在flex加载pdf,虽然pdf格式是开源的,但是自己去解析太麻烦了,pdf还要分页之类的,现在网上各种文档上传可以在线看很多都是pdf,当然也有word,excel之类,其实很多都是转了swf,flex加载swf,这次只说加载pdf,首先先下载一个swftools,这个工具有命令行可以转pdf 到dwg 简单命令是 pdf2swf -o 1.swf -s flashversion=9 1.pdf,其中flashversion最好选9以上 ,低版本有时候导出swf flex加载不出来。github上有flexpaper这个组件,flexpaper这个组件就不不细说了,还要结合flex-iframe.swc这个组件来用,flexpapaer和flex-iframe.swc地址http://files.cnblogs.com/files/haibalai/FlexPaper.rar。

  这里做成一个组件,熟悉flexview开发的都知道widget模式,这里xml格式

  

1 <?xml version="1.0" encoding="utf-8" ?>
2 <data>
3   <pdf name="aaa" url="http://locahost/FlexPaper/index.html?fileSrc=aaa.pdf"></pdf>
4   <pdf name="bbb" url="http://locahost/FlexPaper/index.html?fileSrc=bbb.pdf"></pdf>
5 </data>

  组件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <viewer:BaseWidget xmlns:esri="http://www.esri.com/2008/ags"
 3                    xmlns:fx="http://ns.adobe.com/mxml/2009"
 4                    xmlns:s="library://ns.adobe.com/flex/spark"
 5                    xmlns:mx="library://ns.adobe.com/flex/mx"
 6                    xmlns:viewer="com.esri.viewer.*"
 7                    xmlns:components="com.esri.viewer.components.*"
 8                    x="600" y="300"
 9                    xmlns:code="http://code.google.com/p/flex-iframe/"
10                    widgetConfigLoaded="basewidget_widgetConfigLoaded()">
11     
12     
13     <fx:Script>
14         <![CDATA[
15                 import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
16                 import com.esri.viewer.managers.EventBus;
17                 import com.szpl.extension.base.impl.AccessPoint;
18                 import com.szpl.extension.tools.config.ILayerConfig;
19                 import com.szpl.extension.tools.layer.ILayer;
20                 import com.szpl.extension.tools.layer.LayerVisibleChangeEvent;
21                 import flash.events.MouseEvent;
22                 import flash.utils.ByteArray;
23                 import mx.collections.ArrayCollection;
24                 import mx.core.FlexGlobals;
25                 import mx.rpc.events.FaultEvent;
26                 import mx.rpc.events.ResultEvent;
27                 import mx.utils.UIDUtil;
28                 import spark.events.IndexChangeEvent;
29                 
30     
31 
32     
33 
34     
35         var arr:ArrayCollection = new ArrayCollection();
36         protected  function basewidget_widgetConfigLoaded():void
37         {
38             if (configXML)
39             {
40                 
41                 var pdfxmls:XMLList = configXML.pdf;
42                 for each(var pdfxml:XML in pdfxmls)
43                 {
44                     var obj:Object = new Object();
45                     obj.name = String(pdfxml.@name);
46                     obj.url = String(pdfxml.@url);
47                     arr.addItem(obj);
48                 }
49                 list.dataProvider = arr;
50             }
51             if (arr.length > 0)
52             {
53                 list.selectedIndex = 0;
54                 OfficeProject.source = (list.selectedItem as Object).url;
55             }
56         }
57         
58     
59     private function listChangeHandle(event:IndexChangeEvent):void
60     {
61         OfficeProject.source = (list.selectedItem as Object).url;
62     }
63        
64        
65     
66          ]]>
67 </fx:Script>
68     
69 <viewer:WidgetTemplate id="LocateWT" width="980" height="100%" 
70            enableMinimizeButton="false" >
71     
72 <s:HGroup height="100%" width = "100%">
73 <s:List id="list" height="100%" width="150"  change="listChangeHandle(event)" labelField="name">
74     
75 </s:List>
76         
77 <code:IFrame  id="OfficeProject" width="790" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"/>    
78         
79 </s:HGroup>    
80 </viewer:WidgetTemplate>
81  
82 </viewer:BaseWidget>

 

转载于:https://www.cnblogs.com/haibalai/p/5032050.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐