Start · Sprachen · PHP · Referenz · ps_setlinewidth

ps_setlinewidth

Funktion

Setzt die Linienbreite für nachfolgende Zeichenoperationen in einem PostScript-Dokument.

Kategorie: misc

Signatur

ps_setlinewidth(resource $psdoc, float $width): bool

Beschreibung

ps_setlinewidth() legt die Breite von Linien fest, die mit Funktionen wie ps_stroke() oder ps_lineto() im PostScript-Dokument gezeichnet werden. Die Angabe erfolgt in der aktuellen Einheit des Koordinatensystems (standardmäßig Punkte).

Die eingestellte Linienbreite gilt für alle nachfolgenden Zeichenoperationen auf der aktuellen Seite, bis sie erneut geändert wird. Soll die Breite nur temporär verändert werden, empfiehlt sich der Einsatz von ps_save() und ps_restore(), um den Grafikzustand zu sichern und wiederherzustellen.

Typische Anwendungsfälle sind das Zeichnen von Rahmen, Trennlinien, Tabellengittern oder komplexen grafischen Elementen in generierten PDF- oder PS-Dokumenten. Eine Linienbreite von 0 erzeugt in PostScript die kleinstmögliche sichtbare Linie (Haarlinie), was für feine Details nützlich sein kann.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, wie sie von ps_new() zurückgegeben wird.
$width Pflicht float Die gewünschte Linienbreite in der aktuellen Maßeinheit (standardmäßig Punkte). Ein Wert von 1.0 entspricht einem Punkt, 0.0 ergibt die kleinstmögliche sichtbare Linie (Haarlinie).

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall.

Beispiele

Einfache Linie mit bestimmter Breite zeichnen

<?php
$ps = ps_new();
if (!$ps) {
    die('Konnte PostScript-Ressource nicht erstellen.');
}

ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 596, 842); // A4

// Linienbreite auf 2 Punkte setzen
ps_setlinewidth($ps, 2.0);

// Linie von links nach rechts zeichnen
ps_moveto($ps, 50, 700);
ps_lineto($ps, 546, 700);
ps_stroke($ps);

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

echo 'Dokument erfolgreich erstellt.';
?>
Dokument erfolgreich erstellt.

Verschiedene Linienbreiten mit Grafikzustand sichern

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

$breiten = [0.5, 1.0, 2.0, 4.0, 8.0];
$y = 750;

foreach ($breiten as $breite) {
    // Grafikzustand sichern
    ps_save($ps);

    ps_setlinewidth($ps, $breite);
    ps_moveto($ps, 50, $y);
    ps_lineto($ps, 546, $y);
    ps_stroke($ps);

    // Grafikzustand wiederherstellen (setzt Linienbreite zurück)
    ps_restore($ps);

    $y -= 40;
}

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

echo 'Linien mit verschiedenen Breiten gezeichnet.';
?>
Linien mit verschiedenen Breiten gezeichnet.

// Wichtig · Fallstricke

Erweiterung: ps_setlinewidth() gehört zur ps-Erweiterung (pslib), die standardmäßig nicht in PHP enthalten ist und separat installiert werden muss (pecl install ps). Die Erweiterung wird nur noch selten aktiv weiterentwickelt.

Eine Linienbreite von 0.0 erzeugt in PostScript eine sogenannte Haarlinie – die dünnste darstellbare Linie auf dem Ausgabegerät. Dies kann auf verschiedenen Geräten unterschiedlich aussehen und sollte mit Bedacht eingesetzt werden.

Die Linienbreite wird in gerätunabhängigen Einheiten (Punkte) angegeben, sofern das Koordinatensystem nicht explizit skaliert wurde. Negative Werte sind ungültig und führen zu undefiniertem Verhalten.