Printer

v1.2.2

Print images and PDFs to any CUPS printer. PPD-aware: reads paper sizes, margins, resolution, and duplex at runtime. Use when the user wants to print files (...

0· 786· 9 versions· 4 current· 4 all-time· Updated 1h ago· MIT-0
byOliver Drobnik@odrobnik

Printer

Print images and PDF files to any CUPS printer. All settings (paper size, margins, resolution, duplex) are read from the printer's PPD file at runtime.

Entry point: {baseDir}/scripts/print.py

Setup

See SETUP.md for prerequisites and platform notes.

Commands

List Printers

python3 {baseDir}/scripts/print.py list
python3 {baseDir}/scripts/print.py list --json

Shows available printers with status and which is the system default.

Print a File

python3 {baseDir}/scripts/print.py print /path/to/file.pdf
python3 {baseDir}/scripts/print.py print /path/to/image.png
python3 {baseDir}/scripts/print.py print /path/to/file.pdf --printer "Custom_Printer"
python3 {baseDir}/scripts/print.py print /path/to/file.pdf -o InputSlot=tray-2
python3 {baseDir}/scripts/print.py print /path/to/file.pdf -o cupsPrintQuality=High -o sides=one-sided
python3 {baseDir}/scripts/print.py print /path/to/file.pdf --json
  • PDFs: Sent directly to the printer with correct media/duplex settings
  • Images (PNG, JPG, GIF, BMP, TIFF, WebP): Converted to PDF at the printer's native DPI, centered within the printable area, then printed
  • -o KEY=VALUE: Pass any CUPS option (repeatable). Use options to discover available settings (tray, quality, media type, duplex, color mode).
  • Symlinks are followed but the resolved path must be inside the workspace or /tmp

Printer Info

python3 {baseDir}/scripts/print.py info
python3 {baseDir}/scripts/print.py info --printer "Custom_Printer"
python3 {baseDir}/scripts/print.py info --json

Shows manufacturer, model, resolution, color support, default paper, duplex mode, input trays, and all paper sizes with margins.

Printer Options

python3 {baseDir}/scripts/print.py options
python3 {baseDir}/scripts/print.py options --printer "Custom_Printer"
python3 {baseDir}/scripts/print.py options --json

Shows all CUPS options with current values and available choices.

Notes

  • Uses the system default printer unless --printer is specified
  • All commands support --json for machine-readable output
  • Image conversion respects the printer's imageable area (margins) from the PPD
  • Only printable file types accepted: PDF, PNG, JPG, GIF, BMP, TIFF, WebP

Tips

Tray / Media Selection

Some PPDs have empty InputSlot command strings, so -o InputSlot=tray-2 alone may not work. Use the combined media keyword instead:

# Print to a specific tray with media type
python3 {baseDir}/scripts/print.py print envelope.pdf -o media=A6,tray-2,envelope

# Format: -o media=SIZE,TRAY,TYPE
# SIZE: A4, A5, A6, EnvDL, EnvC5, Letter, etc.
# TRAY: tray-1, tray-2, auto
# TYPE: stationery, envelope, cardstock, labels, etc.

This passes tray selection via IPP directly, bypassing the PPD.

Version tags

latestvk970x1hsgs8e672z2jps5s1ep581as2k

Runtime requirements

🖨️ Clawdis
Binspython3, lp, lpstat, lpoptions