ZXing抛出"无法在列中放入消息"给出PDF417代码的有效数据

时间:2015-05-28 22:25:19

标签: zxing pdf417

ZXing.dll - zxing.net for .net 2.0 - 文件版本0.14.0.1

我的应用程序不允许自动调整大小(行/列计算)PDF417代码。因此,我使用所选设置来确定应允许的字符数,然后限制用户输入。

ZXing正在投掷"无法在列中放置消息" PDF417Writer.encode调用中的异常,给定的参数应该是有效的,基于我的计算。

示例#1:

ErrorCorrection=Level0 (2 error codewords)
Compaction=Numeric (2.9 characters per codeword)
Rows=3, Columns=2 (6 codewords)
Calculated Capacity = 6 - 2 - 1 = 3 * 2.9 = 8.7 (8 characters)
Text = "123456" (6 numeric characters)

使用这些设置,ZXing可以编码94个字符,但在95或更多时失败。

示例#2:

IDictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>();
hints.Add(EncodeHintType.MARGIN, 0);
hints.Add(EncodeHintType.ERROR_CORRECTION, PDF417ErrorCorrectionLevel.L0);
hints.Add(EncodeHintType.PDF417_COMPACT, false);
hints.Add(EncodeHintType.PDF417_COMPACTION, Compaction.NUMERIC);
hints.Add(EncodeHintType.PDF417_DIMENSIONS, new Dimensions(2, 2, 3, 3));
new PDF417Writer().encode("123456", BarcodeFormat.PDF_417, 0, 0, hints);

在这种情况下,ZXing最多可以编码5个字符,但在6个或更多字符时会失败。

这是一个重复实例#2的小测试程序(C#):

http://www.currentdirections.com/facts/sizing-applications-for-2d-symbols.html

以下资源解释了示例#1:

{{1}}

问题:

  1. 我是否以正确的方式使用ZXing生成PDF417代码数据?
  2. 我是否正确计算PDF417代码的容量?

0 个答案:

没有答案