# xhs-electronic-print 使用文档 ## xhs-electronic-print 是一个用于在不同操作系统上打印的 Rust 包,支持 Windows7 Windows8 Window10 和 macOS 平台。本文档将指导您如何集成和使用该库。 技术栈: Tauri VUE WEBSOKCET WIN7 WIN10 MAC Print 打印协议(支持 mac,win7 ,window10) ![电子面单端](https://github.com/user-attachments/assets/2abf0e86-8969-4657-9521-1089699b6347) 发送打印/预览数据协议(print) 菜鸟打印协议: { "cmd":"print", "requestID":"123456789", "version":"1.0", "task":{ "taskID":"1", "preview":false, "printer":"", "previewType":"pdf", "firstDocumentNumber":10, "totalDocumentCount":100, "documents":[ { "documentID":"10000001", "contents":[ { "encryptedData":"AES:DTqwa4Jcu6uPlUpnjBJ0PXI59KFw16QDENY6G8e27nuu1N9ovmjmqKkxZVFO/nxpI/qUQHUcR6AA8u3kxiDIn39m3Cote2og2AM8EHqigfUgkFTtRL8GzmAUGLJ1WWfeGqexNXXXAQ6r4ykSpBoHn7Wk4mZRG3Zw1skMw/doRGHBEt6WArUx0HKb9Yd3XdZIyvB5RejvtC7mHKt+J0YEsVPmPrAsxE3gZaWeJejtoHBLk1kwBADsG7EVbawFchHeMbFuhPhjNKBZ9tYp+f+UuAPetrbqJ2xwlaf3FT7kgqc90C9QYYzhhdjy973ygmApEE4kLWQjYrZyc7Gh66iOjMOZFPlSu2UkL1KsLEUWR1WVUD7DGyqDjnxrWDhsp03cT2F5x2QqgMZiloBfRgA6NiVQaLWNfCaNhhAJLp81zXS7EAyYbJ/EafP6P2eFT9GWYjfkQ79j40DIxVinVR8SnhsBmdmT28FGTNldI6qqUIn2rOoyIMbGlv9qan5rmibmIqVDKABauLoSVYK9ovZhfSSLAm6Tl8T9ApLETwwQvtSjssf+4jyW1f2+D0p/foBc++4HEUGXgbgaJJNaEDRgyV1UxD3IqwBeV+4Q58uRXXodIn6zujRHOgC9slJjwfkPzATNZZnSXexKPHtXqBmLeAv2Gkb9XkFm/d+9zwE6zKHH2gD8zDS3qgbsvaygc08Xh8PvUnjbxXXlYdFMk9Yk6x8VLNPSSO8vyF5XqN1CqrWwuf5jtNg20j9SRAYxMAHuYHxAiyxiUQmKuDnYioaVTfp5w5bmN1PvStt3TqVB4OU15pzXYOSsb57JyLNRYLX1r7DE7Vt1SUILPl/1HXApGP9kRwpgvYP0bWAX9uLkohlWfWpBrPTAqGCxfuTN4ugM1qz1hoeXU6mJgMZn/dQD3CZ0b22LkZPGFVK88Wg6QS8b9UJmOad9yXyo/jMDpRp2gmo+2FBAsq53AY4SiQ2DGK+Qmx6+i0+LSZGgcUknzkAZ04dX3cws1mWiknDHiEu7kzkOrHTQGTw60j0iOYDZJhWzAJNqUw/vLfyh7K4u6MoH1i4Pu4fvyaMDCtOQ0dfCSYLmnilQT23l98nzM+X+T3rVgH5l6tydAIRnE5RKPlyn0ACEIJ+WXcUzpZCioopDAGeQjS0sjbokeNLglQ8PsdTR+it2wtpmDOh32h2TrDQjOrjB8B1GqxSYn90vbq7ZjGIRgF5SQY2UXe20miPdoykLc0qPSXGF5BGZ9cUvNdNIE3AltL6uPI7hLkdT11ndCW7B+U/JpOVU6vJBeWqLOzyY6av0P+kPsTRKW0mtJJ6hG01q7t1uvX6wZg2jaIEk8pAFmh5UCEcbkGwhTwMz3TqQ3nmhL/biq9q7acLMA3Ag1Yi6DE0nlfEZYEV9H8DOU8eHfcZqyuMzhC1kZXMEJyIi11b22MK4B5oO9Y14lE8nEIVSUHu11soKCqDfpJbssin/WcUUFel3/x8WmP3SwLWXI1VzfRvHSb5F+0sBFrn5tMn7RbFooMQHLla9x01vmwswOosKdFDdWGBvW/gLjUamquzCC8ogET7KNYknSbeWCPYEitgKw8Y1oqZjtj+1QK+y1opo5TZZuh+jVVI/+6vgqH94v6bzZfTDTNW7B+aasaJnWziVGLO3dJSWq4vQcTCAU4uu34bJ0eV1vE0MMgUtzesGQ7KTGT9ftR0ilHSyK3Ec55x5Nq3+1KDfgWR0PBNOUH2ls1s9dDaejUVDfIm+s4JNbKTTYz66zmxupgqu11enr6h3RyaEI/cfmm6y", "signature":"MD:DWZH1DbnDNfH6muKGiwJ/A==", "templateURL":"http://cloudprint.cainiao.com/template/standard/644703", "ver":"waybill_print_xiaohongshu_secret" }, { "data":{ "item":[ "iphone14 红色 256G/1", "iphone14 黑色 256G/1" ], "order":[ "P680942792256239451" ], "buyerMemo":[ "买家:打包注意点,尽快送达" ], "sellerMemo":[ "卖家:请及时签收" ] }, "templateURL":"https://cloudprint.cainiao.com/template/standard/629505/24" } ] } ] } } 小红书打印机协议:【本期不做加密】 { "cmd":"print", "requestID":"123456789", "version":"1.0", "task":{ "taskID":"1", "preview":false, "printer":"HPRT_N41BT", "previewType":"pdf", "firstDocumentNumber":10, "totalDocumentCount":100, "documents":[ { "documentID":"10000001", "contents":[ { "encryptedData":"{\"data\":{\"text\":{\"date\":\"2023/11/20\",\"time\":\"09:30:45\",\"count\":\"第1/2件\",\"packageText\":\"电子产品\",\"transferText\":\"深圳中转包\"},\"receiver\":{\"name\":\"李*\",\"phone\":\"13912345678\",\"address\":\"广东省深圳市南山区科技园路1号\"},\"senderInfo\":{\"name\":\"电子商城\",\"phone\":\"13598765432\",\"address\":\"江苏省南京市玄武区中山路200号\"},\"packageId\":\"LP00408358929126\"}}", "signature":"MD:DWZH1DbnDNfH6muKGiwJ/A==", "templateURL":"http://cloudprint.sit.xiaohongshu.com/template/standard/645928/7", "ver":"waybill_print_xiaohongshu_secret" }, { "data":{ "item":[ "iphone14 红色 256G/1", "iphone14 黑色 256G/1" ], "order":[ "P680942792256239451" ], "buyerMemo":[ "买家:打包注意点,尽快送达" ], "sellerMemo":[ "卖家:请及时签收" ] }, "templateURL":"https://cloudprint.sit.xiaohongshu.com/template/standard/645919/1" } ] } ] } } MAC测试结果 WIN7测试结果 WIN10测试结果 出参 开启 preview的情况: {"cmd":"print","status":"success","previewURL":"/var/folders/f4/ldmpclhs71n9bsnzyqtmsp740000gn/T/25950796_1726837889660.pdf"} 不开启preview的情况:【成功 下发打印任务】 {"cmd":"print","requestID":"123456789","taskID":"1","status":"success","previewURL":"","msg":""} 失败情况:【失败 没有传递打印机名称】 {"cmd":"print","requestID":"123456789","taskID":"1","status":"failed","previewURL":"","msg":"请选择打印机"} 菜鸟出参 { "cmd":"print", "requestID":"123458976", "taskID":"1", "status":"success", //如果是打印,表示打印任务提交成功,如果是预览,表示预览PDF文件生成成功 "previewURL":"http://127.0.0.1/previewxxx.pdf", //如果是预览,会返回这个属性,表示预览PDF文件的URL地址,如果是打印命令,不返回此属性 //如果是预览并且预览模式是previewType:image,会返回这个属性,表示预览图片的URL地址,如果是打印命令,不返回此属性 "previewImage": [ "http://127.0.0.1/preview1.jpg", "http://127.0.0.1/preview2.jpg", "http://127.0.0.1/preview3.jpg" ] } # 使用手册 安装 首先,在您的项目目录中的 Cargo.toml 文件中添加依赖项: toml 复制代码 [dependencies] xhs-electronic-print = "0.1.0" # 请更换为实际版本号 使用方法 首先,在您的主模块中引入必要的模块: rust 复制代码 use xhs_electronic_print::print; 打印功能 要执行打印操作,请使用 print 函数。该函数会根据操作系统的不同调用相应的打印逻辑。 rust 复制代码 fn main() { let id = "document_id".to_string(); let path = "/path/to/document.pdf".to_string(); let printer_setting = "high_quality".to_string(); let remove_after_print = true; // 打印后是否删除文件 let result = print(id, path, printer_setting, remove_after_print); println!("{}", result); } 参数说明 id: 打印任务的唯一标识符,用于跟踪打印状态。 path: 要打印的文件的路径。 printer_setting: 打印设置,根据具体需求进行自定义。 remove_after_print: 布尔值,指示在打印完成后是否删除文件。 返回值 该函数返回一个 String,表明打印操作的结果: "Windows-打印成功" 或 "MacOS-打印成功" 表示打印成功。 "Windows-打印失败: error_message" 或 "MacOS-打印失败: error_message" 表示打印失败,并返回具体的错误信息。 日志 库使用 log crate 进行日志记录。在使用之前,请确保在程序中初始化了日志记录器。例如: rust 复制代码 fn main() { env_logger::init(); // 其他代码 } 平台支持 Windows: 通过 windows 模块实现具体打印逻辑。 macOS: 通过 macos 模块实现具体打印逻辑。 自定义 如果您需要修改打印逻辑,可以在 declare 模块中定义 PrintOptions 结构体,并在 windows 和 macos 模块中实现打印具体操作。 示例 完整的一个示例代码如下所示: rust 复制代码 use xhs_electronic_print::print; fn main() { env_logger::init(); // 初始化日志 let id = "document123".to_string(); let path = "C:\\Users\\Username\\Documents\\file.pdf".to_string(); let printer_setting = "default".to_string(); let remove_after_print = false; let result = print(id, path, printer_setting, remove_after_print); println!("{}", result); } 结论 xhs-electronic-print 包抽象简化了打印操作,使得开发者可以轻松地在不同的平台上进行打印。请根据您的需要调整打印设置和文件路径。希望这份文档能帮助您充分利用这个库! 11:00:24 请给我一份 mackdown格式的使用文档 Certainly! Here's the markdown version of the usage documentation: markdown 复制代码 # xhs-electronic-print 使用文档 `xhs-electronic-print` 是一个用于在不同操作系统上打印的 Rust 包,支持 Windows 和 macOS 平台。本文档将指导您如何集成和使用该库。 ## 安装 首先,在您的项目目录中的 `Cargo.toml` 文件中添加依赖项: ```toml [dependencies] xhs-electronic-print = "0.1.0" # 请更换为实际版本号 使用方法 首先,在您的主模块中引入必要的模块: rust 复制代码 use xhs_electronic_print::print; 打印功能 要执行打印操作,请使用 print 函数。该函数会根据操作系统的不同调用相应的打印逻辑。 rust 复制代码 fn main() { let id = "document_id".to_string(); let path = "/path/to/document.pdf".to_string(); let printer_setting = "high_quality".to_string(); let remove_after_print = true; // 打印后是否删除文件 let result = print(id, path, printer_setting, remove_after_print); println!("{}", result); } 参数说明 id: 打印任务的唯一标识符,用于跟踪打印状态。 path: 要打印的文件的路径。 printer_setting: 打印设置,根据具体需求进行自定义。 remove_after_print: 布尔值,指示在打印完成后是否删除文件。 返回值 该函数返回一个 String,表明打印操作的结果: "Windows-打印成功" 或 "MacOS-打印成功" 表示打印成功。 "Windows-打印失败: error_message" 或 "MacOS-打印失败: error_message" 表示打印失败,并返回具体的错误信息。 日志 库使用 log crate 进行日志记录。在使用之前,请确保在程序中初始化了日志记录器。例如: rust 复制代码 fn main() { env_logger::init(); // 其他代码 } 平台支持 Windows: 通过 windows 模块实现具体打印逻辑。 macOS: 通过 macos 模块实现具体打印逻辑。 自定义 如果您需要修改打印逻辑,可以在 declare 模块中定义 PrintOptions 结构体,并在 windows 和 macos 模块中实现打印具体操作。 示例 完整的一个示例代码如下所示: rust 复制代码 use xhs_electronic_print::print; fn main() { env_logger::init(); // 初始化日志 let id = "document123".to_string(); let path = "C:\\Users\\Username\\Documents\\file.pdf".to_string(); let printer_setting = "default".to_string(); let remove_after_print = false; let result = print(id, path, printer_setting, remove_after_print); println!("{}", result); }