Start · Sprachen · PHP · Referenz · ps_begin_template

ps_begin_template

Funktion

Beginnt eine neue Vorlage (Template) in einem PostScript-Dokument und gibt eine Vorlage-Ressource zurück.

Kategorie: misc

Signatur

ps_begin_template(resource $psdoc, float $width, float $height): int

Beschreibung

ps_begin_template() startet die Definition einer wiederverwendbaren Vorlage (auch als Form bezeichnet) innerhalb eines PostScript-Dokuments, das über die PS-Erweiterung (pslib) verwaltet wird. Mit Vorlagen lassen sich Grafikelemente, Texte oder komplexe Zeichnungen einmalig definieren und anschließend beliebig oft an verschiedenen Stellen im Dokument platzieren, was die Dateigröße und den Rendering-Aufwand reduziert.

Die Vorlage wird durch einen Aufruf von ps_end_template() abgeschlossen. Alle Zeichenoperationen, die zwischen ps_begin_template() und ps_end_template() ausgeführt werden, werden Teil der Vorlage und nicht direkt auf die aktuelle Seite gezeichnet. Um eine definierte Vorlage auf einer Seite zu platzieren, wird ps_place_image() oder eine vergleichbare Platzierfunktion verwendet.

Vorlagen eignen sich besonders für Elemente wie Logos, Wasserzeichen, Seitenrahmen oder Kopf-/Fußzeilen, die auf mehreren Seiten identisch erscheinen sollen. Da die Vorlage nur einmal im PostScript-Stream definiert wird, kann der PostScript-Interpreter sie effizient wiederverwenden.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, wie sie von ps_new() zurückgegeben wurde.
$width Pflicht float Die Breite der Vorlage in Punkten (pt). Definiert den Begrenzungsrahmen der Vorlage auf der horizontalen Achse.
$height Pflicht float Die Höhe der Vorlage in Punkten (pt). Definiert den Begrenzungsrahmen der Vorlage auf der vertikalen Achse.

Rückgabewert

Typ
int
Beschreibung
Gibt einen Integer zurück, der die Vorlage identifiziert. Dieser Bezeichner kann genutzt werden, um die Vorlage mit ps_place_image() oder ähnlichen Funktionen auf Seiten des Dokuments zu platzieren. Im Fehlerfall wird 0 zurückgegeben.

Beispiele

Einfaches Logo als wiederverwendbare Vorlage definieren

<?php
$ps = ps_new();
ps_open_file($ps, 'ausgabe.ps');

ps_begin_page($ps, 595, 842);

// Vorlage definieren: 100 x 50 Punkte
$template = ps_begin_template($ps, 100, 50);

// Innerhalb der Vorlage zeichnen
ps_setcolor($ps, 'fill', 'rgb', 0.0, 0.0, 1.0, 0.0); // Blau
ps_rect($ps, 0, 0, 100, 50);
ps_fill($ps);

ps_setcolor($ps, 'fill', 'rgb', 1.0, 1.0, 1.0, 0.0); // Weiß
ps_set_text_pos($ps, 10, 18);
ps_show($ps, 'Mein Logo');

ps_end_template($ps);

// Vorlage zweimal auf der Seite platzieren
ps_place_image($ps, $template, 50, 750, 1.0);
ps_place_image($ps, $template, 400, 750, 1.0);

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

echo 'PostScript-Dokument mit Vorlage erstellt.';
?>
PostScript-Dokument mit Vorlage erstellt.

Vorlage als Wasserzeichen auf mehreren Seiten

<?php
$ps = ps_new();
ps_open_file($ps, 'wasserzeichen.ps');

// Wasserzeichen-Vorlage einmalig definieren
$wm = ps_begin_template($ps, 200, 30);
ps_setcolor($ps, 'fill', 'rgb', 0.8, 0.8, 0.8, 0.0);
ps_set_text_pos($ps, 5, 8);
ps_show($ps, 'VERTRAULICH');
ps_end_template($ps);

// Auf drei Seiten wiederverwenden
for ($i = 1; $i <= 3; $i++) {
    ps_begin_page($ps, 595, 842);
    // Inhalt der Seite ...
    // Wasserzeichen unten links platzieren
    ps_place_image($ps, $wm, 197, 30, 1.0);
    ps_end_page($ps);
}

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

echo 'Dokument mit Wasserzeichen auf 3 Seiten erstellt.';
?>
Dokument mit Wasserzeichen auf 3 Seiten erstellt.

// Wichtig · Fallstricke

Hinweis: Die PS-Erweiterung ist eine PECL-Erweiterung und nicht standardmäßig in PHP enthalten. Sie muss separat kompiliert und installiert werden (abhängig von der pslib-Bibliothek). In modernen PHP-Umgebungen sollten Alternativen wie TCPDF, Dompdf oder FPDF für PDF-Ausgabe bevorzugt werden.

Zeichenoperationen außerhalb von ps_begin_template()/ps_end_template() und ps_begin_page()/ps_end_page() können zu ungültigem PostScript führen. Achte darauf, Vorlage-Blöcke stets korrekt zu schließen.

Koordinaten innerhalb der Vorlage beziehen sich auf das lokale Koordinatensystem der Vorlage (Ursprung bei 0, 0), nicht auf das Seitenkoordinatensystem.