LinuxCommandLibrary

foo2qpdl-wrapper

Print to foo2qpdl-compatible printers

SYNOPSIS

foo2qpdl-wrapper [OPTIONS] [] [>output_file]
(Typically invoked by CUPS, reading from stdin and writing to stdout)

PARAMETERS

-r <resolution>
    Set the output resolution in DPI, e.g., 600, 1200.

-d <duplex_mode>
    Specify duplex printing mode: 0 (simplex), 1 (long edge), 2 (short edge).

-p <paper_size>
    Define the paper size, e.g., letter, legal, a4, a5.

-c <color_mode>
    Select color mode: 0 (grayscale), 1 (color).

-m <media_type>
    Set the media type, e.g., plain, glossy, transparency.

-s <source_tray>
    Specify the paper source tray, e.g., upper, lower, manual.

-n <N-up>
    Print multiple pages per sheet (N-up), e.g., 2, 4, 6.

-t
    Enable toner save mode.

-v
    Enable verbose output for debugging.

DESCRIPTION

The foo2qpdl-wrapper command is a utility that acts as a front-end for the foo2qpdl driver, which in turn converts PostScript data into the Quick Printer Description Language (QPDL) format. QPDL is a proprietary page description language used by certain Hewlett-Packard, Canon, Lexmark, and Samsung laser printers.

This wrapper is typically used within the Common Unix Printing System (CUPS) as a filter. When a print job is submitted to a CUPS queue configured for a QPDL printer, CUPS passes the PostScript data to foo2qpdl-wrapper. The wrapper then parses command-line options (often derived from CUPS job options) and environment variables, translating them into the appropriate arguments for the underlying foo2qpdl executable. It then executes foo2qpdl, passing the PostScript input and writing the resulting QPDL output to standard output, which is then sent to the printer.

The foo2qpdl project aims to provide an open-source driver for various printers that use proprietary page description languages like QPDL, ZjStream, and PCLm, enabling their use with Linux and other Unix-like operating systems.

CAVEATS

Printer support depends on the underlying foo2qpdl driver and its firmware/ICM file availability. Some advanced printer features might not be fully supported. Performance can vary depending on document complexity and printer resolution settings. Debugging often requires examining the output of foo2qpdl itself or the CUPS error logs.

CUPS INTEGRATION

When used with CUPS, foo2qpdl-wrapper typically receives printer options via CUPS environment variables (like PPD_OPTIONS) or as command-line arguments passed by the CUPS backend. It then translates these into the appropriate foo2qpdl options. Configuration is usually handled automatically when adding a printer via CUPS, especially if a PPD file generated by the foo2zjs tools is used.

HISTORY

The foo2qpdl-wrapper is part of the larger foo2zjs project, which began in 2004 to provide open-source drivers for various ZjStream, QPDL, and PCLm based laser printers, primarily from HP, Canon, Lexmark, and Samsung, that lacked native Linux support. The project was initiated to reverse-engineer these proprietary protocols, allowing users to leverage their hardware without relying on vendor-provided binary blobs or Windows drivers. Over time, it has evolved to support a wide range of devices, becoming a crucial component for many Linux users with such printers.

SEE ALSO

foo2qpdl(1), cupsd(8), lp(1), lpr(1)

Copied to clipboard