3个版本 (破坏性更新)

0.3.0 2023年6月5日
0.2.0 2023年6月5日
0.1.0 2023年6月4日

#253 in 图形API

MIT许可协议

300KB
2K SLoC

recibo - Rust的热敏打印机驱动程序 构建状态 最新版本

本项目为Epson的部分ESC/POS协议提供了实现,该协议由兼容的收据打印机使用。它可以在兼容的打印机上生成并打印包括基本格式化、条形码、图形和切割功能在内的收据。

Example print out

示例用法

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 执行纸张的部分切。
print 打印指定的文本。
println 打印指定的文本,以新行结束。
text 与println相同,打印指定的文本,以新行结束。

贡献

欢迎贡献!请打开一个问题或提交一个拉取请求。

许可协议

本项目受MIT许可证许可 - 有关详细信息,请参阅LICENSE文件

依赖项

~2.4–5.5MB
~52K SLoC