Добавление PDF-содержимого в приложения AIRAdobe AIR 1.0 и более новых версий Приложения для Adobe® AIR® могут выполнять визуализацию не только SWF- и HTML-, но и PDF-содержимого. Приложения AIR осуществляют визуализацию PDF с помощью класса HTMLLoader, механизма WebKit и подключаемого модуля Adobe® Reader® для обозревателей. В приложении AIR PDF-содержимое может либо растягиваться по всей длине и ширине, либо заполнять какую-то часть интерфейса. Внешний модуль Adobe Reader для браузера управляет отображением PDF-файлов в приложениях AIR. Изменения, внесенные в интерфейс панели инструментов Reader (например, элементы управления позицией, привязками и видимостью), сохраняются при последующем просмотре PDF-файлов и в приложениях AIR и в браузере. Важная информация. Для визуализации PDF в среде AIR пользователю необходимо установить Adobe Reader или Adobe® Acrobat® версии 8.1 или более поздней.
Определение возможности отображения PDFЕсли у пользователя не установлено ПО Adobe Reader или Adobe Acrobat 8.1 или более поздней версии, то PDF-содержимое не будет отображаться в приложении AIR. Чтобы определить, будет ли у пользователя отображаться PDF, прежде всего проверьте свойство HTMLLoader.pdfCapability. Его значением будет одно из следующих значений класса HTMLPDFCapability:
Если в системе Windows в данное время запущено ПО Adobe Acrobat или Adobe Reader версии 7.x или более новой, то будет использоваться именно эта версия, даже если установлена более поздняя, поддерживающая PDF. В этом случае, если значение свойства pdfCapability равно HTMLPDFCapability.STATUS_OK, то, когда приложение AIR попытается загрузить PDF, устаревшая версия Acrobat или Reader выведет предупреждение (в приложении AIR при этом не будет сгенерировано исключение). Если такая ситуация возможна, постарайтесь сообщить своим конечным пользователям, что необходимо закрыть Acrobat перед запуском приложения. Например, подобное сообщение можно вывести, если PDF-файл не загружается за разумное время. AIR, установленная на ОС Linux, выполняет поиск Adobe Reader, используя путь (PATH), экспортированный пользователем (если он содержит команду acroread), а также в каталоге /opt/Adobe/Reader. Следующий код определяет, может ли система пользователя отображать PDF-содержимое в приложении AIR. Если система пользователя не поддерживает отображение PDF, отслеживается код ошибки, соответствующий объекту ошибки HTMLPDFCapability. if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK) { trace("PDF content can be displayed"); } else { trace("PDF cannot be displayed. Error code:", HTMLLoader.pdfCapability); } Загрузка PDF-содержимогоPDF можно добавлять в приложения AIR путем создания экземпляра HTMLLoader, задания его размеров и загрузки пути к PDF-файлу. Ниже показано, как загрузить PDF с внешнего сайта. Замените URLRequest путем к доступному внешнему 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); Содержимое также может быть загружено через URL-адреса файлов и характерные для AIR схемы URL-адресов, например app и app-storage. Так, ниже показано, как загрузить файл test.pdf в подкаталог PDFs каталога приложения: app:/js_api_reference.pdf Дополнительную информацию о схемах URL-адресов см. в разделе Схемы URI. Сценарии передачи PDFС помощью JavaScript можно управлять PDF-содержимым точно так же, как это делается на веб-странице в обозревателе. Расширения JavaScript для Acrobat, помимо прочего, предлагают следующие возможности:
Подробную информацию о расширениях JavaScript для Adobe Acrobat см. в Центре разработки Adobe Acrobat по адресу http://www.adobe.com/devnet/acrobat/javascript.html. Основы коммуникации между HTML и PDFJavaScript на HTML-странице может отправлять сообщение JavaScript в PDF-документе, вызывая метод postMessage() объекта DOM, представляющего PDF. Например, рассмотрим следующий вложенный PDF-документ: <object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/> Показанный ниже код JavaScript в HTML-содержимом отправляет сообщение коду JavaScript в PDF-файле: pdfObject = document.getElementById("PDFObj"); pdfObject.postMessage(["testMsg", "hello"]); Для получения этого сообщения PDF-файл может содержать JavaScript. В некоторых контекстах код JavaScript может добавляться к PDF-файлам, например на уровне документа, папки, страницы, поля и группы объектов. Здесь рассматривается только контекст уровня документа, который определяет проверяемые при открытии PDF-документа сценарии. PDF-файл может добавлять объекту hostContainer свойство messageHandler. Свойство messageHandler — это объект, который определяет функции обработчиков, отвечающих на сообщения. Например, следующий код определяет функцию для обработки сообщений, получаемых PDF-файлом от домашнего контейнера (т. е. HTML-содержимого, в которое вложен PDF-файл): this.hostContainer.messageHandler = {onMessage: myOnMessage}; function myOnMessage(aMessage) { if(aMessage[0] == "testMsg") { app.alert("Test message: " + aMessage[1]); } else { app.alert("Error"); } } Код JavaScript на HTML-странице может вызывать метод postMessage() объекта PDF, содержащегося на странице. Вызов этого метода отправляет сообщение ("Hello from HTML") коду JavaScript в 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> Дополнительные примеры и сведения об использовании Acrobat 8 для добавления JavaScript в PDF-файл см. в разделе «Перекрестное выполнение сценариев PDF-содержимого в Adobe AIR». Сценарии передачи PDF из ActionScriptКод ActionScript (в SWF-содержимом) не может напрямую обращаться к JavaScript в PDF-файле. Тем не менее ActionScript может обращаться к коду JavaScript на HTML-странице, загруженной в объект HTMLLoader, который загружает PDF, а этот код JavaScript — к коду JavaScript в загруженном PDF-файле. Дополнительную информацию см. в разделе Программирование HTML и JavaScript в AIR. Известные ограничения PDF в AIRС PDF-содержимым в Adobe AIR связаны некоторые ограничения:
|
|