Start · Sprachen · PHP · Referenz · ps_add_weblink

ps_add_weblink

Funktion

Fügt einem PostScript-Dokument einen anklickbaren Hyperlink zu einer Web-Adresse (URL) in einem definierten Rechteckbereich hinzu.

Kategorie: misc

Signatur

ps_add_weblink(resource $psdoc, float $llx, float $lly, float $urx, float $ury, string $url): bool

Beschreibung

ps_add_weblink() ist Teil der ps-Erweiterung (pslib) für PHP und ermöglicht es, in einem PostScript-Dokument einen rechteckigen Bereich als anklickbaren Weblink zu definieren. Der Link verweist auf eine externe URL und ist vor allem dann nützlich, wenn das PostScript-Dokument in ein PDF konvertiert wird, da dann interaktive Hyperlinks unterstützt werden.

Die Position des Linkbereichs wird über zwei Eckpunkte eines Rechtecks angegeben: die untere linke Ecke (llx, lly) und die obere rechte Ecke (urx, ury). Alle Koordinaten werden in der aktuellen Maßeinheit des Dokuments (standardmäßig Punkte) angegeben.

Typischerweise wird ps_add_weblink() verwendet, nachdem Text oder eine Grafik auf der Seite platziert wurde, um den entsprechenden Bereich als anklickbaren Link zu markieren. Der Linkbereich ist im reinen PostScript-Output nicht direkt sichtbar, wird aber beim Konvertieren zu PDF als interaktiver Link eingebettet.

  • Muss innerhalb einer geöffneten Seite (zwischen ps_begin_page() und ps_end_page()) aufgerufen werden.
  • Die URL muss vollständig und gültig sein, z. B. https://example.com.

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 der aktuellen Maßeinheit.
$lly Pflicht float Die y-Koordinate der unteren linken Ecke des Linkbereichs in der aktuellen Maßeinheit.
$urx Pflicht float Die x-Koordinate der oberen rechten Ecke des Linkbereichs in der aktuellen Maßeinheit.
$ury Pflicht float Die y-Koordinate der oberen rechten Ecke des Linkbereichs in der aktuellen Maßeinheit.
$url Pflicht string Die vollständige URL, auf die der Link zeigen soll, z. B. https://programmierung.net.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein gültiges Dokument-Handle übergeben wurde oder kein Seitenkontext aktiv ist).

Beispiele

Einfacher Weblink auf einer PostScript-Seite

<?php
// Neues PostScript-Dokument erstellen
$ps = ps_new();

if (!$ps) {
    die('Konnte PostScript-Ressource nicht erstellen.');
}

// Dokument öffnen und in Datei schreiben
ps_open_file($ps, '/tmp/weblink_beispiel.ps');

// Dokumentinformationen setzen
ps_set_info($ps, 'Creator', 'PHP ps_add_weblink Beispiel');
ps_set_info($ps, 'Author', 'Programmierung.net');
ps_set_info($ps, 'Title', 'Weblink Beispiel');

// Neue Seite beginnen (DIN A4: 595 x 842 Punkte)
ps_begin_page($ps, 595, 842);

// Schriftart laden und setzen
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 14.0);

// Text ausgeben, der als Link erscheinen soll
ps_show_xy($ps, 'Besuchen Sie programmierung.net!', 50, 780);

// Weblink über den Text-Bereich legen
// Koordinaten entsprechen dem Textbereich
ps_add_weblink($ps, 50, 775, 350, 800, 'https://programmierung.net');

// Seite beenden
ps_end_page($ps);

// Dokument schließen und Ressource freigeben
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Datei mit Weblink erfolgreich erstellt.';
?>
PostScript-Datei mit Weblink erfolgreich erstellt.

Mehrere Weblinks auf einer Seite

<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/mehrere_links.ps');

ps_set_info($ps, 'Title', 'Mehrere Weblinks');
ps_begin_page($ps, 595, 842);

$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 12.0);

// Link-Daten: [Anzeigetext, URL, y-Position]
$links = [
    ['Google',       'https://www.google.com',       750],
    ['PHP-Handbuch', 'https://www.php.net/manual/de/', 720],
    ['Beispielseite','https://example.com',           690],
];

foreach ($links as [$label, $url, $y]) {
    ps_show_xy($ps, $label, 50, $y);
    // Linkfläche über den Text legen (ca. 200pt breit, 18pt hoch)
    ps_add_weblink($ps, 50, $y - 3, 250, $y + 15, $url);
}

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

echo 'PostScript-Datei mit mehreren Weblinks erstellt.';
?>
PostScript-Datei mit mehreren Weblinks erstellt.

// Wichtig · Fallstricke

Verfügbarkeit: ps_add_weblink() erfordert die ps-PECL-Erweiterung, die pslib als Systembibliothek voraussetzt. Sie ist nicht standardmäßig in PHP enthalten und muss separat installiert werden.

Interaktivität nur in PDF: PostScript selbst unterstützt keine interaktiven Hyperlinks im eigentlichen Sinne. Die Weblinks werden als spezielle Annotationen eingebettet und entfalten ihre Wirkung erst, wenn das .ps-Dokument beispielsweise mit ps2pdf in ein PDF konvertiert wird.

Koordinatensystem: Das PostScript-Koordinatensystem hat seinen Ursprung (0,0) standardmäßig in der unteren linken Ecke der Seite, die y-Achse zeigt nach oben. Dies unterscheidet sich von vielen anderen Grafiksystemen.

URL-Validierung: Die Funktion prüft die übergebene URL nicht auf Gültigkeit. Es liegt in der Verantwortung des Entwicklers, korrekte und vollständige URLs zu übergeben.