Signatur
Beschreibung
ps_open_file() ist Teil der PHP-PostScript-Erweiterung (ps) und leitet die PostScript-Ausgabe einer $psdoc-Ressource in die angegebene Datei um. Nach dem Aufruf können alle nachfolgenden PostScript-Zeichenoperationen in diese Datei geschrieben werden.
Typischerweise wird die Funktion unmittelbar nach ps_new() aufgerufen, um die Ausgabedatei zu setzen, bevor Seiten, Grafiken oder Text erzeugt werden. Alternativ kann auch ps_open_memory() verwendet werden, wenn die Ausgabe im Arbeitsspeicher gehalten werden soll.
Nach Abschluss der PostScript-Erzeugung sollte die Datei mit ps_close() geschlossen werden, um sicherzustellen, dass alle Puffer geleert und die PostScript-Strukturen korrekt abgeschlossen werden.
- Ist die Datei nicht beschreibbar oder der Pfad ungültig, gibt die Funktion
falsezurück. - Die Erweiterung muss mit der libps-Bibliothek kompiliert worden sein.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Eine gültige PostScript-Ressource, wie sie von ps_new() zurückgegeben wird. |
|
| $filename Pflicht | string | Pfad zur Datei, in die die PostScript-Daten geschrieben werden sollen. Der Pfad muss für den PHP-Prozess beschreibbar sein. |
Rückgabewert
true zurück, wenn die Datei erfolgreich geöffnet wurde, andernfalls false (z. B. bei fehlenden Schreibrechten oder ungültigem Pfad).Beispiele
Einfaches PostScript-Dokument in eine Datei schreiben
<?php
// Neue PS-Ressource erstellen
$psdoc = ps_new();
if (!$psdoc) {
die('Fehler: PS-Ressource konnte nicht erstellt werden.');
}
// Datei zur Ausgabe öffnen
if (!ps_open_file($psdoc, '/tmp/ausgabe.ps')) {
die('Fehler: Datei konnte nicht geöffnet werden.');
}
// Dokumentinformationen setzen
ps_set_info($psdoc, 'Creator', 'PHP PostScript Beispiel');
ps_set_info($psdoc, 'Title', 'Testdokument');
// Seite beginnen (A4: 595 x 842 Punkte)
ps_begin_page($psdoc, 595, 842);
// Einen Text auf der Seite ausgeben
ps_set_value($psdoc, 'textx', 100);
ps_set_value($psdoc, 'texty', 700);
ps_show($psdoc, 'Hallo PostScript!');
// Seite beenden
ps_end_page($psdoc);
// Dokument schließen und Ressource freigeben
ps_close($psdoc);
ps_delete($psdoc);
echo 'PostScript-Datei wurde erfolgreich erstellt.';
?>
Fehlerbehandlung beim Öffnen einer nicht beschreibbaren Datei
<?php
$psdoc = ps_new();
if (!$psdoc) {
die('Fehler: PS-Ressource konnte nicht erstellt werden.');
}
// Versuch, in ein nicht existierendes Verzeichnis zu schreiben
$erfolg = ps_open_file($psdoc, '/nicht/vorhanden/ausgabe.ps');
if ($erfolg === false) {
echo 'Fehler: Die Datei konnte nicht geöffnet werden. Bitte Pfad und Rechte prüfen.';
} else {
ps_begin_page($psdoc, 595, 842);
ps_end_page($psdoc);
ps_close($psdoc);
}
ps_delete($psdoc);
?>
// Wichtig · Fallstricke
Voraussetzung: Die PHP-PostScript-Erweiterung (ps) muss installiert und aktiviert sein. Sie basiert auf der externen libps-Bibliothek, die separat kompiliert werden muss. In vielen Standard-PHP-Installationen ist diese Erweiterung nicht standardmäßig enthalten.
Reihenfolge beachten: ps_open_file() muss vor allen Seiten- und Zeichenoperationen aufgerufen werden. Ein Aufruf nach ps_begin_page() führt zu fehlerhaften oder unvollständigen PostScript-Dokumenten.
Ressource freigeben: Nach dem Schließen mit ps_close() sollte die Ressource immer mit ps_delete() freigegeben werden, um Speicherlecks zu vermeiden.