AIR-Applikationen können nicht nur SWF- und HTML-Dateien anzeigen, sondern auch Dokumente im PDF-Format darstellen. Wie dies genau geht und was die Vorraussetzung sind, zeigt Teil 12 der Reihe zu „Adobe AIR 1.0“ und Flash CS3.
Für das Rendern und Anzeigen der PDFs wird auf den Adobe Reader (oder Adobe Acrobat) zurückgegriffen, weshalb dieser beim Nutzer in der Version 8.1 oder höher beim Nutzer installiert sein muss. Um dies zu prüfen, kann man die Eigenschaft HTMLLoader.pdfCapability
abfragen, die entsprechende Werte zurückliefert. Diese können sein:
HTMLPDFCapability.STATUS_OK
A sufficient version (8.1 or greater) of Adobe Reader is detected and PDF content can be loaded into an HTMLLoader object
HTMLPDFCapability.ERROR_INSTALLED_READER_NOT_FOUND
No version of Adobe Reader is detected. An HTMLLoader object cannot display PDF content.
HTMLPDFCapability.ERROR_INSTALLED_READER_TOO_OLD
Adobe Reader has been detected, but the version is too old. An HTMLConrol object cannot display PDF content.
Um das PDF zu laden, nutzt man die HTMLLoader
-Klasse, die auch schon im Beispiel „HTML-Seiten in AIR anzeigen“ zum Einsatz kam.
Der ActionScript-Code der Anwendung lautet:
[as]
import flash.html.*;
import flash.events.*;
function checkPDFCapability():void {
if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK) {
trace(„PDFs können dargestellt werden.“);
} else
{
trace(„PDFs können nicht dargestellt werden. Adobe Reader 8.1 oder hoeher benötigt. Error code:“, HTMLLoader.pdfCapability);
}
}
// Überprüfen, ob PDFs angezeigt werden können
checkPDFCapability();
// neuer HTMLLoader
var myPDF:HTMLLoader = new HTMLLoader();
// URL des PDFs
var request:URLRequest = new URLRequest(„http://www.adobe.com/devnet/pdf/pdfs/ISOFormatting_070604C.pdf“);
// Größe und Position festlegen
myPDF.width = 640;
myPDF.height = 480;
myPDF.x = 100;
myPDF.y = 50;
// laden
myPDF.load(request);
// event listener
myPDF.addEventListener(Event.COMPLETE, onComplete);
function onComplete(evt:Event) {
// der Bühne hinzufügen
this.addChild(myPDF);
// Preloader ausblenden
preloader.visible = false;
}
[/as]
Download: Quelldatei (.fla)
Link: Rendering PDF content in AIR applications
PS: Auf Mac OS X 10.5.2 hatte ich Probleme. Statt des PDFs wurde nur ein graues Rechteck angezeigt. Keine Ahnung, woran das liegt …
Hello,
Is it possible to view the source code of AIR application?
Regards
Hi Pierre!
The Download link had a wrong title. Actually, it’s the .fla source code for Flash.
Hallo,
ich hatte dasselbe Problem auf dem Mac. Lösung war das gnaze ohne myPDF.addEventListener(Event.COMPLETE, onComplete); zu machen, und this.addChild(myPDF); direkt aufzurufen.
Dann gehts…. irgendwie kommt er nicht mit dem Eventhandler klar.
Ausserdem sollte das ganze in eine UIComponent gepackt werden.
Super, danke für den Hinweis.