Signatur
Beschreibung
ps_close() beendet ein PostScript-Dokument, das mit den Funktionen der ps-Erweiterung erstellt wurde. Die Funktion schreibt alle noch ausstehenden Daten in die Ausgabedatei und schließt das Dokument ordnungsgemäß ab. Nach dem Aufruf ist die übergebene Ressource nicht mehr verwendbar.
Der Aufruf von ps_close() ist zwingend erforderlich, bevor das erzeugte PostScript-Dokument weiterverwendet oder gelesen werden kann, da erst durch das Schließen die vollständige und gültige PostScript-Struktur (inkl. abschließender %%EOF-Kommentare) in die Datei geschrieben wird.
Typischerweise folgt ps_close() auf alle Zeichenoperationen und auf ps_end_page(), um sicherzustellen, dass alle Seiteninhalte korrekt abgeschlossen sind. Im Anschluss sollte auch ps_delete() aufgerufen werden, um den intern belegten Speicher vollständig freizugeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die PostScript-Ressource, die zuvor mit ps_new() erzeugt wurde. |
Rückgabewert
true bei Erfolg zurück, false im Fehlerfall (z. B. wenn die Ressource ungültig ist oder das Dokument nicht korrekt abgeschlossen werden konnte).Beispiele
Einfaches PostScript-Dokument erstellen und schließen
<?php
// Neue PostScript-Ressource anlegen
$ps = ps_new();
if (!$ps) {
die('Fehler: PostScript-Ressource konnte nicht erstellt werden.');
}
// Ausgabedatei öffnen
if (!ps_open_file($ps, '/tmp/beispiel.ps')) {
die('Fehler: Datei konnte nicht geöffnet werden.');
}
// Seitenformat und Metadaten festlegen
ps_set_info($ps, 'Creator', 'PHP ps-Beispiel');
ps_set_info($ps, 'Title', 'Einfaches Beispiel');
// Erste Seite beginnen (A4: 595 x 842 Punkte)
ps_begin_page($ps, 595, 842);
// Text auf der Seite ausgeben
$fontId = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $fontId, 14.0);
ps_show_xy($ps, 'Hallo, PostScript!', 100, 700);
// Seite beenden
ps_end_page($ps);
// Dokument schließen – schreibt abschließende PS-Struktur
ps_close($ps);
// Speicher freigeben
ps_delete($ps);
echo 'PostScript-Dokument erfolgreich erstellt und geschlossen.';
?>
Mehrere Seiten und korrektes Schließen
<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/mehrere_seiten.ps');
ps_set_info($ps, 'Title', 'Mehrseitiges Dokument');
$fontId = ps_findfont($ps, 'Times-Roman', '', 0);
for ($i = 1; $i <= 3; $i++) {
ps_begin_page($ps, 595, 842);
ps_setfont($ps, $fontId, 12.0);
ps_show_xy($ps, "Seite $i von 3", 100, 750);
ps_end_page($ps);
}
// Dokument ordnungsgemäß schließen
if (ps_close($ps)) {
echo 'Dokument mit 3 Seiten erfolgreich geschlossen.';
} else {
echo 'Fehler beim Schließen des Dokuments.';
}
ps_delete($ps);
?>
// Wichtig · Fallstricke
Reihenfolge beachten: ps_close() muss immer vor ps_delete() aufgerufen werden. Wird ps_delete() ohne vorheriges ps_close() aufgerufen, kann das Dokument unvollständig und damit ungültig sein.
Offene Seiten: Wird ps_close() aufgerufen, während noch eine Seite geöffnet ist (d. h. ps_end_page() wurde nicht aufgerufen), kann das Ergebnis undefiniert oder fehlerhaft sein. Immer sicherstellen, dass alle Seiten zuvor korrekt beendet wurden.
Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat über PECL installiert werden (pecl install ps). Zusätzlich wird die native C-Bibliothek pslib benötigt.