下载官方的源码:
地址: http ://flexpaper.googlecode.com/svn/trunk/
我修改的是flex 3 版本的. 其实4也差不多.对应的修改就可以了
1. 源码部署需要修改相关参数. 根据你的实际flex sdk 环境有关. 如果没必要多语言支持.就全都删除了.只保留中文的FlexPaper.properties 即可. 放到src 根目录下
2. 设置flash player 为10.0.0 或以上. 这个是为了解决 运行示例程序出现 右键菜单不能访问clipboardMenu属性 和 unloadAndStop 方法的问题
3. 默认官方的源码是有点问题的. 他设置的加载swffile 时间不对. 照成了 一直是在加载文件状态.pdf 打不开的情况.
修改方式如下.:
<fp:Viewer id="paper1" onDocumentLoaded="documentLoadedHandler(event)" onDocumentLoading="papersLoadingHandler(event)" onDocumentLoadedError="documentLoadedErrorHandler(event)" onLogoClicked="logoClickedEventHandler(event)" onNoMoreSearchResults="onNoMoreSearchResultsHandler(event)" onLoadingProgress="onDocumentLoadingProgressHandler(event)" onScaleChanged="onScaleChanged(event)" onFitModeChanged="onFitModeChanged(event)" onViewModeChanged="onViewModeChanged(event)" onCurrPageChanged="onCurrPageChanged(event)" onCursorModeChanged="onCursorModeChanged(event)" onExternalLinkClicked="onExternalLinkClickedHandler(event)" onDocumentPrinted="documentPrintedHandler(event)" onPageLoaded="pageLoadedEventHandler(event)" onPageLoading="pageLoadingEventHandler(event)" onErrorLoadingPage="errorLoadingPageEventHandler(event)" SwfFile="{SwfFile}" Scale="{Scale}" ZoomTransition="{ZoomTransition}" ZoomTime="{ZoomTime}" FitPageOnLoad="{FitPageOnLoad}" FitWidthOnLoad="{FitWidthOnLoad}" ProgressiveLoading="{ProgressiveLoading}" ZoomInterval="{ZoomInterval}" MinZoomSize="{MinZoomSize}" MaxZoomSize="{MaxZoomSize}" SearchMatchAll="{SearchMatchAll}" SearchServiceUrl="{SearchServiceUrl}" EncodeURI="{EncodeURI}" AutoAdjustPrintSize="{AutoAdjustPrintSize}" PrintPaperAsBitmap="{PrintPaperAsBitmap}" addedToStage="MacMouseWheelHandler.init(stage)" creationComplete="viewerCreationCompleteHandler(event)" height="100%" width="100%" borderStyle="solid" tabIndex="0" />
SwfFile="{SwfFile}" 这个属性删除掉
增加 初始化完成事件
creationComplete="viewerCreationCompleteHandler(event)"
方法如下:
protected function viewerCreationCompleteHandler(event:FlexEvent):void { loadSwf(SwfFile); }
然后继续修改
public dynamic function loadSwf(s:String):void{ viewer.SwfFile = s; }
方法 改成
public dynamic function loadSwf(s:String):void{ viewer.loadSwfFile(s); }
然后继续修改
public function set SwfFile(s:String):void {
改成
public function loadSwfFile(s:String):void {
这样就可以在调用mxml 文件中这样写了:
<flexpaper:FlexPaperViewer id="flexview" width="100%" height="100%" Scale="0.95" SwfFile="http://localhost:8080/PdfView/view/Paper.swf" />
或者 手动加载文件
flexview.loadSwf("http://localhost:8080/PdfView/view/Paper.swf");
都可以显示了
如图: