# [Printers](https://crates.io/crates/printers): A printing APIs implementation for unix *(cups)* and windows *(winspool)*.
Provides all system printers, create and get print jobs.




## Documentation
See the references in [docs.rs](https://docs.rs/printers).
## Features
| Unix | cups | ✅ | ✅ | ✅ | ✅ |
| Windows | winspool | ✅ | ✅ | ✅ | 🤔** |
> ** On Windows this lib use RAW datatype to process printing. Expected output depends of printer firmware.
## Examples
**Get all available printers**
```rust
let printers = get_printers();
// Vec<Printer>
```
**Create print job of an byte array**
```rust
printer.print("42".as_bytes());
// Result<(), &'static str>
```
**Create print job of an file**
```rust
printer.print_file("my_file/example/path.txt");
// Result<(), &'static str>
```
**Get a printer by name**
```rust
let my_printer = get_printer_by_name("my_printer");
// Option<Printer>
```
**Get the default printer**
```rust
let printer = get_default_printer();
// Option<Printer>
```
**Simple compilation**
```rust
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("") or Ok(())
}
// 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(())
}
}
```