Start · Sprachen · PHP · Referenz · ps_stroke

ps_stroke

Funktion

Zeichnet den aktuellen Pfad als Linie (Stroke) im PostScript-Dokument und löscht ihn anschließend.

Kategorie: misc

Signatur

ps_stroke(resource $psdoc): bool

Beschreibung

ps_stroke() ist Teil der PS-Erweiterung (pslib) für PHP und wird verwendet, um den aktuell definierten Pfad in einem PostScript-Dokument sichtbar zu machen, indem er mit der aktuell gesetzten Linienfarbe und Linienbreite gezeichnet wird. Nach dem Zeichnen wird der Pfad automatisch aus dem Grafikzustand entfernt.

Im Gegensatz zu ps_fill(), das einen Pfad füllt, bewirkt ps_stroke() nur das Umranden (Stroken) des Pfades. Es ist möglich, mit ps_fill_stroke() beide Operationen in einem Schritt durchzuführen. Typische Anwendungsfälle sind das Zeichnen von Linien, Rechtecken, Kreisen oder beliebigen Kurven in PostScript-Dokumenten.

Vor dem Aufruf von ps_stroke() sollten Pfadelemente wie ps_moveto(), ps_lineto(), ps_curveto() oder ps_arc() sowie ggf. Linienstil-Einstellungen (Farbe via ps_setcolor(), Breite via ps_setlinewidth()) gesetzt worden sein.

Die Funktion gehört zur ps-Extension, die in PHP nicht standardmäßig verfügbar ist und separat als PECL-Paket installiert werden muss.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, die mit ps_new() erstellt und mit ps_open_file() geöffnet wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall (z. B. wenn keine gültige Dokumentressource übergeben wurde oder kein offener Pfad vorhanden ist).

Beispiele

Einfache Linie in einem PostScript-Dokument zeichnen

<?php
// PostScript-Dokument erstellen
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/beispiel.ps')) {
    die('Konnte Datei nicht öffnen');
}

ps_set_info($ps, 'Creator', 'PHP ps_stroke Beispiel');
ps_begin_page($ps, 595, 842); // DIN A4 in Punkten

// Linienfarbe auf Schwarz setzen
ps_setcolor($ps, 'stroke', 'rgb', 0.0, 0.0, 0.0, 0.0);

// Linienbreite setzen
ps_setlinewidth($ps, 2.0);

// Pfad definieren: Linie von (50, 700) nach (400, 700)
ps_moveto($ps, 50, 700);
ps_lineto($ps, 400, 700);

// Pfad als Linie zeichnen
ps_stroke($ps);

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

echo 'PostScript-Dokument wurde erfolgreich erstellt.';
?>
PostScript-Dokument wurde erfolgreich erstellt.

Rechteck-Umriss mit ps_stroke zeichnen

<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/rechteck.ps');

ps_set_info($ps, 'Creator', 'Rechteck-Beispiel');
ps_begin_page($ps, 595, 842);

// Blaue Linie, 3 Punkte breit
ps_setcolor($ps, 'stroke', 'rgb', 0.0, 0.0, 1.0, 0.0);
ps_setlinewidth($ps, 3.0);

// Rechteck-Pfad definieren
ps_moveto($ps, 100, 600);
ps_lineto($ps, 300, 600);
ps_lineto($ps, 300, 750);
ps_lineto($ps, 100, 750);
ps_closepath($ps); // Pfad schließen (zurück zum Startpunkt)

// Nur den Umriss zeichnen (nicht füllen)
ps_stroke($ps);

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

echo 'Rechteck-Umriss wurde gezeichnet.';
?>
Rechteck-Umriss wurde gezeichnet.

// Wichtig · Fallstricke

Hinweis zur Extension: Die ps-Erweiterung ist nicht Teil des PHP-Standardlieferumfangs. Sie muss über PECL installiert und in der php.ini aktiviert werden (extension=ps.so bzw. extension=php_ps.dll). Auf vielen Hosting-Umgebungen ist sie nicht verfügbar.

Pfad wird geleert: Nach dem Aufruf von ps_stroke() wird der aktuelle Pfad gelöscht. Soll derselbe Pfad sowohl gestroked als auch gefüllt werden, muss ps_fill_stroke() verwendet werden oder der Pfad muss erneut aufgebaut werden.

Grafikzustand: Linienstil-Eigenschaften (Farbe, Breite, Dash-Muster) sollten vor dem Definieren des Pfades gesetzt werden, da sie zum Zeitpunkt des ps_stroke()-Aufrufs gelten.