Ajout d’un contenu PDF dans AIRAdobe AIR 1.0 et ultérieur Les applications qui s’exécutent sous Adobe® AIR® peuvent non seulement créer un contenu SWF ou HTML, mais également un contenu PDF. Les applications AIR créent un contenu PDF à l’aide de la classe HTMLLoader, du moteur WebKit et du module externe du navigateur Adobe® Reader®. Dans une application AIR, le contenu PDF peut s’étendre sur toute la hauteur et toute la largeur de votre application ou bien sur une partie de l’interface. Les contrôles du module externe du navigateur Adobe Reader affichent les fichiers PDF dans une application AIR. Les modifications apportées à l’interface de la barre d’outils de Reader (les contrôles de position, d’ancrage et de visibilité, par exemple) sont réactivées lors de l’affichage ultérieur de fichiers PDF dans les applications AIR et le navigateur. Important : pour afficher un contenu PDF dans AIR, l’utilisateur doit avoir installé Adobe Reader ou Adobe® Acrobat® version 8.1 (ou une version ultérieure).
Détection des capacités PDFSi l’utilisateur ne dispose pas d’Adobe Reader ou d’Adobe Acrobat 8.1 ou ultérieur, le contenu PDF ne s’affiche pas dans une application AIR. Pour vous rendre compte si un utilisateur est en mesure de produire un contenu PDF, il faut d’abord vérifier la propriété HTMLLoader.pdfCapability. Elle est définie sur l’une des constantes suivantes de la classe HTMLPDFCapability :
Sous Windows, si Adobe Acrobat ou Adobe Reader version 7.x (ou une version ultérieure) s’exécute sur le système de l’utilisateur, c’est cette version-là qui est utilisée, même si une version plus récente qui prend en charge les contenus PDF est installée. Dans ce cas, si la valeur de la propriété pdfCapability est HTMLPDFCapability.STATUS_OK, lorsqu’une application AIR tente de charger un contenu PDF, la version la plus ancienne d’Acrobat ou de Reader affiche un message d’avertissement et aucune exception n’est renvoyée dans l’application AIR. Si cette situation est susceptible de se produire chez vos utilisateurs finaux, pensez à leur fournir des instructions pour qu’ils quittent Acrobat tandis qu’ils exécutent leur application. Vous pourriez afficher ces instructions si le contenu PDF ne se charge pas dans un délai raisonnable. Sous Linux, AIR recherche Adobe Reader dans le chemin exporté par l’utilisateur (s’il contient la commande acroread) et dans le répertoire /opt/Adobe/Reader. Le code suivant détecte si un utilisateur est en mesure d’afficher les contenus PDF dans une application AIR. Si tel n’est pas le cas, le code recherche le code d’erreur correspondant à l’objet d’erreur HTMLPDFCapability : if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK) { trace("PDF content can be displayed"); } else { trace("PDF cannot be displayed. Error code:", HTMLLoader.pdfCapability); } Chargement du contenu PDFVous pouvez ajouter un PDF à une application AIR en créant une occurrence de HTMLLoader, en paramétrant ses dimensions et en chargeant le chemin d’un PDF. L’exemple suivant charge un PDF à partir d’un site externe. Remplacez l’URLRequest par le chemin qui mène à un PDF externe disponible. 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); Vous pouvez également charger du contenu depuis des modèles d’URL file et des modèles d’URL spécifiques à AIR, comme app et app-storage. Par exemple, le code suivant charge le fichier test.pdf dans le sous-répertoire du PDF contenu dans le répertoire de l’application : app:/js_api_reference.pdf Pour plus d’informations sur les modèles d’URL d’AIR, voir la section Modèles d’URI. Programmation du contenu PDFVous pouvez utiliser JavaScript pour contrôler le contenu PDF de la même façon que vous le feriez dans une page Web du navigateur. Les extensions JavaScript incorporées dans Acrobat fournissent les fonctions suivantes, entre autres :
Des détails complets sur les extensions de JavaScript pour Adobe Acrobat se trouvent sur le site Adobe Acrobat Developer Connection à l’adresse http://www.adobe.com/devnet/acrobat/javascript.html. Principes de communication HTML-PDFJavaScript dans une page HTML peut envoyer un message à JavaScript dans un contenu PDF par un appel à la méthode postMessage() de l’objet DOM représentant le contenu PDF. Par exemple, examinez le contenu PDF intégré ci-dessous : <object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/> Le code JavaScript suivant dans le contenu HTML envoie un message au JavaScript du fichier PDF : pdfObject = document.getElementById("PDFObj"); pdfObject.postMessage(["testMsg", "hello"]); Le fichier PDF peut contenir JavaScript pour recevoir ce message. Vous pouvez ajouter du code JavaScript aux fichiers PDF dans certains contextes au niveau du document, du dossier, de la page, du champ ou du lot. Nous n’aborderons ici que le contexte au niveau du document, celui qui définit les scripts qui sont évalués lorsque le document PDF s’ouvre. Un fichier PDF peut ajouter une propriété messageHandler à l’objet hostContainer. La propriété messageHandler est un objet qui définit les fonctions du gestionnaire pour répondre aux messages. Par exemple, le code ci-dessous définit la fonction appelée à répondre aux messages provenant du fichier PDF du conteneur hôte. Celui-ci constitue le contenu HTML qui a intégré le fichier PDF : this.hostContainer.messageHandler = {onMessage: myOnMessage}; function myOnMessage(aMessage) { if(aMessage[0] == "testMsg") { app.alert("Test message: " + aMessage[1]); } else { app.alert("Error"); } } Le code JavaScript de la page HTML peut appeler la méthode postMessage() de l’objet PDF contenu dans la page. L’appel de cette méthode envoie un message "Hello from HTML" au JavaScript, au niveau du document, dans le fichier PDF : <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> Pour consulter un exemple plus complexe, ainsi que des informations sur l’utilisation d’Acrobat 8 pour ajouter du code JavaScript à un fichier PDF, voir Programmation croisée du contenu PDF dans Adobe AIR. Programmation du contenu PDF depuis ActionScriptLe code ActionScript (dans un contenu SWF) ne peut pas communiquer directement avec JavaScript dans un contenu PDF. Toutefois, ActionScript peut communiquer avec le JavaScript de la page HTML chargée dans un objet HTMLLoader qui charge le contenu PDF. Ce code JavaScript peut communiquer avec le JavaScript dans le fichier PDF chargé. Pour plus d’informations, voir la section Programmation HTML et JavaScript dans AIR. Limites connues pour du contenu PDF dans AIRLe contenu PDF dans Adobe AIR a les limites suivantes :
|
|