Expand description
§winprint-kit
use std::sync::Arc;
use winprint_kit::{PrintFailure, PrintPipeline, PrintStatus, StatusSink};
struct Sink;
impl StatusSink for Sink {
fn on_status(&self, id: &str, status: PrintStatus, error: Option<PrintFailure>) {
println!("[{id}] {status:?} {error:?}");
}
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let rt = tokio::runtime::Builder::new_current_thread().build()?;
rt.block_on(async {
let pipeline = PrintPipeline::new();
pipeline.list_printers().await?;
let sink = Arc::new(Sink);
pipeline
.print_document(
"job-1",
"https://example.com/file.pdf",
"Microsoft Print to PDF",
&Default::default(),
sink,
)
.await;
Ok(())
})
}Modules§
- file_
type - Detect file types from URL or Content-Type.
- html
- HTML → PDF printing (WebView2).
- http
- Shared
reqwest::ClientHTTP client. - office
- Office → PDF conversion (PowerShell + COM, requires MS Office 2010+).
Structs§
- Page
Size Detail - Print
Failure - Machine-readable cause of a failed print. Applications localize
kind;detailis a concise English fallback for logs and for kinds the app does not localize. - Print
Options - Print
Pipeline - Printer
Capabilities