Signatur
Beschreibung
fdf_set_javascript_action() ermöglicht es, einem Formularfeld in einem FDF-Dokument (Forms Data Format) eine JavaScript-Aktion zuzuweisen. Diese Aktion wird ausgeführt, wenn der angegebene Trigger-Ereignistyp eintritt – etwa wenn der Benutzer ein Feld betritt, verlässt oder dessen Wert ändert.
FDF ist ein von Adobe entwickeltes Format zum Austausch von Formularfelddaten in PDF-Dokumenten. Die FDF-Erweiterung in PHP erlaubt es, solche Dateien programmgesteuert zu erstellen und zu manipulieren. Mit JavaScript-Aktionen lässt sich das Verhalten von PDF-Formularfeldern steuern, z. B. Validierungen oder Berechnungen beim Ausfüllen durchführen.
Der Parameter trigger bestimmt, bei welchem Ereignis das Skript ausgelöst wird. Mögliche Werte sind FDF-Konstanten wie FDFEnter, FDFExit, FDFDown, FDFUp, FDFFormat, FDFValidate, FDFKeystroke und FDFCalculate.
Diese Funktion ist nur verfügbar, wenn PHP mit der FDF-Bibliothek (fdftk) kompiliert wurde. Die Erweiterung gilt als veraltet und wird in modernen PHP-Versionen nicht mehr unterstützt. Für aktuelle Projekte sollten Alternativen wie TCPDF oder FPDI in Betracht gezogen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $fdf_document Pflicht | resource | Eine FDF-Dokumentressource, die zuvor mit fdf_create() oder fdf_open() erstellt wurde. |
|
| $fieldname Pflicht | string | Der Name des Formularfeldes, dem die JavaScript-Aktion zugewiesen werden soll. Muss exakt dem Feldnamen im PDF-Formular entsprechen. | |
| $trigger Pflicht | int | Der Auslöser (Trigger), der die Aktion aktiviert. Erlaubte Werte sind FDF-Konstanten wie FDFEnter, FDFExit, FDFDown, FDFUp, FDFFormat, FDFValidate, FDFKeystroke oder FDFCalculate. |
|
| $script Pflicht | string | Der JavaScript-Code, der beim Eintreten des Triggers ausgeführt werden soll. Wird als Zeichenkette übergeben. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler, z. B. wenn das FDF-Dokument ungültig ist oder der Feldname nicht gefunden werden kann.Beispiele
Validierungs-Skript für ein Pflichtfeld zuweisen
<?php
// Neues FDF-Dokument erstellen
$fdf = fdf_create();
// Feldwert setzen
fdf_set_value($fdf, 'Vorname', 'Max', 0);
// JavaScript-Validierungsaktion beim Verlassen des Feldes hinzufügen
$jsCode = 'if (event.value == "") { app.alert("Das Feld Vorname darf nicht leer sein!"); event.rc = false; }';
fdf_set_javascript_action($fdf, 'Vorname', FDFExit, $jsCode);
// FDF-Datei ausgeben
header('Content-Type: application/vnd.fdf');
fdf_save($fdf);
fdf_close($fdf);
?>
Berechnungsskript für ein Summenfeld zuweisen
<?php
// Neues FDF-Dokument erstellen
$fdf = fdf_create();
// JavaScript-Berechnungsaktion für ein Summenfeld
$jsBerechnung = 'var a = +getField("Betrag1").value; var b = +getField("Betrag2").value; event.value = a + b;';
fdf_set_javascript_action($fdf, 'Summe', FDFCalculate, $jsBerechnung);
// FDF als Datei speichern
fdf_save($fdf, '/tmp/formular.fdf');
fdf_close($fdf);
echo "FDF-Datei mit Berechnungsaktion erfolgreich erstellt.";
?>
// Wichtig · Fallstricke
Veraltete Erweiterung: Die FDF-Erweiterung (ext/fdf) gilt seit PHP 5 als veraltet und ist in modernen PHP-Versionen (ab PHP 7) nicht mehr im Standardlieferumfang enthalten. Für neue Projekte sollten alternative PDF-Bibliotheken verwendet werden.
Abhängigkeit: Die Funktion setzt die Installation der proprietären Acrobat FDF Toolkit-Bibliothek von Adobe voraus. Ohne diese Bibliothek steht die FDF-Erweiterung nicht zur Verfügung.
Sicherheitshinweis: JavaScript-Code in PDF-Formularen wird clientseitig im PDF-Reader ausgeführt und unterliegt dessen Sicherheitsmodell. Benutzereingaben sollten niemals unkontrolliert in den JavaScript-Code eingefügt werden, um XSS-ähnliche Angriffe im PDF-Kontext zu vermeiden.