Start · Sprachen · PHP · Referenz · fdf_set_javascript_action

fdf_set_javascript_action

Funktion

Weist einem Formularfeld in einem FDF-Dokument eine JavaScript-Aktion für einen bestimmten Auslöser (Trigger) zu.

seit PHP 4.3.0 Kategorie: io

Signatur

fdf_set_javascript_action(resource $fdf_document, string $fieldname, int $trigger, string $script): bool

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

Typ
bool
Beschreibung
Gibt 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.";
?>
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.