Files
printserver/openspec/changes/fix-colour-defaults-and-client-options/proposal.md
T
2026-10-20 07:30:09 +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.
- **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.