Signatur
Beschreibung
ps_place_image() ist Teil der PHP-PostScript-Erweiterung (ps) und ermöglicht es, ein Bild, das zuvor mit ps_open_image() oder ps_open_image_file() geladen wurde, an einer exakten Position auf der aktuellen Seite eines PostScript-Dokuments einzufügen.
Die Koordinaten $x und $y geben den linken unteren Eckpunkt des Bildes an, was dem Standard-PostScript-Koordinatensystem entspricht (Ursprung unten links). Der Parameter $scale bestimmt, wie das Bild relativ zu seiner Originalgröße skaliert wird – ein Wert von 1.0 entspricht der Originalgröße.
Diese Funktion ist besonders nützlich, wenn Bilder (z. B. Logos, Fotos oder Grafiken) präzise in generierte Dokumente wie Rechnungen, Berichte oder Etiketten eingebettet werden sollen. Sie eignet sich für alle Szenarien, in denen serverseitig PDF- oder PostScript-Dokumente mit Bildinhalt erzeugt werden.
Voraussetzung für den Einsatz ist, dass die ps-Erweiterung in PHP installiert und aktiviert ist sowie ein gültiges PostScript-Dokument mit einer geöffneten Seite vorliegt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde. |
|
| $image Pflicht | resource | Die Bild-Ressource, die zuvor mit ps_open_image() oder ps_open_image_file() geöffnet wurde. |
|
| $x Pflicht | float | Die horizontale Position (x-Koordinate) des linken unteren Bildeckpunkts in PostScript-Punkten. | |
| $y Pflicht | float | Die vertikale Position (y-Koordinate) des linken unteren Bildeckpunkts in PostScript-Punkten. | |
| $scale Pflicht | float | Skalierungsfaktor für das Bild. 1.0 entspricht der Originalgröße, 0.5 der halben Größe, 2.0 der doppelten Größe. |
Rückgabewert
true bei Erfolg zurück, oder false wenn ein Fehler aufgetreten ist, z. B. wenn die übergebene Bild-Ressource ungültig ist oder keine Seite geöffnet wurde.Beispiele
Logo in ein PostScript-Dokument einfügen
<?php
// PostScript-Dokument erzeugen
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/ausgabe.ps')) {
die('Datei konnte nicht erstellt werden.');
}
ps_set_info($ps, 'Creator', 'MeinePHP-App');
ps_set_info($ps, 'Title', 'Dokument mit Bild');
// Seite öffnen (DIN A4: 595 x 842 Punkte)
ps_begin_page($ps, 595, 842);
// Bild aus Datei laden
$image = ps_open_image_file($ps, 'jpeg', '/pfad/zum/logo.jpg', '', 0);
if ($image) {
// Bild bei x=50, y=750 mit halber Originalgröße platzieren
ps_place_image($ps, $image, 50.0, 750.0, 0.5);
ps_close_image($ps, $image);
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Dokument wurde erfolgreich erstellt.';
?>
Bild zentriert auf einer Seite platzieren
<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/zentriert.ps');
$seitenBreite = 595;
$seitenHoehe = 842;
ps_begin_page($ps, $seitenBreite, $seitenHoehe);
$image = ps_open_image_file($ps, 'jpeg', '/pfad/zum/bild.jpg', '', 0);
if ($image) {
// Bildgröße in Originalpunkten abfragen
$bildBreite = ps_get_value($ps, 'imagewidth', $image);
$bildHoehe = ps_get_value($ps, 'imageheight', $image);
$scale = 1.0;
// Zentrierte Position berechnen
$x = ($seitenBreite - $bildBreite * $scale) / 2;
$y = ($seitenHoehe - $bildHoehe * $scale) / 2;
ps_place_image($ps, $image, $x, $y, $scale);
ps_close_image($ps, $image);
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
// Wichtig · Fallstricke
Koordinatensystem: PostScript verwendet ein Koordinatensystem mit dem Ursprung unten links. Dies unterscheidet sich von vielen Grafikbibliotheken, bei denen der Ursprung oben links liegt. Beim Berechnen von Positionen muss dies berücksichtigt werden.
Skalierung: Der Skalierungsfaktor bezieht sich auf die native Auflösung des Bildes. Bei sehr großen Bildern mit hoher DPI-Zahl kann ein Faktor von 1.0 das Bild sehr groß erscheinen lassen – ggf. anpassen.
Abhängigkeit: Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (pecl install ps). Sie ist auf Systemen mit installierter pslib-Bibliothek verfügbar.