Il codice JavaScript in una pagina HTML può inviare un messaggio al codice JavaScript nel contenuto PDF richiamando il metodo
postMessage()
dell'oggetto DOM che rappresenta il contenuto PDF. Analizzate, ad esempio, il seguente contenuto PDF incorporato:
<object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/>
Il seguente codice JavaScript nel contenuto HTML che lo contiene invia un messaggio al codice JavaScript nel file PDF:
pdfObject = document.getElementById("PDFObj");
pdfObject.postMessage(["testMsg", "hello"]);
Il file PDF può includere codice JavaScript per ricevere questo messaggio. Potete aggiungere codice JavaScript ai file PDF in alcuni contesti, tra i quali i contesti a livello di documento, cartella, pagina, campo e batch. In questa sede tratteremo soltanto il contesto a livello di documento, che definisce gli script che vengono valutati all'apertura del documento PDF.
Un file PDF può aggiungere una proprietà
messageHandler
all'oggetto
hostContainer
. La proprietà
messageHandler
è un oggetto che definisce le funzioni di gestore per rispondere ai messaggi. Ad esempio, il seguente codice definisce la funzione di gestione dei messaggi che il file PDF riceve dal contenitore host (in pratica il contenuto HTML che incorpora il file PDF):
this.hostContainer.messageHandler = {onMessage: myOnMessage};
function myOnMessage(aMessage)
{
if(aMessage[0] == "testMsg")
{
app.alert("Test message: " + aMessage[1]);
}
else
{
app.alert("Error");
}
}
Il codice JavaScript nella pagina HTML può richiamare il metodo
postMessage()
dell'oggetto PDF contenuto nella pagina. Richiamando questo metodo, viene inviato un messaggio (
"Hello from HTML"
) al codice JavaScript del livello documento nel file 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>
Per un esempio più dettagliato e per ulteriori informazioni sull'uso di Acrobat 8 per aggiungere codice JavaScript a un file PDF, vedete
Cross-scripting PDF content in Adobe AIR
(Scambio di script per il contenuto PDF in Adobe AIR).