Files
printserver/openspec/changes/fix-colour-defaults-and-client-options/proposal.md
T
2026-10-20 07:30:09 +02:00

4.3 KiB
Raw Blame History

Proposal

Why

Drucken funktioniert von macOS und iOS, aber die Ausgabe ist blass, und driverless AirPrint-Clients erreichen nur IPP-Standardoptionen – Farbmodus (Vivid), Medientyp und Toner Save sind reine PPD-Optionen und weder im Druckdialog wählbar noch dauerhaft konfigurierbar. Zusätzlich wirkt die im Dialog wählbare Option Schwarz/Weiß nicht: Der pdftops-Filter läuft bei Debian für Brother-Drucker mit dem Poppler-Renderer, der keine Graustufen erzeugen kann – der Job wird farbig gedruckt.

Messbare Befunde der Testreihe (ein und dieselbe farbige PDF, gleiche Drucker-Queue):

  • Nur BRColorMode=None liefert gesättigte Farben → die Vorgabe Normal setzt <</UseCIEColor true>>, die CIE-Umrechnung im Drucker-RIP wäscht die Farben aus. Vivid (setzt ebenfalls UseCIEColor true) und BRPrintQuality=Color (BRColorAdapt) sowie TonerSaveMode=False waren ohne sichtbaren Effekt.
  • print-color-mode=monochrome gedruckt farbig → Ursache ist der Poppler-Renderer von pdftops (siehe WARNING: Grayscale/monochrome could be printed as color with Poppler).
  • Der macOS-Druck ist identisch zu lp-Drücken → der Client (ColorSync) ist nicht beteiligt.

What Changes

  • Queue-Vorgabe für den Farbmodus kippt von Normal nach None in der BR-Script3-PPD (*DefaultBRColorMode): UseCIEColor ist damit aus, Farben bleiben gesättigt. Verifiziert per Testdruck.
  • Die PPD erhält APPrinterPreset-Einträge, die die für AirPrint verfügbaren IPP-Attribute auf Geräteoptionen abbilden:
    • print-color-mode=monochrome → BRPrintQuality=Black (der Drucker rendert mono, unabhängig vom PDF-Renderer),
    • print-color-mode=color → TonerSaveMode=False,
    • print-quality draft/normal/high → TonerSaveMode und CAPT (Fine/SuperFine).
  • Neue Umgebungsvariable PRINTER_OPTIONS im entrypoint.sh: leerzeichengetrennte key=value-Paare, die per lpadmin -o bei jedem Start als Queue-Defaults gesetzt werden – damit überleben PPD-Optionen (z. B. BRMediaType, TonerSaveMode, BRColorMode=Vivid) die Neuerzeugung der Queue.
  • Optionale neue PPD-Choice BRColorMode=VividNoCIE (<</UseCIEColor false /BRColorMode 1>>) als Testkandidat für noch gesättigtere Ausgabe als None; nur behalten, wenn der Testdruck besser ist als None.
  • README: neuer Abschnitt, warum der AirPrint-Dialog nur IPP-Standardoptionen zeigt und wie PPD-Optionen gesetzt werden (Env-Var, CUPS-Web-UI, lp); Troubleshooting „Farben sind blass" mit der durchgeführten Testreihe; Dokumentation der funktionierenden S/W-Abbildung.

Kein Bestandteil: Änderungen am Containerfile (die PPD wird bereits installiert), am Verbindungs-/Zertifikatsverhalten oder eine Server-seitige Erzwingung von Graustufen über pdftops-renderer=gs (ausgeschlossen, weil der Ghostscript-Renderer genau die PS-Interpreter-Bugs umgeht, die der Poppler-Renderer bei Brother vermeidet).

Capabilities

New Capabilities

(keine)

Modified Capabilities

  • printserver/cups:
    • Neues Requirement „Queue-Defaults sind zur Laufzeit konfigurierbar": PRINTER_OPTIONS wird bei jedem Start als lpadmin -o gesetzt.
    • Neues Requirement „Farbausgabe ist standardmäßig gesättigt": Queue und PPD-Default für BRColorMode sind None (UseCIEColor aus), sofern nicht durch PRINTER_OPTIONS überschrieben.
    • Geändertes Requirement „Hardware options are sent to the printer": Szenario „Colour or mono" wird um die driverless-Clients erweitert – print-color-mode=monochrome eines AirPrint-Clients muss zu BRPrintQuality=Black und damit zu den mono-Parametern im PostScript führen; zusätzlich Szenarien für print-quality.

Impact

  • assets/Brother HL-4150CDN/ppd/BR4150_2.PPD (Default BRColorMode, neue APPrinterPreset-Einträge, ggf. neue Choice) – die Herstellerdatei wird direkt im Repo gepatcht, der Build bleibt unverändert.
  • entrypoint.sh (Auswertung von PRINTER_OPTIONS, idempotente Queue-Defaults).
  • README.md (Env-Var-Tabelle, „Printing options", Client-Unterstützung, Troubleshooting).
  • Verhalten für alle Clients (macOS, iOS, Linux): S/W-Auswahl wirkt ab dann geräteitig statt gar nicht; bestehende Ausgabe wird gesättigter.
  • Nicht betroffen: Containerfile, Zertifikat/Discovery, Windows-Weg.