Skip to main content

Crate winprint_kit

Crate winprint_kit 

Source
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::Client HTTP client.
office
Office → PDF conversion (PowerShell + COM, requires MS Office 2010+).

Structs§

PageSizeDetail
PrintFailure
Machine-readable cause of a failed print. Applications localize kind; detail is a concise English fallback for logs and for kinds the app does not localize.
PrintOptions
PrintPipeline
PrinterCapabilities

Enums§

PrintFailureKind
PrintStatus

Traits§

StatusSink