JavaScript 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í solo 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
.