Signatur
Beschreibung
ps_fill() gehört zur ps-Erweiterung (pslib) für PHP und füllt den zuvor definierten Pfad im PostScript-Dokument mit der aktuellen Füllfarbe. Der Pfad wird dabei verbraucht (geschlossen und gefüllt), danach ist der aktuelle Pfad leer.
Die Funktion wird typischerweise eingesetzt, nachdem mit Funktionen wie ps_moveto(), ps_lineto(), ps_curveto() oder ps_arc() ein Pfad aufgebaut wurde. Die Füllfarbe wird zuvor mit ps_setcolor() festgelegt.
Im Unterschied zu ps_fill_stroke() wird bei ps_fill() nur das Innere des Pfades gefüllt, ohne eine Konturlinie zu zeichnen. Für Kontur ohne Füllung steht ps_stroke() zur Verfügung.
Die Funktion ist nützlich, wenn PostScript-Dokumente programmatisch erzeugt werden sollen, etwa für Berichte, Grafiken oder PDFs, die über PostScript generiert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Das PostScript-Dokument-Handle, das von ps_new() zurückgegeben wurde. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
Einfaches gefülltes Rechteck zeichnen
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/example.ps')) {
die('Konnte Datei nicht öffnen.');
}
ps_set_info($ps, 'Creator', 'Beispiel');
ps_set_info($ps, 'Title', 'Gefülltes Rechteck');
ps_begin_page($ps, 595, 842); // DIN A4
// Füllfarbe auf Rot setzen
ps_setcolor($ps, 'fill', 'rgb', 1.0, 0.0, 0.0, 0.0);
// Rechteck als Pfad definieren
ps_moveto($ps, 100, 100);
ps_lineto($ps, 300, 100);
ps_lineto($ps, 300, 300);
ps_lineto($ps, 100, 300);
ps_closepath($ps);
// Pfad füllen (ohne Kontur)
ps_fill($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei erfolgreich erstellt.';
Gefüllten Kreis zeichnen
<?php
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/kreis.ps')) {
die('Konnte Datei nicht öffnen.');
}
ps_set_info($ps, 'Title', 'Gefüllter Kreis');
ps_begin_page($ps, 595, 842);
// Blaue Füllfarbe
ps_setcolor($ps, 'fill', 'rgb', 0.0, 0.0, 1.0, 0.0);
// Kreis mit Mittelpunkt (200, 400) und Radius 100
ps_arc($ps, 200, 400, 100, 0, 360);
// Nur füllen, keine Kontur
ps_fill($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Kreis erfolgreich gezeichnet.';
// Wichtig · Fallstricke
Wichtig: Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und erfordert die Installation der externen Bibliothek pslib. Sie wird seit PHP 7.x kaum noch aktiv gepflegt und ist in modernen PHP-Umgebungen oft nicht verfügbar.
Nach dem Aufruf von ps_fill() wird der aktuelle Pfad geleert. Soll derselbe Pfad sowohl gefüllt als auch mit einer Kontur versehen werden, sollte stattdessen ps_fill_stroke() verwendet werden, um den Pfad nicht doppelt definieren zu müssen.
Die Füllung erfolgt nach der Nonzero Winding Number Rule von PostScript. Für die Even-Odd Rule steht in PostScript das eofill-Operator zur Verfügung, der jedoch in dieser PHP-Erweiterung möglicherweise nicht direkt abgebildet wird.