#printing #print #cups #windows-system #winspool

printers

A lib to get printers and print files on unix and windows

2 releases (1 stable)

new 2.1.0-rc2 Nov 20, 2024
2.1.0-rc Nov 18, 2024
2.0.0 Nov 25, 2023
1.2.0 Feb 9, 2023
1.0.2 Aug 23, 2022

#39 in Windows APIs

Download history 37/week @ 2024-08-04 91/week @ 2024-08-11 43/week @ 2024-08-18 17/week @ 2024-08-25 25/week @ 2024-09-01 41/week @ 2024-09-08 92/week @ 2024-09-15 119/week @ 2024-09-22 69/week @ 2024-09-29 122/week @ 2024-10-06 91/week @ 2024-10-13 44/week @ 2024-10-20 93/week @ 2024-10-27 55/week @ 2024-11-03 62/week @ 2024-11-10 274/week @ 2024-11-17

485 downloads per month

MIT license

39KB
887 lines

Printers

Printers is a simple lib to call printers apis for unix (cups) and windows (winspool) systems.

Printers can provide a list of printers available on the system and send print jobs to them

Behavior

Return a vector of all available printers

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

Create print job of an byte array

let data = "42".as_bytes();
printer.print(data); // -> Result<(), &'static str>

Create print job of an file

let path = "my_file/example/path.txt";
printer.print_file(path); // -> Result<(), &'static str>

Find printer by the name

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

Get the default printer

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

Example

use printers::{get_printer_by_name, get_default_printer, get_printers};

fn main() {

    // Iterate all available printers
    for printer in get_printers() {
        println!("{:?}", printer);
    }

    // Get a printer by the name
    let my_printer = get_printer_by_name("my_printer");
    if my_printer.is_some() {
        my_printer.unwrap().print_file("notes.txt", None);
        // Err("cupsPrintFile failed")
    }

    // Use the default printer
    let default_printer = get_default_printer();
    if default_printer.is_some() {
        default_printer.unwrap().print("dlrow olleh".as_bytes(), Some("My Job"));
        // Ok(())
    }

}

System Requirements

Windows

For Windows printers will be use winspool apis to retrive printers and create jobs with RAW datatypes

Note: For some reasons, printing for complex files like PDF, DOCx and others can`t works as well in many printers. If you want collaborate to implement winspool for printing documents, your contribution will be greatly appreciated

Unix

For Unix is necessary cups service installed

Dependencies