Signatur
Beschreibung
ps_end_template() schließt eine PostScript-Vorlage, die zuvor mit ps_begin_template() geöffnet wurde. Vorlagen (Templates) in der PS-Erweiterung entsprechen dem PostScript-Konzept der Forms: Sie kapseln wiederverwendbare Grafikinhalte, die mehrfach im Dokument platziert werden können, ohne den Inhalt jedes Mal neu zu definieren.
Nach dem Aufruf von ps_end_template() ist die Vorlage abgeschlossen und kann mit ps_place_image() oder ähnlichen Funktionen auf einer Seite positioniert werden. Zwischen ps_begin_template() und ps_end_template() werden alle Zeichenoperationen als Teil der Vorlage aufgezeichnet und nicht direkt auf die aktuelle Seite gerendert.
Diese Funktion ist besonders nützlich, wenn identische grafische Elemente – etwa Logos, Wasserzeichen oder Seitenrahmen – auf mehreren Seiten eines Dokuments erscheinen sollen. Durch den Einsatz von Templates wird der erzeugte PostScript-Code kompakter und effizienter.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde und auf das geöffnete Template verweist. |
Rückgabewert
true bei Erfolg zurück, oder false wenn ein Fehler auftrat (z. B. wenn kein Template mit ps_begin_template() geöffnet wurde).Beispiele
Einfaches Template erstellen und auf einer Seite platzieren
<?php
$ps = ps_new();
ps_open_file($ps, 'ausgabe.ps');
ps_set_info($ps, 'Creator', 'Beispiel-Script');
// Template definieren (z. B. ein einfaches Rechteck als Rahmen)
$tmpl = ps_begin_template($ps, 200, 200);
ps_setlinewidth($ps, 2);
ps_moveto($ps, 10, 10);
ps_lineto($ps, 190, 10);
ps_lineto($ps, 190, 190);
ps_lineto($ps, 10, 190);
ps_closepath($ps);
ps_stroke($ps);
ps_end_template($ps); // Template abschließen
// Seite beginnen und Template platzieren
ps_begin_page($ps, 595, 842);
ps_place_image($ps, $tmpl, 100, 100, 1.0);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
Wiederverwendbares Logo-Template auf mehreren Seiten
<?php
$ps = ps_new();
ps_open_file($ps, 'mehrere_seiten.ps');
// Logo-Template einmalig definieren
$logo = ps_begin_template($ps, 100, 50);
ps_setcolor($ps, 'fill', 'rgb', 0.2, 0.4, 0.8, 0);
ps_rect($ps, 5, 5, 90, 40);
ps_fill($ps);
ps_end_template($ps); // Template beenden
// Template auf jeder Seite wiederverwenden
for ($i = 1; $i <= 3; $i++) {
ps_begin_page($ps, 595, 842);
ps_place_image($ps, $logo, 20, 780, 1.0); // Logo oben links
ps_end_page($ps);
}
ps_close($ps);
ps_delete($ps);
?>
// Wichtig · Fallstricke
Wichtig: ps_end_template() muss immer paarweise mit ps_begin_template() aufgerufen werden. Ein fehlender Abschluss führt zu einem ungültigen PostScript-Dokument. Verschachtelungen von Templates sind nicht möglich – es kann jeweils nur ein Template gleichzeitig geöffnet sein.
Die ps-Erweiterung ist nicht im PHP-Core enthalten und muss separat als PECL-Paket (pecl/ps) installiert werden. Sie setzt die externe Bibliothek pslib voraus. In modernen PHP-Umgebungen wird stattdessen häufig FPDF, TCPDF oder die GD-Erweiterung verwendet.