Start · Sprachen · PHP · Referenz · fdf_save

fdf_save

Funktion

Speichert ein FDF-Dokument in eine Datei oder gibt es direkt an den Browser aus.

seit PHP 4.3.0 Kategorie: io

Signatur

fdf_save(resource $fdf_document, string $filename = ''): bool

Beschreibung

fdf_save() speichert ein zuvor mit fdf_create() oder fdf_open() geöffnetes bzw. erzeugtes FDF-Dokument (Forms Data Format). FDF ist ein von Adobe definiertes Format zum Austausch von Formulardaten aus PDF-Formularen.

Wird der Parameter filename angegeben, schreibt die Funktion das FDF-Dokument in die angegebene Datei auf dem Server-Dateisystem. Wird er weggelassen oder als leerer String übergeben, gibt die Funktion den FDF-Inhalt direkt an die Standardausgabe (d. h. an den Browser) aus. In diesem Fall sollte zuvor der HTTP-Header Content-Type: application/vnd.fdf gesetzt werden, damit der Browser das Dokument korrekt verarbeitet.

Diese Funktion ist vor allem dann nützlich, wenn serverseitig PDF-Formulardaten vorausgefüllt und an den Client übermittelt werden sollen, oder wenn empfangene FDF-Daten verarbeitet und wieder gespeichert werden müssen.

Hinweis: Die FDF-Erweiterung (fdf) ist seit PHP 7.0 nicht mehr im offiziellen PHP-Kern enthalten und als PECL-Erweiterung verfügbar. In PHP 8.x steht sie standardmäßig nicht mehr zur Verfügung.

Parameter

Name Typ Default Beschreibung
$fdf_document Pflicht resource Ein gültiges FDF-Dokumenten-Handle, das von fdf_create() oder fdf_open() zurückgegeben wurde.
$filename string Optionaler Pfad zu einer Datei, in die das FDF-Dokument gespeichert werden soll. Wird dieser Parameter weggelassen oder als leerer String übergeben, wird der Inhalt direkt an die Standardausgabe gesendet.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall (z. B. wenn die Datei nicht geschrieben werden konnte).

Beispiele

FDF-Dokument direkt an den Browser senden

<?php
// HTTP-Header setzen, damit der Browser das FDF verarbeitet
header('Content-Type: application/vnd.fdf');

// Neues FDF-Dokument erstellen
$fdf = fdf_create();

// Formularfeld-Werte setzen
fdf_set_value($fdf, 'Vorname', 'Max', 0);
fdf_set_value($fdf, 'Nachname', 'Mustermann', 0);

// Zugehöriges PDF-Formular angeben
fdf_set_file($fdf, 'https://example.com/formular.pdf');

// FDF-Inhalt direkt ausgeben (kein Dateiname = Ausgabe an Browser)
fdf_save($fdf);

// Ressource freigeben
fdf_close($fdf);
?>

FDF-Dokument in eine Datei auf dem Server speichern

<?php
// Neues FDF-Dokument erstellen
$fdf = fdf_create();

// Formularfeld-Werte setzen
fdf_set_value($fdf, 'Firma', 'Muster GmbH', 0);
fdf_set_value($fdf, 'Ort',   'Berlin',     0);

// FDF-Dokument in eine Datei speichern
$zieldatei = '/var/www/fdf/ausgabe_' . time() . '.fdf';
if (fdf_save($fdf, $zieldatei)) {
    echo 'FDF-Datei erfolgreich gespeichert: ' . $zieldatei;
} else {
    echo 'Fehler beim Speichern der FDF-Datei.';
}

// Ressource freigeben
fdf_close($fdf);
?>
FDF-Datei erfolgreich gespeichert: /var/www/fdf/ausgabe_1700000000.fdf

// Wichtig · Fallstricke

Deprecation / Verfügbarkeit: Die FDF-Erweiterung wurde mit PHP 5.3 als veraltet markiert und ist ab PHP 7.0 nicht mehr im PHP-Kern enthalten. Sie steht nur noch als PECL-Paket zur Verfügung und wird in PHP 8.x kaum noch unterstützt. Für neue Projekte sollte eine alternative PDF-Bibliothek wie FPDF, TCPDF oder mPDF verwendet werden.

Sicherheit: Wird fdf_save() mit einem vom Benutzer beeinflussten Dateipfad aufgerufen, besteht die Gefahr, dass beliebige Dateien überschrieben werden. Dateipfade sollten daher stets validiert und auf erlaubte Verzeichnisse beschränkt werden.

Ausgabereihenfolge: Beim Senden an den Browser darf vor fdf_save() keine andere Ausgabe erfolgt sein, da sonst der HTTP-Header nicht mehr korrekt gesetzt werden kann.