Start · Sprachen · PHP · Referenz · ps_delete

ps_delete

Funktion

Gibt alle Ressourcen und den Speicher eines PostScript-Dokuments frei und schließt das Dokument.

Kategorie: misc

Signatur

ps_delete(resource $psdoc): bool

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

Typ
bool
Beschreibung
Gibt 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.';
?>
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.';
?>
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.