tauri-plugin-printer 2.0.3

Tauri V2 Plugin for printer access
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PrinterItem {
    pub id: String,
    pub name: String,
    pub driver_name: Option<String>,
    pub job_count: Option<i32>,
    pub print_processor: Option<String>,
    pub port_name: Option<String>,
    pub share_name: Option<String>,
    pub computer_name: Option<String>,
    pub printer_status: Option<i32>,
    pub shared: bool,
    pub printer_type: Option<i32>,
    pub priority: Option<i32>,
    pub is_default: bool,
}

#[derive(Debug, Deserialize)]
#[cfg(target_os = "windows")]
pub(crate) struct PrinterRaw {
    #[serde(rename = "Name")]
    pub name: Option<String>,
    #[serde(rename = "DriverName")]
    pub driver_name: Option<String>,
    #[serde(rename = "JobCount")]
    pub job_count: Option<i32>,
    #[serde(rename = "PrintProcessor")]
    pub print_processor: Option<String>,
    #[serde(rename = "PortName")]
    pub port_name: Option<String>,
    #[serde(rename = "ShareName")]
    pub share_name: Option<String>,
    #[serde(rename = "ComputerName")]
    pub computer_name: Option<String>,
    #[serde(rename = "PrinterStatus")]
    pub printer_status: Option<i32>,
    #[serde(rename = "Shared")]
    pub shared: Option<bool>,
    #[serde(rename = "Type")]
    pub printer_type: Option<i32>,
    #[serde(rename = "Priority")]
    pub priority: Option<i32>,
    #[serde(rename = "IsDefault")]
    pub is_default: Option<bool>,
}

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PrintJob {
    pub id: String,
    pub job_id: i32,
    pub document_name: Option<String>,
    pub total_pages: Option<i32>,
    pub position: Option<i32>,
    pub size: Option<i64>,
    pub username: Option<String>,
    pub pages_printed: Option<i32>,
    pub job_time: Option<i64>,
    pub computer_name: Option<String>,
    pub data_type: Option<String>,
    pub printer_name: String,
    pub priority: Option<i32>,
    pub submitted_time: Option<String>,
    pub job_status: i32,
}

#[derive(Debug, Deserialize)]
#[cfg(target_os = "windows")]
pub(crate) struct PrintJobRaw {
    #[serde(rename = "DocumentName")]
    pub document_name: Option<String>,
    #[serde(rename = "Id")]
    pub id: Option<i32>,
    #[serde(rename = "TotalPages")]
    pub total_pages: Option<i32>,
    #[serde(rename = "Position")]
    pub position: Option<i32>,
    #[serde(rename = "Size")]
    pub size: Option<i64>,
    #[serde(rename = "UserName")]
    pub username: Option<String>,
    #[serde(rename = "PagesPrinted")]
    pub pages_printed: Option<i32>,
    #[serde(rename = "JobTime")]
    pub job_time: Option<i64>,
    #[serde(rename = "ComputerName")]
    pub computer_name: Option<String>,
    #[serde(rename = "Datatype")]
    pub data_type: Option<String>,
    #[serde(rename = "PrinterName")]
    pub printer_name: Option<String>,
    #[serde(rename = "Priority")]
    pub priority: Option<i32>,
    #[serde(rename = "SubmittedTime")]
    pub submitted_time: Option<String>,
    #[serde(rename = "JobStatus")]
    pub job_status: Option<i32>,
}

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PrinterCapabilities {
    pub printer_name: String,
    pub color: Option<bool>,
    pub collate: Option<bool>,
    pub duplexing_mode: Option<String>,
    pub paper_size: Option<String>,
}

#[derive(Debug, Deserialize)]
#[cfg(target_os = "windows")]
pub(crate) struct PrinterCapabilitiesRaw {
    #[serde(rename = "PrinterName")]
    pub printer_name: Option<String>,
    #[serde(rename = "Color")]
    pub color: Option<bool>,
    #[serde(rename = "Collate")]
    pub collate: Option<bool>,
    #[serde(rename = "DuplexingMode")]
    pub duplexing_mode: Option<String>,
    #[serde(rename = "PaperSize")]
    pub paper_size: Option<String>,
}

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PrintResult {
    pub success: bool,
    pub message: String,
}

#[derive(Debug, Deserialize)]
pub(crate) struct IdPayload {
    pub value: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PrinterNamePayload {
    pub printer_name: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct JobPayload {
    pub printer_name: String,
    pub job_id: i32,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PrintPdfPayload {
    pub printer_name: Option<String>,
    pub path: String,
    #[serde(default)]
    pub settings: String,
    #[serde(default)]
    pub remove_after_print: bool,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PrintPdfDataPayload {
    pub printer_name: Option<String>,
    pub data: String,
    #[serde(default)]
    pub settings: String,
}