diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index f70e38b..3b2f987 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -18,7 +18,7 @@ crate-type = ["staticlib", "cdylib", "rlib"] tauri-build = { version = "2", features = [] } [dependencies] -tauri = { version = "2", features = [] } +tauri = { version = "2", features = ["devtools"] } tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 88b3719..ce3ef71 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -96,30 +96,42 @@ fn get_printer_capabilities(device_name: String) -> HashMap> #[tauri::command] fn print_document(device_name: String, document_path: String, dpi: String, color: String, size: String) { println!("Printing document: {}, {}, {}, {}", document_path, size, dpi, color); - let my_device = match get_my_device(device_name) { + let my_device = match get_my_device(device_name.clone()) { Some(device) => device, None => { - println!("My Printer not found."); + println!("Printer not found: {}", device_name); return; } }; - println!("My Printer: {:?}", my_device.name()); + // println!("My Printer: {:?}", my_device.name()); let capabilities = PrintCapabilities::fetch(&my_device).unwrap(); + + let parsed_size = size.parse::() + .expect("Invalid media size name"); + let a6_media = capabilities - .page_media_sizes() - .find(|x| format!("{:?}", x.as_predefined_name()) == size) - .unwrap(); + .page_media_sizes() + .find(|x| x.as_predefined_name() == Some(parsed_size)) + .expect("Media size not supported by printer"); let mut builder = PrintTicketBuilder::new(&my_device).unwrap(); builder.merge(a6_media).unwrap(); let ticket = builder.build().unwrap(); - // let theprinter = PdfiumPrinter::new(my_device); - let theprinter = ImagePrinter::new(my_device); let path = Path::new(&document_path); - theprinter.print(path, ticket).unwrap(); + + if path.extension().map(|ext| ext.eq_ignore_ascii_case("pdf")).unwrap_or(false) { + let printer=PdfiumPrinter::new(my_device); + printer.print(path, ticket).unwrap(); + } else { + let printer=ImagePrinter::new(my_device); + printer.print(path, ticket).unwrap(); + }; + // let theprinter = PdfiumPrinter::new(my_device); + // let theprinter = ImagePrinter::new(my_device); + // theprinter.print(path, ticket).unwrap(); } #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() {