#encoder #byte #barcode #numbers #generate #no-std

nightly no-std pdf417

无std PDF417编码器

4个版本

0.2.1 2023年10月16日
0.2.0 2023年10月16日
0.1.1 2023年9月23日
0.1.0 2023年9月23日

#20 in #barcode

Download history 1/week @ 2024-04-27 27/week @ 2024-06-29 36/week @ 2024-07-27

每月62次下载

自定义许可

145KB
4K SLoC

crates.io

PDF417 generated on esp32-s3 and displayed on a SSD1306 OLED screen

PDF417条码生成器

适用于嵌入式应用程序(也适用于std)的无std和无分配PDF417编码器。此库根据规范实现了多个编码模式,用于数字、字符串和字节数据。您还可以自定义条码的渲染(大小、存储和反转),并支持截断PDF417和MicroPDF417。

用法

安装

pdf417 可在 crates.io 上找到

使用 cargo add 命令

cargo add pdf417

或在您的 Cargo.toml 中添加 crate

[dependencies]
pdf417 = "0"

生成PDF417

在您生成PDF417条码之前,应考虑以下因素:

  1. 条码的 容量(最大码字数)。
  2. 错误纠正的 级别(0-8)
  3. 条码的 尺寸(行数和列数)

以下是一个生成PDF417条码的无std和无分配示例

use pdf417::*;

const COLS: u8 = 3;
const ROWS: u8 = 5;
const WIDTH: usize = pdf417_width!(COLS);
const HEIGHT: usize = pdf417_height!(ROWS);

// High-level encoding
let mut input = [0u16; (ROWS * COLS) as usize];
let (level, _) = PDF417Encoder::new(&mut input, false)
    .append_ascii("Hello, world!").fit_seal().unwrap();

// Rendering
let mut storage = [false; WIDTH * HEIGHT];
PDF417::new(&input, ROWS, COLS, level).render(&mut storage[..]);

如果您需要更大的条码,可以使用 pdf417_width 和 pdf417_height 宏来控制模块的大小(请参阅文档)。

数据段

您可以在单个条码上使用多个数据段(也称为编码模式)。可用的类型有:

  • 数字:对44位以上数字的高效编码
  • ASCII:对文本(字母数字+标点符号)的高效编码,支持非显示ASCII值,这些值作为原始字节编码。
  • 字节:二进制数据作为字节

还有一个额外的 UTF-8 模式,允许使用ECI标识符和字节编码模式对UTF-8字符串进行编码(请注意,此编码比ASCII模式占用更多空间)。

请参阅 PDF417Encoder 结构体上的不同方法。

文档

更多文档可在 docs.rs 上找到。

贡献 & 反馈

如果您有任何反馈,请创建问题。如果您遇到任何错误或不受欢迎的行为,请创建问题。

此项目欢迎贡献,请随意提交您的pull请求!

许可

pdf417可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。

依赖关系

~275KB