Office Printers (IPP)
Ordinary office printers — Canon, HP, Epson, Brother laser and inkjet models — work with ProxyBox out of the box. Network printers that speak IPP (which is virtually every office printer made in the last decade) are auto-discovered via mDNS/Bonjour, and USB-attached office printers are picked up on the USB bus. No driver installation, no setup.
These printers accept documents, not raw printer language: you send a PDF and the print pipeline renders it. This is also where the options field of the print API does its work.
Printing a PDF
Section titled “Printing a PDF”All three POST /print body forms work. The most common for integrations — point ProxyBox at a URL and let it fetch the document:
curl -X POST https://pbx-D8A4.pbxz.io/api/v1/print/ipp_Canon85e2b4-local \ -H 'Content-Type: application/json' \ -H 'X-API-Key: ULA9WHXMFCHF' \ -d '{ "content": "https://example.com/invoice-1234.pdf", "contentType": "pdf_url", "title": "Invoice #1234", "options": { "copies": 2, "duplex": "long-edge" } }'Or base64-encode the PDF and submit it inline with contentType: "pdf_base64", or POST the raw PDF bytes as application/octet-stream.
Print Options
Section titled “Print Options”The options object is honored by driver-processed printers like these (raw ZPL/ESC-POS printers ignore it). The ones you’ll actually use:
| Option | Example | Notes |
|---|---|---|
copies |
2 |
|
duplex |
"long-edge" |
Also "short-edge", "one-sided". Check capabilities.sidesSupported. |
colorMode |
"grayscale" |
"color" on color-capable printers — check capabilities.colorSupported. |
paperSize |
"a4" |
Must be one of the printer’s capabilities.mediaSupported values. |
pageRange |
"1-5" |
PDF only. |
fitToPage |
true |
Scale the PDF to the page. |
Unsupported options are silently ignored, so a job never fails because of an option the printer can’t do.
Discovering What a Printer Can Do
Section titled “Discovering What a Printer Can Do”Each printer in GET /printers carries a capabilities object captured during discovery — check it before building print requests instead of hard-coding values:
"capabilities": { "makeAndModel": "Canon MF731C/733C", "colorSupported": true, "documentFormatsSupported": ["application/pdf", "image/jpeg"], "mediaSupported": ["na_letter_8.5x11in", "iso_a4_210x297mm", "na_legal_8.5x14in"], "sidesSupported": ["one-sided", "two-sided-long-edge", "two-sided-short-edge"], "copiesSupported": [1, 99]}mediaSupportedholds the validpaperSizevalues.sidesSupportedtells you whether duplex is available.copiesSupportedis the[min, max]copies range.
- Model names vary by discovery source. Some printers report internal product codes over IPP; ProxyBox prefers the human-readable mDNS name when available, but don’t be surprised by a cryptic model string on an otherwise working printer.
- Test prints send a standard PDF test page (or a JPEG, for the rare printer that doesn’t accept PDF).
- Images: printers that advertise
image/jpeginsupportedFormatscan print images directly — otherwise convert to PDF first.
ProxyBox Docs v1.0.6
