printers 2.3.0

Get printers and print files on unix and windows
Documentation

Printers: A printing APIs implementation for unix (cups) and windows (winspool).

Provides all system printers, create and manage print jobs.

Crates.io Version Crates.io License docs.rs Crates.io Downloads (recent)

Documentation

See the references in docs.rs.

🛠️ Features

Feature Status
List available printers
List printer jobs
Manage printer jobs (pause, resume, cancel, restart)
Print plain text
Print PDF, images etc... (*1)
Converters (Ghostscript)
DOCx / XLS / PPTx converter
Converter pipeline (doc -> pdf -> ps)

*1 If necessary, you can raster the file using converters supported by the lib, such as Ghostscript. See the examples below.

👇 Examples

Get all available printers

let printers = get_printers();
// Vec<Printer>

Create print job of an byte array

let job_id = printer.print("42".as_bytes(), PrinterJobOptions::none());
// Result<u64, PrintersError>

Create print job of an file

let job_id = printer.print_file("my_file/example/path.pdf", PrinterJobOptions {
    name: Some("My print job"),
    raw_properties: &[
        ("copies", "2"),
        ("document-format", "RAW"),
    ],
    converter: Converter::Ghostscript(GhostscriptConverterOptions::ps2write()),
});
// Result<u64, PrintersError>

Get a printer by name

let my_printer = get_printer_by_name("my_printer");
// Option<Printer>

Get the default printer

let printer = get_default_printer();
// Option<Printer>

Manage state of printer job

// Pause
printer.pause_job(123);

// Resume
printer.resume_job(123);

// Restart
printer.restart_job(123);

// Cancel
printer.cancel_job(123)