Signatur
Beschreibung
ps_continue_text() ist Teil der PS-Erweiterung (pslib) für PHP und ermöglicht es, mehrzeiligen Text in PostScript-Dokumenten auszugeben. Die Funktion schreibt den übergebenen $text in die nächste Zeile, wobei der Zeilenabstand automatisch anhand der aktuell eingestellten Schriftgröße und des Zeilenabstand-Parameters berechnet wird.
Typischerweise wird ps_continue_text() nach einem ersten Aufruf von ps_show() oder ps_show_xy() verwendet, wenn man Textblöcke zeilenweise aufbauen möchte, ohne für jede Zeile die Y-Koordinate manuell zu verwalten. Der Zeilenabstand lässt sich über den PS-Parameter leading steuern.
Bevor diese Funktion aufgerufen wird, muss ein PostScript-Dokument mit ps_new() und ps_begin_page() geöffnet sowie eine Schrift mit ps_setfont() gesetzt worden sein. Ohne vorherige Positionierung per ps_set_text_pos() oder ps_show_xy() kann das Ergebnis undefiniert sein.
Die Funktion eignet sich besonders für die Ausgabe von Adressblöcken, Listeneinträgen oder anderen kurzen mehrzeiligen Textbereichen in generierten PDF- oder PostScript-Dateien.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Eine gültige PostScript-Dokumentressource, wie sie von ps_new() zurückgegeben wird. |
|
| $text Pflicht | string | Der auszugebende Text, der in der nächsten Zeile des PostScript-Dokuments erscheinen soll. |
Rückgabewert
true bei Erfolg zurück, false im Fehlerfall (z. B. wenn kein gültiges Dokument oder keine Schrift gesetzt ist).Beispiele
Mehrzeiligen Text in ein PostScript-Dokument schreiben
<?php
// PostScript-Dokument erstellen und in Datei schreiben
$ps = ps_new();
if (!$ps) {
die('Konnte PostScript-Ressource nicht erstellen.');
}
ps_open_file($ps, 'ausgabe.ps');
ps_set_info($ps, 'Creator', 'PHP ps_continue_text Beispiel');
ps_set_info($ps, 'Title', 'Mehrzeiliger Text');
ps_begin_page($ps, 596, 842); // A4-Seite
// Schrift laden und setzen
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 12.0);
// Zeilenabstand festlegen (leading)
ps_set_parameter($ps, 'leading', '16');
// Erste Zeile positionieren und ausgeben
ps_show_xy($ps, 'Zeile 1: Hallo, Welt!', 50, 750);
// Weitere Zeilen automatisch darunter ausgeben
ps_continue_text($ps, 'Zeile 2: Dies ist die zweite Zeile.');
ps_continue_text($ps, 'Zeile 3: Und hier die dritte Zeile.');
ps_continue_text($ps, 'Zeile 4: Abschluss des Textblocks.');
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Dokument erfolgreich erstellt.';
?>
Adressblock in PostScript-Dokument ausgeben
<?php
$ps = ps_new();
ps_open_file($ps, 'adresse.ps');
ps_set_info($ps, 'Title', 'Adressblock');
ps_begin_page($ps, 596, 842);
$font = ps_findfont($ps, 'Times-Roman', '', 0);
ps_setfont($ps, $font, 11.0);
ps_set_parameter($ps, 'leading', '14');
// Empfängeradresse ausgeben
$adresse = [
'Max Mustermann',
'Musterstraße 42',
'12345 Musterstadt',
'Deutschland',
];
// Erste Zeile positionieren
ps_show_xy($ps, $adresse[0], 72, 680);
// Restliche Zeilen fortsetzen
for ($i = 1; $i < count($adresse); $i++) {
ps_continue_text($ps, $adresse[$i]);
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Adressblock-Dokument erstellt.';
?>
// Wichtig · Fallstricke
Erweiterung erforderlich: ps_continue_text() ist Teil der ps-Erweiterung, die auf der externen Bibliothek pslib basiert. Diese Erweiterung ist standardmäßig nicht in PHP enthalten und muss separat installiert und aktiviert werden. Unter Linux kann pslib meist über den Paketmanager bezogen werden (libps-dev).
Zeilenabstand: Der Abstand zwischen den Zeilen wird über den Parameter leading gesteuert, der mit ps_set_parameter() gesetzt werden kann. Wird leading nicht explizit gesetzt, kann der Standardwert zu eng oder unlesbar sein.
Textposition: ps_continue_text() setzt voraus, dass die Textposition zuvor durch ps_show_xy() oder ps_set_text_pos() definiert wurde. Ein Aufruf ohne vorherige Positionierung führt zu undefiniertem Verhalten.