Start · Sprachen · PHP · Referenz · ps_setoverprintmode

ps_setoverprintmode

Funktion

Setzt den Überdruckmodus für ein PostScript-Dokument, der bestimmt, wie überlappende Farben beim Drucken behandelt werden.

Kategorie: misc

Signatur

ps_setoverprintmode(resource $psdoc, int $mode): bool

Beschreibung

ps_setoverprintmode() gehört zur ps-Erweiterung (pslib) für PHP und steuert den sogenannten Überdruckmodus (Overprint Mode) eines PostScript-Dokuments. Der Überdruckmodus legt fest, ob beim Übereinanderdrucken von Farben die untere Farbe durchscheint oder vollständig überdeckt wird.

Im professionellen Druckbereich ist das Überdruck-Verhalten besonders relevant bei der Verarbeitung von CMYK-Farben. Wenn Überdruck aktiviert ist, wird die untere Farbe nicht entfernt, bevor die obere Farbe gedruckt wird – dies kann zu Farbmischeffekten führen, die im Offsetdruck erwünscht sein können. Ohne Überdruck (Standard) überdeckt jedes Element die darunterliegenden vollständig.

Der Parameter mode akzeptiert üblicherweise 0 (Überdruck deaktiviert) oder 1 (Überdruck aktiviert). Diese Einstellung entspricht dem PostScript-Parameter OPM (Overprint Mode) und wirkt sich auf die Farbausgabe im erzeugten PostScript-Dokument aus.

Die Funktion ist vor allem für Druckvorstufen-Anwendungen interessant, bei denen präzise Kontrolle über das Farbverhalten im PostScript-Ausgabestrom erforderlich ist, etwa bei der Erzeugung druckfertiger Dokumente für professionelle Druckereien.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Eine gültige PostScript-Dokument-Ressource, die zuvor mit ps_new() erstellt und mit ps_open_file() geöffnet wurde.
$mode Pflicht int Der Überdruckmodus: 0 deaktiviert den Überdruck (Standardverhalten, obere Farbe überdeckt untere vollständig), 1 aktiviert den Überdruck (Farben mischen sich).

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false bei einem Fehler, etwa wenn die übergebene Ressource ungültig ist.

Beispiele

Überdruckmodus für ein PostScript-Dokument setzen

<?php
// Neue PostScript-Ressource anlegen
$ps = ps_new();

if (!ps_open_file($ps, '/tmp/ausgabe.ps')) {
    die('Fehler beim Öffnen der PostScript-Datei');
}

ps_set_info($ps, 'Creator', 'Mein PHP-Script');
ps_begin_page($ps, 596, 842); // DIN A4

// Überdruckmodus aktivieren (1 = Farben überdrucken sich)
ps_setoverprintmode($ps, 1);

// Erste Farbe (Cyan) zeichnen
ps_setcolor($ps, 'fill', 'cmyk', 1.0, 0.0, 0.0, 0.0);
ps_rect($ps, 100, 400, 200, 200);
ps_fill($ps);

// Zweite Farbe (Magenta) überlappend zeichnen
ps_setcolor($ps, 'fill', 'cmyk', 0.0, 1.0, 0.0, 0.0);
ps_rect($ps, 200, 400, 200, 200);
ps_fill($ps);

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

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

Überdruckmodus deaktivieren (Standard)

<?php
$ps = ps_new();

if (!ps_open_file($ps, '/tmp/kein_ueberdruck.ps')) {
    die('Fehler beim Öffnen der Datei');
}

ps_begin_page($ps, 596, 842);

// Überdruckmodus explizit deaktivieren (0 = kein Überdruck)
if (ps_setoverprintmode($ps, 0)) {
    echo 'Überdruckmodus erfolgreich deaktiviert.' . PHP_EOL;
} else {
    echo 'Fehler beim Setzen des Überdruckmodus.' . PHP_EOL;
}

ps_setcolor($ps, 'fill', 'cmyk', 0.0, 0.0, 1.0, 0.0); // Gelb
ps_rect($ps, 150, 300, 300, 300);
ps_fill($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
Überdruckmodus erfolgreich deaktiviert.

// Wichtig · Fallstricke

Erweiterungsabhängigkeit: Diese Funktion ist nur verfügbar, wenn PHP mit der ps-Erweiterung (pslib) kompiliert wurde. Diese Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (pecl install ps oder über das Paketmanagement des Betriebssystems).

Druckkontext: Der Überdruckmodus hat nur in Umgebungen eine sichtbare Wirkung, die PostScript oder PDF mit korrekter Überdruckverarbeitung rendern, z. B. professionelle RIP-Systeme (Raster Image Processors) oder Adobe Acrobat mit aktivierter Überdruckvorschau. In normalen Bildschirm-PDF-Viewern wird der Überdruck oft ignoriert.

Reihenfolge: Die Funktion sollte innerhalb einer geöffneten Seite (ps_begin_page()) aufgerufen werden, bevor die betreffenden Grafikelemente gezeichnet werden, da die Einstellung ab dem Zeitpunkt des Aufrufs gilt.