Start · Sprachen · PHP · Referenz · ps_continue_text

ps_continue_text

Funktion

Setzt Text in der nächsten Zeile eines PostScript-Dokuments fort, ohne die aktuelle Textposition manuell anzupassen.

Kategorie: misc

Signatur

ps_continue_text(resource $psdoc, string $text): bool

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

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