Start · Sprachen · PHP · Referenz · ps_set_info

ps_set_info

Funktion

Setzt ein Informationsfeld (Metadatum) im PostScript-Dokument, das mit <code>ps_new</code> erzeugt wurde.

Kategorie: misc

Signatur

ps_set_info(resource $psdoc, string $key, string $value): bool

Beschreibung

ps_set_info ermöglicht es, Metainformationen in ein PostScript-Dokument einzutragen. Typische Informationsfelder sind etwa Author, Title, Subject oder Keywords. Diese Informationen werden im DSC-Header (Document Structuring Conventions) des erzeugten PostScript-Dokuments abgelegt und können von PostScript-Viewern oder Druckern ausgewertet werden.

Die Funktion muss vor dem Aufruf von ps_begin_page aufgerufen werden, damit die Informationsfelder korrekt in den Dokumentkopf geschrieben werden. Ein nachträgliches Setzen nach dem ersten Seitenaufruf wird von manchen Implementierungen ignoriert.

Bekannte Schlüssel sind unter anderem: Author, Title, Subject, Keywords, Creator, Producer und BoundingBox. Nicht anerkannte Schlüssel können je nach Bibliotheksversion ignoriert werden.

  • Author: Name des Autors des Dokuments
  • Title: Titel des Dokuments
  • Subject: Thema oder Betreff
  • Keywords: Schlagwörter, durch Komma getrennt
  • Creator: Anwendung, die das Dokument erstellt hat

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die PostScript-Dokument-Ressource, die zuvor mit ps_new erzeugt wurde.
$key Pflicht string Der Name des Informationsfeldes, z. B. Author, Title, Subject oder Keywords.
$value Pflicht string Der Wert, der dem angegebenen Informationsfeld zugewiesen werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Ressource oder unbekannter Schlüssel).

Beispiele

Grundlegende Dokument-Metadaten setzen

<?php
$ps = ps_new();

// Metainformationen vor dem ersten Seitenaufruf setzen
ps_set_info($ps, 'Author', 'Max Mustermann');
ps_set_info($ps, 'Title', 'Mein PostScript-Dokument');
ps_set_info($ps, 'Subject', 'Beispiel-Dokument für programmierung.net');
ps_set_info($ps, 'Keywords', 'PHP, PostScript, ps_set_info');
ps_set_info($ps, 'Creator', 'PHP ps-Erweiterung');

ps_open_file($ps, '/tmp/ausgabe.ps');
ps_begin_page($ps, 595, 842); // A4-Seite

// Einfachen Text auf die Seite schreiben
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 12.0);
ps_show_xy($ps, 'Hallo Welt!', 50, 780);

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

echo 'PostScript-Dokument mit Metadaten erstellt.';
PostScript-Dokument mit Metadaten erstellt.

Mehrere Dokument-Informationsfelder in einer Schleife setzen

<?php
$ps = ps_new();

$metadaten = [
    'Author'   => 'Anna Beispiel',
    'Title'    => 'Technischer Bericht',
    'Subject'  => 'Auswertung 2024',
    'Keywords' => 'Bericht, Auswertung, Statistik',
    'Creator'  => 'PHP 8 / ps-Erweiterung',
];

foreach ($metadaten as $key => $value) {
    $result = ps_set_info($ps, $key, $value);
    if (!$result) {
        echo "Warnung: Informationsfeld '$key' konnte nicht gesetzt werden.\n";
    }
}

ps_open_file($ps, '/tmp/bericht.ps');
ps_begin_page($ps, 595, 842);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'Dokument mit Metadaten gespeichert.';
Dokument mit Metadaten gespeichert.

// Wichtig · Fallstricke

Reihenfolge beachten: ps_set_info muss vor dem ersten Aufruf von ps_begin_page verwendet werden, da die Metainformationen in den DSC-Header geschrieben werden, der beim Öffnen der ersten Seite abgeschlossen wird.

Erweiterung erforderlich: Diese Funktion gehört zur ps-PECL-Erweiterung (pslib), die separat installiert werden muss. Sie ist nicht Bestandteil der PHP-Standardinstallation. Überprüfen Sie mit extension_loaded('ps'), ob die Erweiterung verfügbar ist.

Unbekannte oder nicht unterstützte Schlüssel werden je nach pslib-Version möglicherweise stillschweigend ignoriert, ohne einen Fehler auszulösen. Testen Sie das Verhalten mit der in Ihrer Umgebung installierten Version.