Signatur
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
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.';
?>
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);
?>
// 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.