add fix color proposal

This commit is contained in:
juergen committed 2026-10-20 07:30:09 +02:00
1 parent 843c6866a5
commit 75b68fe438
7 files changed
+407 -4

No files matched your search

@@ -0,0 +1,92 @@
# 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.