Signatur
Beschreibung
ps_new() ist der Einstiegspunkt der ps-Erweiterung (pslib) für PHP. Die Funktion initialisiert eine neue PostScript-Dokumentstruktur im Speicher und gibt ein Ressourcen-Handle zurück, über das alle weiteren PostScript-Funktionen angesprochen werden.
Das zurückgegebene Handle wird bei nahezu jeder anderen ps_*-Funktion als erstes Argument übergeben. Es enthält den gesamten Dokumentzustand wie Seiten, Grafikparameter, Schriften und den aktuellen Zeichenpfad. Ein typischer Workflow sieht wie folgt aus: ps_new() → ps_open_file() (oder ps_open_mem()) → Seiten und Inhalte erzeugen → ps_close() → ps_delete().
Nach der Arbeit mit dem Dokument sollte stets ps_delete() aufgerufen werden, um den intern allokierten Speicher wieder freizugeben. Ohne diesen Aufruf kann es in lang laufenden Prozessen zu Speicherlecks kommen.
Die ps-Erweiterung eignet sich für die serverseitige Erzeugung von PostScript- und PDF-Druckdokumenten, zum Beispiel für Rechnungen, Etiketten oder Berichte, die direkt an einen PostScript-fähigen Drucker gesendet werden sollen.
Rückgabewert
false zurückgegeben.Beispiele
Einfaches PostScript-Dokument erstellen
<?php
// Neues PS-Dokumentobjekt erzeugen
$ps = ps_new();
if (!$ps) {
die('Konnte kein PostScript-Dokument erstellen.');
}
// Ausgabe in eine Datei schreiben
ps_open_file($ps, '/tmp/hallo.ps');
// Dokumentinfo setzen
ps_set_info($ps, 'Creator', 'Mein PHP-Skript');
ps_set_info($ps, 'Title', 'Hallo PostScript');
// Erste Seite beginnen (A4: 595 x 842 Punkte)
ps_begin_page($ps, 595, 842);
// Schrift laden und setzen
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 24);
// Text ausgeben
ps_show_xy($ps, 'Hallo, PostScript!', 100, 700);
// Seite beenden
ps_end_page($ps);
// Dokument schließen und Ressource freigeben
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei wurde erfolgreich erstellt.';
?>
PostScript-Ausgabe direkt an den Browser senden
<?php
$ps = ps_new();
if (!$ps) {
die('Initialisierung fehlgeschlagen.');
}
// Ausgabe in den Speicher (kein Dateiname → Buffer)
ps_open_file($ps, '');
ps_begin_page($ps, 595, 842);
$font = ps_findfont($ps, 'Times-Roman', '', 0);
ps_setfont($ps, $font, 16);
ps_show_xy($ps, 'Testdokument', 72, 750);
ps_end_page($ps);
ps_close($ps);
// Pufferinahlt auslesen und als Download ausgeben
$buffer = ps_get_buffer($ps);
header('Content-Type: application/postscript');
header('Content-Disposition: attachment; filename="dokument.ps"');
header('Content-Length: ' . strlen($buffer));
echo $buffer;
ps_delete($ps);
?>
// Wichtig · Fallstricke
Speicherverwaltung: Das von ps_new() erzeugte Handle belegt intern Speicher in der pslib-Bibliothek. Stellen Sie sicher, dass nach der Verwendung immer ps_delete() aufgerufen wird – auch im Fehlerfall –, um Speicherlecks zu vermeiden.
Erweiterungsverfügbarkeit: Die ps-Erweiterung ist nicht Teil des PHP-Standardlieferumfangs und muss separat über PECL (pecl install ps) installiert werden. Außerdem wird die externe Bibliothek pslib benötigt. Prüfen Sie mit extension_loaded('ps'), ob die Erweiterung verfügbar ist.
Deprecation: Die Erweiterung ist nicht sehr aktiv gepflegt. Für neue Projekte kann es sinnvoll sein, Alternativen wie FPDF, TCPDF oder die cairo-Erweiterung zu evaluieren.