Signatur
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
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.';
?>
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.';
?>
// 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.