Cómo añadir contenido PDF en AIRAdobe AIR 1.0 y posterior Las aplicaciones que se ejecutan en Adobe® AIR® pueden representar no sólo contenido SWF y HTML, sino además, contenido PDF. Las aplicaciones de AIR representan el contenido PDF utilizando la clase HTMLLoader, el motor WebKit y el plug-in Adobe® Reader®. En una aplicación de AIR, el contenido PDF puede ocupar toda la altura y anchura de la aplicación, o sólo una parte de la interfaz. El plugin del navegador de Adobe Reader controla la visualización de archivos PDF en una aplicación de AIR. Las modificaciones de la interfaz de barra de herramientas de Reader (como las de posición, anclaje y visibilidad) se mantienen al visualizar posteriormente archivos PDF tanto en las aplicaciones de AIR como en el navegador. Importante: para poder representar contenido PDF en AIR, el usuario debe tener instalado Adobe Reader o Adobe® Acrobat® versión 8.1 o posterior.
Detección de la capacidad de PDFSi el usuario no tiene instalada la versión 8.1 o posterior de Adobe Reader o Adobe Acrobat, el contenido PDF no se visualiza en las aplicaciones de AIR. Para detectar si un usuario puede representar contenido PDF, compruebe primero la propiedad HTMLLoader.pdfCapability. Esta propiedad se define en una de las siguientes constantes de la clase HTMLPDFCapability:
en Windows, si está funcionando Adobe Acrobat o Adobe Reader versión 7.x o posterior en el sistema del usuario, ésa es la versión que se utiliza aunque se instale una versión posterior compatible con la carga de PDF cargado. En este caso, si el valor de la propiedad pdfCampability es HTMLPDFCapability.STATUS_OK, cuando una aplicación de AIR intenta cargar contenido PDF, la versión anterior de Acrobat o Reader presenta un aviso (y no se emite ninguna excepción en la aplicación de AIR). Si ésta es una situación posible para los usuarios, considere facilitarles instrucciones para que cierren Acrobat mientras ejecutan la aplicación de AIR. Puede convenir que aparezcan estas instrucciones si el contenido PDF no se carga en un plazo de tiempo aceptable. En Linux, AIR busca Adobe Reader en la RUTA exportada por el usuario (si contiene el comando acroread) y en el directorio /opt/Adobe/Reader. El siguiente código detecta si un usuario puede visualizar contenido PDF en una aplicación de AIR. Si el usuario no puede visualizar PDF, se rastrea el código de error que corresponde al objeto de error HTMLPDFCapability: if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK)
{
trace("PDF content can be displayed");
}
else
{
trace("PDF cannot be displayed. Error code:", HTMLLoader.pdfCapability);
}
Carga de contenido PDFSe puede añadir contenido PDF a una aplicación de AIR creando una instancia de HTMLLoader, configurando sus dimensiones y cargando la ruta de un archivo PDF. El siguiente ejemplo carga un archivo PDF desde un sitio externo. Sustituya el valor de URLRequest por la ruta a un archivo PDF externo 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);
También se puede cargar contenido desde las URL de archivos y esquemas de URL específicos para AIR, como app y app-storage. En el siguiente ejemplo el código carga el archivo test.pdf en el subdirectorio de PDF del directorio de la aplicación: app:/js_api_reference.pdf Para obtener más información sobre los esquemas de URL de AIR, consulte Esquemas de URI. Uso de scripts con el contenido PDFSe puede utilizar JavaScript para controlar el contenido PDF del mismo modo que en una página web visualizada en el navegador. Las extensiones de JavaScript para Acrobat ofrecen las siguientes funciones, entre otras:
Para obtener todos los detalles de la extensiones de JavaScript para Adobe Acrobat, consulte el Centro de desarrollo de Adobe Acrobat en http://www.adobe.com/devnet/acrobat/javascript.html (en inglés). Aspectos básicos de la comunicación HTML-PDFJavaScript en una página HTML puede enviar un mensaje a JavaScript en contenido PDF llamando al método postMessage() del objeto DOM que representa el contenido PDF. Por ejemplo, tomemos el siguiente contenido PDF incorporado: <object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/> El siguiente código JavaScript del contenido HTML envía un mensaje a JavaScript del archivo PDF: pdfObject = document.getElementById("PDFObj");
pdfObject.postMessage(["testMsg", "hello"]);
El archivo PDF puede incluir JavaScript para recibir este mensaje. Se puede añadir código JavaScript a archivos PDF en algunos contextos, entre ellos los contextos a nivel de documento, carpeta, página, campo y lote. Aquí sólo trataremos el contexto a nivel de documento, que define los scripts que se evalúan al abrirse el documento PDF. Un archivo PDF puede añadir una propiedad messageHandler al objeto hostContainer. La propiedad messageHandler es un objeto que define las funciones del controlador para responder a los mensajes. En el siguiente ejemplo, el código define la función para gestionar mensajes que recibe del contenedor host (que es el contenido HTML que incorpora el archivo PDF) el archivo PDF: this.hostContainer.messageHandler = {onMessage: myOnMessage};
function myOnMessage(aMessage)
{
if(aMessage[0] == "testMsg")
{
app.alert("Test message: " + aMessage[1]);
}
else
{
app.alert("Error");
}
}
El código JavaScript de una página HTML puede llamar al método postMessage() del objeto PDF contenido en la página. Al llamar a este método se envía un mensaje ("Hello from HTML") a JavaScript a nivel de documento en el archivo 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>
Para ver un ejemplo más avanzado, así como información sobre el uso de Acrobat 8 para añadir JavaScript a un archivo PDF, consulte Creación de scripts entre contenidos PDF en Adobe AIR. Uso de scripts con el contenido PDF en ActionScriptEl código ActionScript (en contenido SWF) no puede comunicarse directamente con JavaScript en contenido PDF. Sin embargo, ActionScript puede comunicarse con el código JavaScript en la página HTML cargada en un objeto HTMLLoader que carga contenido PDF, y ese código JavaScript puede comunicarse con el JavaScript que está cargado en el archivo PDF. Para ver más información, consulte Programación con HTML y JavaScript en AIR. Limitaciones conocidas del contenido PDF en AIREl contenido PDF en Adobe AIR tiene las limitaciones siguientes:
|
|