Adobe AIR PDFs laden

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:

Actionscript:
  1. import flash.html.*;
  2. import flash.events.*;
  3.  
  4. function checkPDFCapability():void {
  5.  
  6.     if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK) {
  7.         trace("PDFs können dargestellt werden.");
  8.     } else
  9.     {
  10.         trace("PDFs können nicht dargestellt werden. Adobe Reader 8.1 oder hoeher benötigt. Error code:", HTMLLoader.pdfCapability);
  11.     }
  12. }
  13.  
  14. // Überprüfen, ob PDFs angezeigt werden können
  15. checkPDFCapability();
  16.  
  17. // neuer HTMLLoader
  18. var myPDF:HTMLLoader = new HTMLLoader();
  19.  
  20. // URL des PDFs
  21. var request:URLRequest = new URLRequest("http://www.adobe.com/devnet/pdf/pdfs/ISOFormatting_070604C.pdf");
  22.  
  23.  
  24. // Größe und Position festlegen
  25. myPDF.width = 640;
  26. myPDF.height = 480;
  27. myPDF.x = 100;
  28. myPDF.y = 50;
  29.  
  30. // laden
  31. myPDF.load(request);
  32.  
  33. // event listener
  34. myPDF.addEventListener(Event.COMPLETE, onComplete);
  35.  
  36. function onComplete(evt:Event) {
  37.    
  38.     // der Bühne hinzufügen
  39.     this.addChild(myPDF);
  40.    
  41.     // Preloader ausblenden
  42.     preloader.visible = false;
  43. }

Download: Quelldatei (.fla)
Link: Rendering PDF content in AIR applications