tauri_plugin_printer/
lib.rs1mod windows;
2mod declare;
3mod fsys;
4use tauri::{
5 plugin::{Builder, TauriPlugin},
6 Runtime,
7};
8
9use std::env;
10
11#[tauri::command(rename_all = "snake_case")]
12fn create_temp_file(buffer_data: String, filename: String) -> String {
14 let dir = env::temp_dir();
15 let result = fsys::create_file_from_base64(buffer_data.as_str(), format!("{}{}", dir.display(),filename).as_str());
16 if result.is_ok() {
17 return format!("{}{}", dir.display(),filename);
18 }
19 return "".to_owned()
20}
21
22
23#[tauri::command(rename_all = "snake_case")]
24fn remove_temp_file(filename: String) -> bool {
26 let dir = env::temp_dir();
27 let result = fsys::remove_file(format!("{}{}", dir.display(),filename).as_str());
28 if result.is_ok() {
29 return true;
30 }
31 return false
32}
33
34#[tauri::command]
35fn get_printers() -> String {
37 if cfg!(windows) {
38 return windows::get_printers();
39 }
40
41 return "Unsupported OS".to_string();
42}
43
44#[tauri::command(rename_all = "snake_case")]
45fn get_printers_by_name(printername: String) -> String {
47 if cfg!(windows) {
48 return windows::get_printers_by_name(printername);
49 }
50
51 return "Unsupported OS".to_string();
52}
53
54#[tauri::command(rename_all = "snake_case")]
55fn print_pdf(
57 id: String,
58 path: String,
59 printer_setting: String,
60 remove_after_print: bool
61) -> String {
62 if cfg!(windows) {
63 let options = declare::PrintOptions{
64 id,
65 path,
66 print_setting: printer_setting,
67 remove_after_print: remove_after_print
68 };
69 return windows::print_pdf(options);
70 }
71
72 return "Unsupported OS".to_string();
73}
74
75
76#[tauri::command(rename_all = "snake_case")]
77fn get_jobs(printername: String) -> String {
79 if cfg!(windows) {
80 return windows::get_jobs(printername);
81 }
82 return "Unsupported OS".to_string();
83}
84
85#[tauri::command(rename_all = "snake_case")]
86fn get_jobs_by_id(printername: String, jobid: String) -> String {
88 if cfg!(windows) {
89 return windows::get_jobs_by_id(printername, jobid);
90 }
91 return "Unsupported OS".to_string();
92}
93
94#[tauri::command(rename_all = "snake_case")]
95fn resume_job(printername: String, jobid: String) -> String {
97 if cfg!(windows) {
98 return windows::resume_job(printername,jobid);
99 }
100 return "Unsupported OS".to_string();
101}
102
103#[tauri::command(rename_all = "snake_case")]
104fn restart_job(printername: String, jobid: String) -> String {
106 if cfg!(windows) {
107 return windows::restart_job(printername,jobid);
108 }
109 return "Unsupported OS".to_string();
110}
111
112#[tauri::command(rename_all = "snake_case")]
113fn pause_job(printername: String, jobid: String) -> String {
115 if cfg!(windows) {
116 return windows::pause_job(printername, jobid);
117 }
118 return "Unsupported OS".to_string();
119}
120
121#[tauri::command(rename_all = "snake_case")]
122fn remove_job(printername: String, jobid: String) -> String {
124 if cfg!(windows) {
125 return windows::remove_job(printername, jobid);
126 }
127 return "Unsupported OS".to_string();
128}
129
130pub fn init<R: Runtime>() -> TauriPlugin<R> {
131 if cfg!(windows) {
132 windows::init_windows();
133 }
134 Builder::new("printer")
135 .invoke_handler(tauri::generate_handler![
136 create_temp_file,
137 remove_temp_file,
138 get_printers,
139 get_printers_by_name,
140 print_pdf,
141 get_jobs,
142 get_jobs_by_id,
143 resume_job,
144 restart_job,
145 pause_job,
146 remove_job
147 ])
148 .build()
149}
150