tauri_plugin_printer/
lib.rs

1mod 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")]
12// this will be accessible with `invoke('plugin:printer|create_temp_file')`.
13fn 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")]
24// this will be accessible with `invoke('plugin:printer|create_temp_file')`.
25fn 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]
35// this will be accessible with `invoke('plugin:printer|get_printers')`.
36fn 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")]
45// this will be accessible with `invoke('plugin:printer|get_printer_by_name')`.
46fn 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")]
55// this will be accessible with `invoke('plugin:printer|print_pdf')`.
56fn 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")]
77// this will be accessible with `invoke('plugin:printer|get_jobs')`.
78fn 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")]
86// this will be accessible with `invoke('plugin:printer|get_jobs_by_id')`.
87fn 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")]
95// this will be accessible with `invoke('plugin:printer|restart_job')`.
96fn 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")]
104// this will be accessible with `invoke('plugin:printer|restart_job')`.
105fn 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")]
113// this will be accessible with `invoke('plugin:printer|pause_job')`.
114fn 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")]
122// this will be accessible with `invoke('plugin:printer|remove_job')`.
123fn 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