Sub-Task 1: Windows Native Raw Print Spooler (GDI/ICM Bypass) #26

Closed
opened 2026-08-23 10:24:20 +01:00 by gronod · 1 comment
Owner

Objective

Implement the Windows-specific raw printing backend to bypass the OS Image Color Management (ICM) layer.

Tasks

  • Evaluate the winprint and printers crates (evaluated direct Win32 GDI/Printing APIs via windows crate).
  • Implement a Tauri command get_windows_printers to enumerate available system printers.
  • Implement a Tauri command print_target_windows that accepts a printer name and TIFF file path.
  • Ensure the GDI print pipeline explicitly calls SetICMMode(hDC, ICM_OFF).
  • Manipulate the printer's DEVMODE structure to instruct the driver to disable colour adjustments (dmICMMethod = DMICMMETHOD_NONE).
  • Send unmanaged 24-bit BGR DIB payload with 4-byte row stride alignment via StretchDIBits for inkjet compatibility.
### Objective Implement the Windows-specific raw printing backend to bypass the OS Image Color Management (ICM) layer. ### Tasks - [x] Evaluate the [`winprint`](https://crates.io/crates/winprint) and [`printers`](https://crates.io/crates/printers) crates (evaluated direct Win32 GDI/Printing APIs via `windows` crate). - [x] Implement a Tauri command `get_windows_printers` to enumerate available system printers. - [x] Implement a Tauri command `print_target_windows` that accepts a printer name and TIFF file path. - [x] Ensure the GDI print pipeline explicitly calls `SetICMMode(hDC, ICM_OFF)`. - [x] Manipulate the printer's `DEVMODE` structure to instruct the driver to disable colour adjustments (`dmICMMethod = DMICMMETHOD_NONE`). - [x] Send unmanaged 24-bit BGR DIB payload with 4-byte row stride alignment via `StretchDIBits` for inkjet compatibility.
gronod added this to the Milestone 6: Native Raw OS Printing Engine milestone 2026-08-23 10:24:20 +01:00
Author
Owner

Implemented in PR #29. Changes are ready for review on branch feature/issue-26-windows-raw-print.

Implemented in PR #29. Changes are ready for review on branch `feature/issue-26-windows-raw-print`.
Sign in to join this conversation.