Signatur
Beschreibung
ps_delete() schließt ein PostScript-Dokument und gibt alle zugehörigen Ressourcen frei, die mit ps_new() erzeugt und durch ps_open_file() oder andere Funktionen befüllt wurden. Die Funktion sollte am Ende der Verarbeitung eines PostScript-Dokuments aufgerufen werden, um Speicherlecks zu vermeiden.
Nach dem Aufruf von ps_delete() ist das übergebene Handle ungültig und darf nicht mehr verwendet werden. Alle zuvor geöffneten Dateien und zugewiesenen Fonts, Bilder und Farbräume werden ebenfalls freigegeben.
Die Funktion gehört zur ps-Erweiterung (auch bekannt als pslib), die PostScript-Dokumente programmatisch erzeugen kann. Sie ist das Gegenstück zu ps_new() und sollte immer am Ende eines Dokumenten-Lifecycles aufgerufen werden, idealerweise in einem finally-Block, um die Freigabe bei Ausnahmen sicherzustellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Das PostScript-Dokument-Handle, das zuvor mit ps_new() erstellt wurde. |
Rückgabewert
true bei Erfolg zurück, oder false bei einem Fehler (z. B. wenn das übergebene Handle ungültig ist).Beispiele
Einfaches PostScript-Dokument erstellen und Ressourcen freigeben
<?php
// PostScript-Dokument erzeugen
$ps = ps_new();
if (!$ps) {
die('Fehler: Konnte kein PostScript-Dokument erstellen.');
}
// Datei öffnen und Inhalt schreiben
ps_open_file($ps, 'ausgabe.ps');
ps_set_info($ps, 'Creator', 'Beispielskript');
ps_begin_page($ps, 596, 842);
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 14.0);
ps_show_xy($ps, 'Hallo PostScript!', 100, 700);
ps_end_page($ps);
ps_close($ps);
// Alle Ressourcen freigeben
ps_delete($ps);
echo 'Dokument erfolgreich erstellt und Ressourcen freigegeben.';
?>
Ressourcenfreigabe mit try/finally absichern
<?php
$ps = ps_new();
if (!$ps) {
die('Fehler: Konnte kein PostScript-Dokument erstellen.');
}
try {
ps_open_file($ps, 'dokument.ps');
ps_begin_page($ps, 596, 842);
$font = ps_findfont($ps, 'Times-Roman', '', 0);
ps_setfont($ps, $font, 12.0);
ps_show_xy($ps, 'Inhalt des Dokuments', 72, 750);
ps_end_page($ps);
ps_close($ps);
} finally {
// Ressourcen werden auch bei Ausnahmen immer freigegeben
ps_delete($ps);
}
echo 'Fertig.';
?>
// Wichtig · Fallstricke
Reihenfolge beachten: ps_delete() sollte erst nach ps_close() aufgerufen werden. ps_close() schreibt den abschließenden PostScript-Trailer in die Datei, während ps_delete() den Speicher freigibt. Wird ps_delete() ohne vorheriges ps_close() aufgerufen, kann das erzeugte PostScript-Dokument unvollständig oder beschädigt sein.
Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat über die pslib-Bibliothek installiert werden. Ab PHP 8.x ist die Unterstützung eingeschränkt — prüfe die Verfügbarkeit in deiner Umgebung.