Start · Sprachen · PHP · Referenz · ps_set_text_pos

ps_set_text_pos

Funktion

Setzt die aktuelle Position für die Textausgabe in einem PostScript-Dokument.

Kategorie: misc

Signatur

ps_set_text_pos(resource $psdoc, float $x, float $y): bool

Beschreibung

ps_set_text_pos() legt die Startposition fest, an der nachfolgende Textausgaben mit Funktionen wie ps_show() oder ps_show_xy() beginnen sollen. Die Koordinaten beziehen sich auf das PostScript-Koordinatensystem, wobei der Ursprung standardmäßig unten links liegt und die Y-Achse nach oben zeigt.

Die Funktion ist besonders nützlich, wenn Text an einer exakten Stelle auf der Seite positioniert werden soll, ohne die Koordinaten direkt bei der Textausgabefunktion angeben zu müssen. So lässt sich die Positionierung von der eigentlichen Ausgabe trennen und der Code übersichtlicher gestalten.

Die gesetzte Textposition gilt so lange, bis sie durch einen erneuten Aufruf von ps_set_text_pos() oder durch Funktionen, die die aktuelle Position implizit verändern, überschrieben wird. Die Einheit der Koordinaten ist der PostScript-Punkt (1/72 Zoll).

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die von ps_new() zurückgegebene PostScript-Dokument-Ressource, in der die Textposition gesetzt werden soll.
$x Pflicht float Die X-Koordinate der neuen Textposition in PostScript-Punkten (1/72 Zoll), gemessen vom linken Seitenrand.
$y Pflicht float Die Y-Koordinate der neuen Textposition in PostScript-Punkten (1/72 Zoll), gemessen vom unteren Seitenrand (PostScript-Koordinatensystem, Ursprung unten links).

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn die übergebene Ressource ungültig ist).

Beispiele

Einfache Textpositionierung auf einer PostScript-Seite

<?php
// Neues PostScript-Dokument erstellen
$ps = ps_new();

ps_open_file($ps, 'ausgabe.ps');
ps_set_info($ps, 'Creator', 'Beispielskript');
ps_begin_page($ps, 595, 842); // A4-Seite

// Schriftart laden und setzen
ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, ps_findfont($ps, 'Helvetica', '', 0), 14.0);

// Textposition setzen: 100pt von links, 700pt von unten
ps_set_text_pos($ps, 100.0, 700.0);

// Text an der gesetzten Position ausgeben
ps_show($ps, 'Hallo, PostScript-Welt!');

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Datei wurde erstellt.';
?>
PostScript-Datei wurde erstellt.

Mehrere Textzeilen mit individueller Positionierung

<?php
$ps = ps_new();
ps_open_file($ps, 'mehrzeilig.ps');
ps_begin_page($ps, 595, 842);

$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 12.0);

$zeilen = [
    'Erste Zeile',
    'Zweite Zeile',
    'Dritte Zeile',
];

$startY = 750.0;
$zeilenhoehe = 20.0;

foreach ($zeilen as $i => $zeile) {
    // Jede Zeile erhält eine eigene Y-Position
    ps_set_text_pos($ps, 80.0, $startY - ($i * $zeilenhoehe));
    ps_show($ps, $zeile);
}

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'Mehrzeilige PS-Datei erstellt.';
?>
Mehrzeilige PS-Datei erstellt.

// Wichtig · Fallstricke

Koordinatensystem: Im Gegensatz zu vielen anderen Grafiksystemen (z. B. HTML-Canvas oder GD) verwendet PostScript einen Ursprung unten links, wobei die Y-Achse nach oben zeigt. Dies kann bei der Berechnung von Positionen zu Verwirrung führen, wenn man aus anderen Systemen kommt.

Abhängigkeit von der pslib-Erweiterung: Die ps_*-Funktionen erfordern die PECL-Erweiterung ps (pslib). Diese ist nicht standardmäßig in PHP enthalten und muss separat installiert werden. In modernen PHP-Versionen (ab PHP 8) ist die Unterstützung möglicherweise eingeschränkt oder veraltet.

Die Funktion ps_show_xy() erlaubt es, Position und Textausgabe in einem einzigen Aufruf zu kombinieren, was in manchen Fällen bequemer ist als die separate Nutzung von ps_set_text_pos() und ps_show().