3个版本 (破坏性更新)
0.3.0 | 2023年6月5日 |
---|---|
0.2.0 | 2023年6月5日 |
0.1.0 | 2023年6月4日 |
#253 in 图形API
300KB
2K SLoC
recibo - Rust的热敏打印机驱动程序
本项目为Epson的部分ESC/POS协议提供了实现,该协议由兼容的收据打印机使用。它可以在兼容的打印机上生成并打印包括基本格式化、条形码、图形和切割功能在内的收据。
示例用法
let driver = NetworkDriver::open("127.0.0.1", 9100)?;
let mut printer = Printer::open(driver)?;
printer.init()?
.align(Alignment::Center)?
.text_size(4, 4)?
.text("Hello World")?
.feed(2)?
.graphic(move |builder| {
builder.path("resources/rust-logo.png")
.size(GraphicSize::Normal)
})?
.feed(4)?
.cut()?;
目录
示例
有关更多使用示例,请参阅示例目录。
为了简单起见,示例将输出打印到控制台。
要启动示例,请使用以下命令
cargo run --example graphic --features "graphics" --quiet
如果您想将示例的输出直接发送到网络打印机,可以使用netcat命令
cargo run --example text | nc 192.168.0.100 9100
安装
对于标准功能(例如打印文本、条形码、二维码等),不需要额外的依赖
[dependencies]
recibo = "1.0.0"
如果您想处理位图图像,则需要启用image
特性
[dependencies]
recibo = { version = "1.0.0", features = ["graphics"] }
如果您启用特性,还可以使用serde启用反序列化和序列化
[dependencies]
recibo = { version = "1.0.0", features = ["serde"] }
适配器
库提供了两个用于与打印机通信的适配器
NetworkDriver
用于与网络打印机建立通信
let driver = NetworkDriver::open("192.168.0.100", 9100)?;
let printer = Printer::open(driver)?;
FileDriver
用于与串行打印机交互或写入文件
let driver = FileDriver::open("/tmp/output.bin")?;
let printer = Printer::open(driver)?;
ConsoleDriver
用于将输出写入控制台
let driver = ConsoleDriver::open();
let printer = Printer::open(driver)?;
支持的命令
某些命令可能不支持您的打印机
命令 | 描述 |
---|---|
init | 初始化打印机。 |
reset | 将打印机重置为其默认设置。 |
align | 将文本左对齐、右对齐或居中对齐。 |
left | 将左边距设置为n点。 |
width | 设置可打印区域的宽度。 |
font | 将字体设置为'a'、'b'或'c'样式之一。 |
bold | 将文本强调为粗体。 |
text_size | 设置文本的字体大小。 |
reset_text_size | 重置文本的字体大小。 |
underline | 用单线或双线加粗文本。 |
doublestrike | 对文本应用双击效果。 |
linespacing | 调整文本行之间的间距。 |
reset_linespacing | 将行间距重置为默认值。 |
flip | 将文本颠倒。 |
reverse_colours | 启用黑色背景上的白色文本。 |
qr | 打印QR码。 |
barcode | 打印条形码。 |
graphic | 打印图形。 |
feed | 输送n行纸张。 |
reverse_feed | 反转纸张输送,n行。 |
cut | 执行纸张的全切。 |
partial_cut | 执行纸张的部分切。 |
打印指定的文本。 | |
println | 打印指定的文本,以新行结束。 |
text | 与println相同,打印指定的文本,以新行结束。 |
贡献
欢迎贡献!请打开一个问题或提交一个拉取请求。
许可协议
本项目受MIT许可证许可 - 有关详细信息,请参阅LICENSE文件
依赖项
~2.4–5.5MB
~52K SLoC