Signatur
Beschreibung
ps_add_locallink ist Teil der PS-Bibliothek (pslib) für PHP und ermöglicht es, rechteckige Linkbereiche in einem PostScript-Dokument zu definieren, die beim Klicken zu einer anderen Seite desselben Dokuments navigieren. Das ist vor allem nützlich beim Erstellen interaktiver PDF-ähnlicher Dokumente, z. B. Inhaltsverzeichnisse oder Querverweise.
Das Linkrechteck wird durch zwei Koordinatenpaare definiert: die untere linke Ecke (llx, lly) und die obere rechte Ecke (urx, ury). Diese Angaben erfolgen im aktuellen Koordinatensystem des PostScript-Dokuments.
Der Parameter page gibt die Zielseitenummer an, zu der der Link führen soll, und dest definiert, wie die Zielseite dargestellt wird (z. B. fitpage, fitwidth oder fitheight). Diese Funktion ist besonders dann sinnvoll, wenn man mit ps_begin_page und ps_end_page mehrseitige Dokumente erzeugt.
Hinweis: Die PS-Erweiterung ist in modernen PHP-Versionen nicht standardmäßig enthalten und muss separat installiert werden (PECL-Paket ps).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, wie sie von ps_new() zurückgegeben wird. |
|
| $llx Pflicht | float | Die X-Koordinate der unteren linken Ecke des Linkbereichs in PostScript-Punkten. | |
| $lly Pflicht | float | Die Y-Koordinate der unteren linken Ecke des Linkbereichs in PostScript-Punkten. | |
| $urx Pflicht | float | Die X-Koordinate der oberen rechten Ecke des Linkbereichs in PostScript-Punkten. | |
| $ury Pflicht | float | Die Y-Koordinate der oberen rechten Ecke des Linkbereichs in PostScript-Punkten. | |
| $page Pflicht | int | Die Seitennummer im Dokument, zu der der Link führen soll. Die Nummerierung beginnt bei 1. |
|
| $dest Pflicht | string | Gibt an, wie die Zielseite angezeigt werden soll. Mögliche Werte sind fitpage, fitwidth, fitheight und fitbbox. |
Rückgabewert
true bei Erfolg zurück, andernfalls false.Beispiele
Einfacher interner Link auf Seite 2 des Dokuments
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
ps_open_file($ps, 'dokument.ps');
ps_set_info($ps, 'Creator', 'MeinScript');
// Erste Seite beginnen
ps_begin_page($ps, 595, 842); // A4-Format
// Schrift setzen und Text ausgeben
ps_set_font($ps, ps_findfont($ps, 'Helvetica', '', 0), 14.0);
ps_show_xy($ps, 'Klicken Sie hier fuer Seite 2', 100, 700);
// Klickbaren Linkbereich definieren, der zu Seite 2 fuehrt
ps_add_locallink($ps, 100, 695, 400, 715, 2, 'fitpage');
ps_end_page($ps);
// Zweite Seite beginnen
ps_begin_page($ps, 595, 842);
ps_show_xy($ps, 'Willkommen auf Seite 2!', 100, 700);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Dokument mit internem Link erstellt.';
?>
Inhaltsverzeichnis mit mehreren internen Links
<?php
$ps = ps_new();
ps_open_file($ps, 'inhaltsverzeichnis.ps');
ps_set_info($ps, 'Creator', 'TOC-Generator');
// Seite 1: Inhaltsverzeichnis
ps_begin_page($ps, 595, 842);
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_set_font($ps, $font, 14.0);
$eintraege = [
1 => ['Einleitung', 750, 2],
2 => ['Hauptteil', 720, 3],
3 => ['Fazit', 690, 4],
];
foreach ($eintraege as $nr => $eintrag) {
[$titel, $yPos, $zielseite] = $eintrag;
ps_show_xy($ps, $nr . '. ' . $titel, 80, $yPos);
// Linkbereich je Eintrag setzen
ps_add_locallink($ps, 80, $yPos - 5, 350, $yPos + 15, $zielseite, 'fitwidth');
}
ps_end_page($ps);
// Platzhalter-Seiten 2-4
foreach (['Einleitung', 'Hauptteil', 'Fazit'] as $kapitel) {
ps_begin_page($ps, 595, 842);
ps_show_xy($ps, $kapitel, 80, 750);
ps_end_page($ps);
}
ps_close($ps);
ps_delete($ps);
echo 'Inhaltsverzeichnis mit Links erstellt.';
?>
// Wichtig · Fallstricke
Verfügbarkeit: Die ps-Erweiterung ist kein Bestandteil der PHP-Standardinstallation. Sie muss über PECL installiert werden (pecl install ps). Prüfen Sie mit extension_loaded('ps'), ob die Erweiterung verfügbar ist.
Koordinatensystem: PostScript verwendet standardmäßig den Ursprung unten links. Achten Sie darauf, dass die Koordinaten für lly und ury entsprechend korrekt gesetzt werden – lly muss kleiner als ury sein.
Seitenreferenz: Die mit page angegebene Seite muss im fertigen Dokument existieren. Verweise auf nicht vorhandene Seiten können zu undefinierten Darstellungen im Viewer führen.