main
reng 4 months ago
parent 6b0b007c26
commit 997132c41a
  1. 2
      src-tauri/Cargo.toml
  2. 28
      src-tauri/src/lib.rs

@ -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"

@ -96,30 +96,42 @@ fn get_printer_capabilities(device_name: String) -> HashMap<String, Vec<String>>
#[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::<PredefinedMediaName>()
.expect("Invalid media size name");
let a6_media = capabilities
.page_media_sizes()
.find(|x| format!("{:?}", x.as_predefined_name()) == size)
.unwrap();
.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() {

Loading…
Cancel
Save