winprint_kit/lib.rs
1//! # winprint-kit
2//!
3//! ```no_run
4//! use std::sync::Arc;
5//! use winprint_kit::{PrintFailure, PrintPipeline, PrintStatus, StatusSink};
6//!
7//! struct Sink;
8//! impl StatusSink for Sink {
9//! fn on_status(&self, id: &str, status: PrintStatus, error: Option<PrintFailure>) {
10//! println!("[{id}] {status:?} {error:?}");
11//! }
12//! }
13//!
14//! fn main() -> Result<(), Box<dyn std::error::Error>> {
15//! let rt = tokio::runtime::Builder::new_current_thread().build()?;
16//! rt.block_on(async {
17//! let pipeline = PrintPipeline::new();
18//! pipeline.list_printers().await?;
19//!
20//! let sink = Arc::new(Sink);
21//! pipeline
22//! .print_document(
23//! "job-1",
24//! "https://example.com/file.pdf",
25//! "Microsoft Print to PDF",
26//! &Default::default(),
27//! sink,
28//! )
29//! .await;
30//! Ok(())
31//! })
32//! }
33//! ```
34
35pub mod file_type;
36pub mod http;
37
38#[cfg(feature = "html")]
39pub mod html;
40#[cfg(feature = "office")]
41pub mod office;
42
43mod download;
44mod pipeline;
45mod print;
46
47pub use pipeline::{PrintFailure, PrintFailureKind, PrintPipeline, PrintStatus, StatusSink};
48pub use print::{PageSizeDetail, PrintOptions, PrinterCapabilities};