Signatur
Beschreibung
ps_show_xy2 ist Teil der PS-Erweiterung (pslib) für PHP und ermöglicht es, einen Textstring an einer exakt angegebenen Position (X/Y-Koordinaten) im PostScript-Dokument auszugeben. Im Gegensatz zu ps_show_xy erlaubt diese Funktion zusätzlich die Angabe der Anzahl der auszugebenden Zeichen (len), sodass auch Teilstrings eines längeren Strings ohne vorheriges Kürzen des Strings ausgegeben werden können.
Die Koordinaten x und y beziehen sich auf das PostScript-Koordinatensystem, dessen Ursprung sich standardmäßig in der linken unteren Ecke der Seite befindet. Die aktuelle Schrift, Schriftgröße und alle anderen Texteigenschaften müssen zuvor über entsprechende ps_*-Funktionen gesetzt worden sein.
Diese Funktion ist besonders nützlich, wenn nur ein Teil eines längeren Strings ausgegeben werden soll, etwa bei der Textverarbeitung in Schleifen, beim Umbrechen von Zeilen oder beim Rendern von Textblöcken in PDF/PS-Ausgaben.
Zu beachten ist, dass die PS-Erweiterung in aktuellen PHP-Versionen nicht standardmäßig enthalten ist und die pslib-Bibliothek separat installiert werden muss.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, die zuvor mit ps_new() erstellt und mit ps_open_file() geöffnet wurde. |
|
| $text Pflicht | string | Der auszugebende Textstring. Es wird nur der durch len begrenzte Anteil ausgegeben. |
|
| $len Pflicht | int | Die Anzahl der Zeichen aus text, die ausgegeben werden sollen. So können Teilstrings ohne vorheriges Kürzen des Originalstrings ausgegeben werden. |
|
| $x Pflicht | float | Die X-Koordinate (horizontale Position) im PostScript-Koordinatensystem, gemessen in Punkten (pt) ab dem linken Seitenrand. | |
| $y Pflicht | float | Die Y-Koordinate (vertikale Position) im PostScript-Koordinatensystem, gemessen in Punkten (pt) ab dem unteren Seitenrand. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein gültiges Dokument übergeben wurde oder keine Schrift gesetzt ist).Beispiele
Text an einer bestimmten Position im PostScript-Dokument ausgeben
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 596, 842); // A4-Seite in Punkten
// Schrift setzen
$schrift = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $schrift, 14.0);
$text = 'Hallo Welt und mehr Text';
$laenge = 11; // Nur 'Hallo Welt ' ausgeben
// Text an Position x=100, y=700 ausgeben (nur die ersten 11 Zeichen)
ps_show_xy2($ps, $text, $laenge, 100.0, 700.0);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo "PostScript-Datei erfolgreich erstellt.\n";
?>
Textblock zeilenweise ausgeben mit ps_show_xy2
<?php
$ps = ps_new();
ps_open_file($ps, 'textblock.ps');
ps_begin_page($ps, 596, 842);
$schrift = ps_findfont($ps, 'Times-Roman', '', 0);
ps_setfont($ps, $schrift, 12.0);
$zeilen = [
'Erste Zeile des Dokuments',
'Zweite Zeile mit etwas mehr Inhalt',
'Dritte und letzte Zeile',
];
$yPosition = 750.0;
foreach ($zeilen as $zeile) {
// Nur die ersten 20 Zeichen jeder Zeile ausgeben
ps_show_xy2($ps, $zeile, 20, 80.0, $yPosition);
$yPosition -= 20.0; // Nächste Zeile weiter unten
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo "Textblock ausgegeben.\n";
?>
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: Die PS-Erweiterung ist nicht im Standard-PHP-Paket enthalten. Sie setzt die Installation der pslib-Bibliothek sowie die Kompilierung von PHP mit der --with-ps-Option voraus. Auf vielen Hosting-Umgebungen steht diese Erweiterung nicht zur Verfügung.
Koordinatensystem: Das PostScript-Koordinatensystem hat seinen Ursprung unten links – Y-Koordinaten wachsen nach oben, was dem gewohnten Bildschirm-Koordinatensystem entgegengesetzt ist. Dies kann bei der Positionierung von Text leicht zu Verwirrung führen.
Schrift muss gesetzt sein: Vor dem Aufruf von ps_show_xy2 muss zwingend eine Schrift mit ps_setfont() gesetzt werden, sonst schlägt die Funktion fehl.