Skip to main content

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};