Start · Sprachen · PHP · Referenz · ps_include_file

ps_include_file

Funktion

Liest eine externe Datei mit rohem PostScript-Code in ein PostScript-Dokument ein.

Kategorie: misc

Signatur

ps_include_file(resource $psdoc, string $file): bool

Beschreibung

ps_include_file() bindet den Inhalt einer externen Datei mit rohem PostScript-Code in das aktuell geöffnete PostScript-Dokument ein. Dies ist nützlich, wenn vorgefertigte PostScript-Fragmente (z. B. Definitionen, Prozeduren oder Ressourcen) in ein mit der PS-Erweiterung erzeugtes Dokument integriert werden sollen, ohne sie manuell als String übergeben zu müssen.

Die Funktion liest die angegebene Datei direkt und fügt deren Inhalt unverändert an der aktuellen Position im PostScript-Datenstrom ein. Dabei wird keinerlei Transformation oder Validierung des Inhalts vorgenommen — der Entwickler trägt die Verantwortung dafür, dass der eingebundene PostScript-Code korrekt und kompatibel ist.

Diese Funktion ist sinnvoll, wenn umfangreiche oder wiederverwendbare PostScript-Routinen in separaten Dateien verwaltet werden sollen, statt sie direkt im PHP-Code als Zeichenketten zu pflegen. Typische Anwendungsfälle sind benutzerdefinierte Schriftdefinitionen, Prozedurvorgaben oder komplexe Grafikanweisungen.

Voraussetzung für die Nutzung ist die Installation der PECL-Erweiterung ps sowie ein zuvor mit ps_new() und ps_open_file() erstelltes PostScript-Dokument.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Das PostScript-Dokument-Handle, das von ps_new() zurückgegeben wurde.
$file Pflicht string Pfad zur Datei, die den einzubindenden rohen PostScript-Code enthält. Der Pfad kann absolut oder relativ zum aktuellen Arbeitsverzeichnis sein.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false, wenn die Datei nicht geöffnet werden konnte oder ein Fehler beim Einlesen aufgetreten ist.

Beispiele

Externe PostScript-Datei in ein Dokument einbinden

<?php
// PostScript-Dokument erstellen
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/ausgabe.ps')) {
    die('Konnte PostScript-Datei nicht öffnen.');
}

ps_begin_page($ps, 595, 842);

// Externe PostScript-Datei mit eigenen Definitionen einbinden
if (!ps_include_file($ps, '/pfad/zu/meine_definitionen.ps')) {
    echo 'Warnung: Externe Datei konnte nicht eingebunden werden.';
}

// Weiteren PostScript-Inhalt erzeugen
ps_setfont($ps, ps_findfont($ps, 'Helvetica', '', 0), 14.0);
ps_show_xy($ps, 'Hallo Welt', 50, 750);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Dokument erfolgreich erzeugt.';
?>
PostScript-Dokument erfolgreich erzeugt.

Fehlerbehandlung beim Einbinden einer nicht vorhandenen Datei

<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/test.ps');
ps_begin_page($ps, 595, 842);

$datei = '/pfad/nicht/vorhanden/fragment.ps';

if (ps_include_file($ps, $datei)) {
    echo 'Datei erfolgreich eingebunden.';
} else {
    echo 'Fehler: Die Datei "' . htmlspecialchars($datei) . '" konnte nicht eingebunden werden.';
}

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
Fehler: Die Datei "/pfad/nicht/vorhanden/fragment.ps" konnte nicht eingebunden werden.

// Wichtig · Fallstricke

Sicherheitshinweis: Da der Dateipfad direkt übergeben wird und der Inhalt ungefiltert in den PostScript-Datenstrom eingebettet wird, sollten Dateipfade niemals aus nicht vertrauenswürdigen Quellen (z. B. Benutzereingaben) stammen. Andernfalls könnten beliebige Dateien eingebunden werden (Path Traversal).

Der Inhalt der eingebundenen Datei wird nicht auf syntaktische Korrektheit geprüft. Fehlerhafter PostScript-Code kann dazu führen, dass das gesamte Dokument vom PostScript-Interpreter nicht verarbeitet werden kann.

Die Funktion ist Teil der PECL-Erweiterung ps, die nicht standardmäßig in PHP enthalten ist und separat installiert werden muss.