# 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 `<>`, 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`** (`<>`) 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.