Skip to content

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.

All three POST /print body forms work. The most common for integrations — point ProxyBox at a URL and let it fetch the document:

Terminal window
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.

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.

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]
}
  • mediaSupported holds the valid paperSize values.
  • sidesSupported tells you whether duplex is available.
  • copiesSupported is 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/jpeg in supportedFormats can print images directly — otherwise convert to PDF first.

ProxyBox Docs v1.0.6