Start · Sprachen · PHP · Referenz · ps_get_value

ps_get_value

Funktion

Liest einen numerischen Wert aus einem PostScript-Dokument-Handle und gibt ihn als Gleitkommazahl zurück.

Kategorie: misc

Signatur

ps_get_value(resource $psdoc, string $name, float $modifier): float

Beschreibung

ps_get_value() gehört zur PS-Erweiterung (pslib) für PHP und ermöglicht das Abfragen interner numerischer Parameter eines PostScript-Dokuments. Über den Parameter name wird der gewünschte Wert identifiziert, während modifier bei bestimmten Werten als Zusatzindex fungiert (z. B. um einen konkreten Font oder ein spezifisches Bild zu adressieren).

Typische abfragbare Werte sind z. B. "fontsize" (aktuelle Schriftgröße), "imagewidth" / "imageheight" (Abmessungen eines geladenen Bildes), "textx" / "texty" (aktuelle Textposition) oder "major" / "minor" (Versionsnummern der pslib-Bibliothek). Die Funktion ist das numerische Gegenstück zu ps_get_parameter(), welches String-Werte liefert.

Die Funktion ist sinnvoll, wenn nach dem Setzen von Eigenschaften geprüft werden soll, ob diese korrekt übernommen wurden, oder wenn berechnungsabhängige Layouts auf tatsächlichen Dokumentwerten basieren sollen (z. B. Zeilenabstände anhand der aktuellen Schriftgröße ermitteln).

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Eine gültige PostScript-Dokumentressource, die zuvor mit ps_new() erzeugt wurde.
$name Pflicht string Name des abzufragenden Wertes, z. B. "fontsize", "imagewidth", "imageheight", "textx", "texty", "major" oder "minor".
$modifier Pflicht float Optionaler Zusatzindex, der für bestimmte Werte benötigt wird (z. B. ein Font-Handle oder ein Bild-Handle). Wenn kein Modifier benötigt wird, kann 0.0 übergeben werden.

Rückgabewert

Typ
float
Beschreibung
Gibt den abgefragten numerischen Wert als float zurück. Bei einem ungültigen name oder einem ungültigen Dokumenthandle wird 0.0 zurückgegeben.

Beispiele

Aktuelle Schriftgröße auslesen

<?php
$ps = ps_new();
if (!$ps) {
    die('Fehler beim Erstellen des PS-Dokuments');
}

ps_open_file($ps, 'dokument.ps');
ps_begin_page($ps, 596, 842);

// Font laden und Größe setzen
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 14.0);

// Aktuelle Schriftgröße abfragen
$size = ps_get_value($ps, 'fontsize', 0.0);
echo 'Aktuelle Schriftgröße: ' . $size . ' pt';

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
Aktuelle Schriftgröße: 14 pt

Bildabmessungen nach dem Laden abfragen

<?php
$ps = ps_new();
ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 596, 842);

// Bild laden
$image = ps_open_image_file($ps, 'png', 'foto.png', '', 0);

if ($image > 0) {
    // Breite und Höhe des Bildes abfragen
    $breite = ps_get_value($ps, 'imagewidth', $image);
    $hoehe  = ps_get_value($ps, 'imageheight', $image);
    echo "Bildgröße: {$breite} x {$hoehe} Pixel\n";

    // Bild auf der Seite platzieren
    ps_place_image($ps, $image, 50, 700, 1.0);
    ps_close_image($ps, $image);
}

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
Bildgröße: 800 x 600 Pixel

// Wichtig · Fallstricke

Erweiterungsverfügbarkeit: Die ps_*-Funktionen erfordern die PECL-Erweiterung ps, die auf vielen Standardinstallationen nicht verfügbar ist. Sie muss separat installiert und in der php.ini aktiviert werden (extension=ps.so).

Ab PHP 8.0 sind pslib-Ressourcen in der Regel nicht mehr als klassische resource-Typen verfügbar; die Erweiterung wird seit Jahren kaum noch gepflegt. Für neue Projekte empfiehlt sich der Einsatz modernerer Bibliotheken wie FPDF, TCPDF oder mPDF zur PDF-Erzeugung.

Der Parameter modifier muss stets übergeben werden; bei Werten, die keinen Modifier benötigen, ist 0.0 zu übergeben, da PHP keine optionalen Parameter für diese Funktion definiert.