2个稳定版本
2.0.1 | 2024年3月21日 |
---|
#188 在 操作系统 中
24KB
456 行
打印机
打印机 不是一个打印机驱动或CUPS的库。打印机是一个简单的库,用于调用Unix (cups) 和Windows (winspool) 系统的打印机API。
打印机可以提供系统上可用的打印机列表,并执行文档打印。
行为
返回可用打印机的向量
printers::get_printers() -> Vec<Printer>
在写入临时文件后请求打印
printers::print(Printer, &[u8]) -> Job
printer.print(&[u8]) -> Job
从路径请求打印特定文件
printers::print_file(Printer, &str) -> Job
printer.print_file(&str) -> Job
尝试通过名称获取并返回单个打印机
printers::get_printer_by_name(&str) -> Option<Printer>
注意:get_printer_by_name是一个简单的工具,这个函数只是对get_printers()的结果应用过滤器。它们将在未来得到改进,以更具性能
示例
use printers;
fn main() {
// Vector of system printers
let printers = printers::get_printers();
// Print directly in all printers
for printer in printers.clone() {
println!("{:?}", printer);
let status1 = printer.print("42".as_bytes(), Some("Everything"));
println!("{:?}", status1);
// Note: When you don't give the job_name
// the file path will be that name by default
let status2 = printer.print_file("/path/to/any.file", None);
println!("{:?}", status2);
}
// Print directly by printer name
printers::print("printer-a", "42".as_bytes(), Some("Everything"));
printers::print_file("printer-b", "/path/to/any.file", Some("My Job"));
// Try printer by name
let test_printer = printers::get_printer_by_name("test");
println!("{:?}", test_printer);
}
系统要求
Windows
对于Windows,将使用winspool API检索打印机和PowerShell将文档发送到打印机。
注意:由于一些复杂的原因,打印操作仍然使用PowerShell执行。如果您想合作实现打印文档的winspool,您的贡献将非常受欢迎。
Unix
对于Unix,需要安装cups服务。
依赖项
~43KB