Как отобразить локальный PDF в Flex Mobile Project? - PullRequest
0 голосов
/ 24 января 2012

Я работаю с мобильным проектом 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>

Ответы [ 4 ]

1 голос
/ 13 июня 2012

Вы можете попробовать это:

webView.loadURL( new File(new File("app:/assets/FlexMobile.pdf").nativePath).url);
1 голос
/ 25 января 2012

Проблема Android на самом деле является фундаментальной проблемой ОС Android для браузеров. Представьте, что AIR StageWebView - это дыра, вырезанная из вашего приложения и показывающая вам браузер и все его возможности.

Если ваша ОС поддерживает просмотр PDF-файлов, то и StageWebView вашего приложения также будет. на Android 1.0 - 3.0, когда вы попытаетесь просмотреть PDF-файл, он загрузит документ и вручную встряхнет его в другое приложение, например Acrobat.

уходит, чтобы сделать что-то вроде: http://forums.adobe.com/thread/864113

Надеюсь, это будет исправлено в новейшей версии Android ... 4.0

0 голосов
/ 27 апреля 2012

Я попробовал решение, предложенное Christo, на iPad, и оно выходит с ошибкой:

«Протокол не поддерживается»

, потому что при использованииFile.resolvePath.url дает URL-адрес, подобный следующему:

app://blahblah/blabla.

Я решил эту проблему с помощью nativePath, поэтому

myWebView.loadURL( File.documentsDirectory.resolvePath("assets/sample.pdf").nativePath );

надеюсь, что это поможет

0 голосов
/ 24 января 2012

Ваш код должен работать для iOS.Однако у вас есть ошибка в следующей строке:

myWebView.loadURL( "assets/sample.pdf");

Указанный вами URL-адрес недействителен.Это должен быть полный URL-адрес.Попробуйте использовать следующее или что-то подобное вместо этого:

myWebView.loadURL( File.documentsDirectory.resolvePath("assets/sample.pdf").url );

Если вы работаете на Android, вышеприведенное может не работать прямо из коробки.Возможно, вам потребуется установить приложение, которое подключается к браузеру и может анализировать PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...