Files
printserver/openspec/changes/archive/2026-10-20-fix-colour-defaults-and-client-options/proposal.md
T
juergen 30670de93b
ci/woodpecker/push/build Pipeline was successful
fix pale colours and map driverless print options
Set *DefaultBRColorMode: None in the vendor PPD so every job sends
<</UseCIEColor false>>: Brother's Normal/Vivid modes enable the printer's
own CIE conversion, which washed the colours out.

Add six APPrinterPreset entries mapping print-color-mode and
print-quality from driverless (AirPrint/IPP) clients onto the Brother
device options; they use the notation CUPS generates itself (Apple
metadata as 'key value' pairs, PPD options as '*Name Value'), because
key=value strings are silently discarded. print-quality is 3/4/5.

Add the PRINTER_OPTIONS env var: whitespace-separated key=value pairs
applied as queue defaults on every start via lpadmin -o, validated
against the queue's PPD, with warnings instead of a failed startup.

Document all of it in the README. The VividNoCIE candidate was dropped
after test prints showed no difference from None. Archive the OpenSpec
change and sync the printserver/cups spec with the two new
requirements.
2026-10-20 08:28:08 +02:00

93 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
- **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.
Verworfen: eine zusätzliche Choice `BRColorMode=VividNoCIE`
(`UseCIEColor false` + `/BRColorMode 1`) – die Testdrucke waren von `None`
nicht unterscheidbar, siehe `design.md`.
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.