Start · Sprachen · PHP · Referenz · ps_end_template

ps_end_template

Funktion

Beendet eine zuvor gestartete PostScript-Vorlage (Template) und macht sie für die spätere Verwendung verfügbar.

Kategorie: misc

Signatur

ps_end_template(resource $psdoc): bool

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

Typ
bool
Beschreibung
Gibt 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.