Hinzufügen von PDF-Inhalten in AIRAdobe AIR 1.0 und höher In Adobe® AIR® ausgeführte Dateien rendern nicht nur SWF- und HTML-Inhalt, sondern auch PDF-Inhalt. AIR-Anwendungen rendern PDF-Inhalt mit der HTMLLoader-Klasse, der WebKit-Engine und dem Browser-Plug-In für Adobe® Reader®. In einer AIR-Anwendung kann PDF-Inhalt die volle Höhe und Breite der Anwendung oder einen Teil der Benutzeroberfläche einnehmen. Das Browser-Plugin für Adobe Reader steuert die Anzeige von PDF-Dateien in einer AIR-Anwendung. Änderungen an der Reader-Symbolleiste (wie Positionssteuerung, Verankerung, Sichtbarkeit) werden bei der weiteren Anzeige von PDF-Dateien in AIR-Anwendungen und im Browser übernommen. Wichtig: Damit PDF-Inhalt in AIR gerendert werden kann, muss Adobe Reader oder Adobe® Acrobat® Version 8.1 oder höher auf dem Benutzersystem installiert sein.
Erkennen der PDF-FunktionalitätWenn der Benutzer Adobe Reader oder Adobe Acrobat 8.1 oder höher nicht installiert hat, wird in einer AIR-Anwendung kein PDF-Inhalt angezeigt. Um herauszufinden, ob ein Benutzer PDF-Inhalt rendern kann, prüfen Sie zunächst die HTMLLoader.pdfCapability-Eigenschaft. Für diese Eigenschaft ist eine der folgenden Konstanten der HTMLPDFCapability-Klasse festgelegt:
Wenn unter Windows Adobe Acrobat oder Adobe Reader Version 7.x oder höher installiert ist und auf dem System des Benutzers ausgeführt wird, wird diese Version verwendet, auch wenn eine höhere Version installiert ist, die das Laden von PDF-Dateien unterstützt. Hat die pdfCapability-Eigenschaft den Wert HTMLPDFCapability.STATUS_OK, zeigt in diesem Fall die alte Version von Acrobat oder Reader einen Warnhinweis an, wenn eine AIR-Anwendung versucht, PDF-Inhalt zu laden (in der AIR-Anwendung wird keine Ausnahme ausgelöst). Wenn diese Situation für die Endbenutzer auftreten kann, sollten Sie Anweisungen zum Schließen von Acrobat in Erwägung ziehen, die beim Ausführen der Anwendung angezeigt werden. Die Anzeige dieser Anweisungen sollte möglicherweise dann erfolgen, wenn der PDF-Inhalt nicht innerhalb eines akzeptablen Zeitraums geladen wird. Unter Linux sucht AIR im vom Benutzer exportierten PATH nach Adobe Reader (falls dieser den acroread-Befehl enthält) und im Verzeichnis „/opt/Adobe/Reader“. Mit dem folgenden Code wird festgestellt, ob der Benutzer PDF-Inhalt in einer AIR-Anwendung anzeigen kann. Wenn der Benutzer keinen PDF-Inhalt anzeigen kann, erfasst der Code den Fehlercode, der dem HTMLPDFCapability-Fehlerobjekt entspricht: if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK)
{
trace("PDF content can be displayed");
}
else
{
trace("PDF cannot be displayed. Error code:", HTMLLoader.pdfCapability);
}
Laden von PDF-InhaltenSie können einer AIR-Anwendung durch Erstellen einer HTMLLoader-Instanz, Festlegen ihrer Dimensionen und Laden des Pfades einer PDF-Datei PDF-Inhalt hinzufügen. Das folgende Beispiel lädt eine PDF-Datei aus einer externen Site. Ersetzen Sie das URLRequest durch den Pfad zu einer verfügbaren externen PDF. var request:URLRequest = new URLRequest("http://www.example.com/test.pdf");
pdf = new HTMLLoader();
pdf.height = 800;
pdf.width = 600;
pdf.load(request);
container.addChild(pdf);
Sie können Inhalt ferner aus Datei-URLs und AIR-spezifischen URL-Schemas wie app und app-storage laden. Der folgende Code lädt die Datei „test.pdf“ im Unterverzeichnis „PDFs“ des Anwendungsverzeichnisses: app:/js_api_reference.pdf Weitere Informationen zu AIR-URL-Schemas finden Sie unter URI-Schemas. Skripterstellung für PDF-InhalteMit JavaScript können Sie PDF-Inhalt genau wie in einer Webseite in einem Browser steuern. JavaScript-Erweiterungen für Acrobat bieten unter anderem folgende Funktionen:
Ausführliche Informationen zu JavaScript-Erweiterungen für Adobe Acrobat finden Sie in der Adobe Acrobat Developer Connection unter http://www.adobe.com/devnet/acrobat/javascript.html. Grundlagen der HTML-PDF-KommunikationJavaScript in einer HTML-Seite kann durch Aufrufen der postMessage()-Methode des DOM-Objekts, das den PDF-Inhalt repräsentiert, eine Nachricht an JavaScript in PDF-Inhalt senden. Betrachten Sie beispielsweise den folgenden eingebetteten PDF-Inhalt: <object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/> Der folgende JavaScript-Code im enthaltenden HTML-Inhalt sendet eine Nachricht an das JavaScript in der PDF-Datei: pdfObject = document.getElementById("PDFObj");
pdfObject.postMessage(["testMsg", "hello"]);
Die PDF-Datei kann JavaScript zum Empfangen dieser Nachricht enthalten. In einigen Kontexten, darunter Kontext auf Dokument-, Ordner-, Seiten-, Feld- oder Batchebene, können Sie PDF-Dateien JavaScript-Code hinzufügen. Hier wird nur auf Kontext auf Dokumentebene, der beim Öffnen des PDF-Dokuments zu bewertende Skripts definiert, eingegangen. Eine PDF-Datei kann dem hostContainer-Objekt eine messageHandler-Eigenschaft hinzufügen. Die messageHandler-Eigenschaft ist ein Objekt, das Prozedurfunktionen zum Reagieren auf Nachrichten definiert. Der folgende Code definiert beispielsweise die Funktion zum Verarbeiten von Nachrichten, die die PDF-Datei vom Hostcontainer (dem HTML-Inhalt, der die PDF-Datei einbettet) erhält: this.hostContainer.messageHandler = {onMessage: myOnMessage};
function myOnMessage(aMessage)
{
if(aMessage[0] == "testMsg")
{
app.alert("Test message: " + aMessage[1]);
}
else
{
app.alert("Error");
}
}
JavaScript-Code in der HTML-Seite kann die postMessage()-Methode des in der Seite enthaltenen PDF-Objekts aufrufen. Beim Aufrufen dieser Methode wird eine Nachricht ("Hello from HTML") an das JavaScript auf Dokumentebene in der PDF-Datei gesendet: <html>
<head>
<title>PDF Test</title>
<script>
function init()
{
pdfObject = document.getElementById("PDFObj");
try {
pdfObject.postMessage(["alert", "Hello from HTML"]);
}
catch (e)
{
alert( "Error: \n name = " + e.name + "\n message = " + e.message );
}
}
</script>
</head>
<body onload='init()'>
<object
id="PDFObj"
data="test.pdf"
type="application/pdf"
width="100%" height="100%"/>
</body>
</html>
Ein komplexeres Beispiel und Informationen zum Verwenden von Acrobat 8 zum Hinzufügen von JavaScript zu einer PDF-Datei finden Sie unter Cross-Scripting von PDF-Inhalt in Adobe AIR. Skripterstellung für PDF-Inhalte aus ActionScriptActionScript-Code (in SWF-Inhalt) kann nicht direkt mit JavaScript in PDF-Inhalt kommunizieren. ActionScript kann jedoch mit dem JavaScript in der in ein HTMLLoader-Objekt geladenen HTML-Seite, das PDF-Inhalt lädt, kommunizieren und dieser JavaScript-Code kann mit dem JavaScript in der geladenen PDF-Datei kommunizieren. Informationen finden Sie unter Programmieren mit HTML und JavaScript in AIR. Bekannte Beschränkungen für PDF-Inhalt in AIRPDF-Inhalt in Adobe AIR unterliegt folgenden Beschränkungen:
|
|