我正在运行Flex移动项目,我希望我的移动应用程序能够加载和显示本地保存的pdf文件。我不想去网上访问这些pdf文件。
我无法弄清楚如何使此代码适用于本地保存的文件。
错误MSG:“错误#2044:未处理的ErrorEvent:。text =加载错误。”
有没有人有建议? 谢谢!
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
overlayControls="true" title="PDF Display"
viewActivate="view1_viewActivateHandler(event)"
viewDeactivate="removeStageWebViewHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import spark.events.ViewNavigatorEvent;
private var myWebView:StageWebView;
protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void {
myWebView = new StageWebView();
myWebView.viewPort = new Rectangle(5,60,stage.stageWidth-10,stage.stageHeight-140);
myWebView.stage = this.stage;
myWebView.loadURL( "assets/sample.pdf");
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
if (myWebView) {
var point:Point = localToGlobal(new Point());
myWebView.viewPort = new Rectangle(5,60,stage.stageWidth-10,stage.stageHeight-140);
}
}
protected function goBackHandler(event:MouseEvent):void {
navigator.popToFirstView();
}
protected function removeStageWebViewHandler(event:ViewNavigatorEvent):void {
myWebView.stage = null;
// just remove the target and will leave.
}
]]>
</fx:Script>
<s:actionContent>
<s:Button label="BACK" click="goBackHandler(event)"/>
</s:actionContent>
<s:Image x="-1" y="2" source="assets/eventsback.jpg"/>
</s:View>
答案 0 :(得分:1)
Android问题实际上是一个基本的Android浏览器操作系统问题。将AIR StageWebView想象成一个从您的应用程序中雕刻出来的洞,向您展示浏览器及其所有功能。
如果您的操作系统支持查看PDF,那么您的应用程序的StageWebView也将支持。在Android 1.0 - 3.0上,当您尝试查看PDF时,它会下载文档并将其手动转移到另一个应用程序(如Acrobat)上。
离开做类似的事情: http://forums.adobe.com/thread/864113
有趣的是,这将在最新版本的Android 4.0中修复。
答案 1 :(得分:1)
你可以试试这个:
webView.loadURL( new File(new File("app:/assets/FlexMobile.pdf").nativePath).url);
答案 2 :(得分:0)
您的代码应该适用于iOS。但是,您在以下行中有一个错误:
myWebView.loadURL( "assets/sample.pdf");
您指定的网址无效。它必须是完全限定的URL。尝试使用以下或类似的东西:
myWebView.loadURL( File.documentsDirectory.resolvePath("assets/sample.pdf").url );
如果您使用Android,上述内容可能无法直接使用。您可能需要安装一个插入浏览器的应用程序,该应用程序能够解析PDF文件。
答案 3 :(得分:0)
我已经尝试过Christo在iPad上提出的解决方案,但它出现了错误:
“不支持协议”
这是因为使用File.resolvePath.url会提供如下的URL:
app://blahblah/blabla.
我使用nativePath解决了这个问题,所以
myWebView.loadURL( File.documentsDirectory.resolvePath("assets/sample.pdf").nativePath );
希望这会有所帮助