JavaScript
I documenti PDF possono contenere JavaScript incorporato che viene eseguito nel visualizzatore. TCPDF-Next fornisce metodi per aggiungere script livello-documento tramite Content\JavaScriptManager, accessibile tramite l'API fluente Document.
Tutti i metodi restituiscono static, quindi ogni chiamata può essere concatenata.
Riferimento Rapido
| Metodo | Scopo |
|---|---|
includeJS() | Aggiungi JavaScript livello-documento (esegue quando il PDF si apre) |
addJavascriptObject() | Aggiungi JavaScript come oggetto PDF nominato |
Esempio Base
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Interactive Form with JavaScript', newLine: true)
// JavaScript livello-documento
->includeJS('
function validateEmail(field) {
var email = field.value;
var re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!re.test(email)) {
app.alert("Please enter a valid email address.");
return false;
}
return true;
}
function calculateTotal() {
var qty = this.getField("qty").value;
var price = this.getField("price").value;
this.getField("total").value = (qty * price).toFixed(2);
}
')
// Campi form che usano il JavaScript
->textField('email', 45, null, 80, 8, [
'onBlur' => 'validateEmail(event.target)',
])
->textField('qty', 45, null, 30, 8)
->textField('price', 80, null, 30, 8)
->textField('total', 115, null, 40, 8, [
'readonly' => true,
]);WARNING
Il supporto JavaScript varia per visualizzatore PDF. Adobe Acrobat ha supporto completo per l'API Acrobat JavaScript. Foxit Reader supporta la maggior parte delle funzionalità. I visualizzatori basati browser e app anteprima generalmente non eseguono JavaScript PDF.
includeJS()
$pdf->includeJS(string $script): staticAggiunge JavaScript livello-documento che viene eseguito quando il PDF è aperto. Usa questo per definizioni funzione, variabili globali e logica inizializzazione.
| Parametro | Tipo | Descrizione |
|---|---|---|
$script | string | Codice JavaScript grezzo |
Chiamate multiple appendono script aggiuntivi. Vengono eseguiti nell'ordine in cui sono aggiunti.
addJavascriptObject()
$pdf->addJavascriptObject(string $script): staticAggiunge JavaScript come oggetto PDF nominato. Utile quando gli script devono essere referenziati da altri oggetti PDF (azioni, annotazioni) piuttosto che eseguire all'apertura documento.
Azioni JavaScript su Campi Form
I campi form supportano trigger azione JavaScript tramite il loro array opzioni. Queste azioni si attivano in risposta all'interazione utente con il campo.
| Azione | Trigger |
|---|---|
onFocus | Il campo riceve focus |
onBlur | Il campo perde focus |
onChange | Il valore campo cambia |
validate | Prima che il valore sia committed |
calculate | Quando campi dipendenti cambiano |
format | Dopo che il valore è committed (formatta visualizzazione) |
keystroke | Ad ogni battitura tasto |
$pdf->textField('price', 45, null, 40, 8, [
'format' => 'AFNumber_Format(2, 0, 0, 0, "$", true);',
'keystroke' => 'AFNumber_Keystroke(2, 0, 0, 0, "$", true);',
'validate' => 'if (event.value < 0) { app.alert("Price cannot be negative."); event.rc = false; }',
]);Trigger Stampa e Azioni Apertura
Esegui logica quando il documento è aperto o stampato:
$pdf->includeJS('
app.alert("Welcome! Please fill in all required fields.");
')
->includeJS('
var pp = this.addScript("willPrint", "app.alert(\'This document is confidential.\');");
');Suggerimenti
- Mantieni script concisi. Blocchi grandi aumentano dimensione file e rallentano apertura documento.
- L'API Acrobat JavaScript è documentata nel JavaScript for Acrobat API Reference di Adobe.
- Testa PDF interattivi in Adobe Acrobat per assicurare compatibilità completa prima di distribuire.
- Gli standard PDF/A proibiscono JavaScript. Non includere script se punti alla conformità PDF/A.
- Per calcoli, usa funzioni Acrobat integrate (
AFNumber_Format,AFSimple_Calculate, ecc.) dove possibile.