Start · Sprachen · PHP · Referenz · fdf_open_string

fdf_open_string

Funktion

Liest ein FDF-Dokument aus einem String und gibt eine FDF-Ressource zurück.

seit PHP 4.3.0 Kategorie: io

Signatur

fdf_open_string(string $fdf_data): resource|false

Beschreibung

fdf_open_string() analysiert einen FDF-Daten-String und erzeugt daraus eine interne FDF-Dokumentressource. FDF (Forms Data Format) ist ein von Adobe entwickeltes Format zum Übertragen von Formularfelddaten aus PDF-Formularen. Mit dieser Funktion kann man FDF-Daten verarbeiten, die z. B. direkt als HTTP-POST-Body übermittelt wurden, ohne zuvor eine temporäre Datei anlegen zu müssen.

Der typische Anwendungsfall ist die Verarbeitung von PDF-Formularübermittlungen im Web: Ein PDF-Formular sendet seine Daten als FDF-Datenstrom an einen PHP-Server. Statt diese Daten zunächst auf der Festplatte zu speichern, kann fdf_open_string() sie direkt im Speicher verarbeiten. Dies ist effizienter und sicherer als der Umweg über eine temporäre Datei.

Das zurückgegebene Ressource-Handle kann anschließend mit anderen FDF-Funktionen wie fdf_get_value(), fdf_next_field_name() oder fdf_get_status() verwendet werden. Nach der Verarbeitung sollte die Ressource mit fdf_close() freigegeben werden.

Hinweis: Die FDF-Erweiterung (ext/fdf) ist seit PHP 5.3.0 als PECL-Paket ausgegliedert und gilt als veraltet. Für moderne Anwendungen empfiehlt sich die Verwendung von Bibliotheken wie FPDF, FPDI oder iText.

Parameter

Name Typ Default Beschreibung
$fdf_data Pflicht string Ein String mit den rohen FDF-Dokumentdaten, wie sie typischerweise als HTTP-POST-Body von einem PDF-Formular übermittelt werden.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg ein FDF-Dokument-Handle (Ressource) zurück, das mit weiteren FDF-Funktionen verwendet werden kann. Bei einem Fehler wird false zurückgegeben.

Beispiele

FDF-Formulardaten aus HTTP-POST verarbeiten

<?php
// PDF-Formulare senden FDF-Daten als rohen POST-Body
$fdf_data = file_get_contents('php://input');

if (empty($fdf_data)) {
    die('Keine FDF-Daten empfangen.');
}

$fdf = fdf_open_string($fdf_data);

if ($fdf === false) {
    die('FDF-Daten konnten nicht geparst werden.');
}

// Alle Feldnamen und Werte auslesen
$field = fdf_next_field_name($fdf);
while ($field !== false && $field !== '') {
    $value = fdf_get_value($fdf, $field);
    echo htmlspecialchars($field) . ' = ' . htmlspecialchars($value) . PHP_EOL;
    $field = fdf_next_field_name($fdf, $field);
}

fdf_close($fdf);
?>

Konkreten Feldwert aus FDF-String auslesen

<?php
// Beispiel: Minimaler FDF-String (normalerweise vom PDF-Formular generiert)
$fdf_data = "%FDF-1.2\n1 0 obj\n<< /FDF << /Fields [ << /T (Name) /V (Max Mustermann) >> ] >> >>\nendobj\ntrailer\n<< /Root 1 0 R >>\n%%EOF";

$fdf = fdf_open_string($fdf_data);

if ($fdf !== false) {
    $name = fdf_get_value($fdf, 'Name');
    echo 'Name aus FDF-Formular: ' . htmlspecialchars($name) . PHP_EOL;
    fdf_close($fdf);
} else {
    echo 'Fehler beim Öffnen des FDF-Strings.' . PHP_EOL;
}
?>
Name aus FDF-Formular: Max Mustermann

// Wichtig · Fallstricke

Deprecation: Die FDF-Erweiterung wurde aus dem PHP-Kern entfernt und ist seit PHP 5.3.0 nur noch über PECL verfügbar. In modernen PHP-Versionen (ab PHP 8.x) ist sie praktisch nicht mehr verfügbar. Für neue Projekte sollten alternative Bibliotheken zur PDF-Formularverarbeitung genutzt werden.

Sicherheit: FDF-Daten aus nicht vertrauenswürdigen Quellen sollten als potenziell gefährlich betrachtet werden. Alle ausgelesenen Feldwerte müssen vor der Ausgabe im Browser mit htmlspecialchars() und vor der Datenbankverwendung mit entsprechenden Escape-Methoden gesichert werden, um XSS- und SQL-Injection-Angriffe zu verhindern.

Im Gegensatz zu fdf_open(), das eine Datei vom Dateisystem liest, arbeitet fdf_open_string() direkt im Arbeitsspeicher und ist daher für die Verarbeitung von HTTP-Formulardaten die bevorzugte Methode.