【问题标题】:How to stop ReportLab appending unwanted character to barcode?如何停止 ReportLab 将不需要的字符附加到条形码?
【发布时间】:2014-07-19 23:46:40
【问题描述】:

我使用 ReportLab 创建了一个带有条形码的 pdf 页面。一切正常,除了当我扫描其中一个条形码时,它会附加一个字符。例如,当我尝试扫描 700124 时,我得到 700124A,700224 变为 700224B,等等。我不希望附加这些字符。有谁知道如何阻止这个?我找不到任何关于此的文档。我使用以下 Python 代码:

from reportlab.graphics.barcode import code39
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas

c = canvas.Canvas("barcode_example.pdf", pagesize=A4)

code_list = ['700124', '700224', '700324', '700424', '700524', '700624', '700724', '700824', '700924']

x = 1 * mm
y = 280 * mm
x1 = 6.4 * mm
r = 0

for code in code_list:
    barcode = code39.Standard39(code, barHeight=26, stop=1)
    barcode.drawOn(c, x, y)
    x1 = x + 6.4 * mm
    y = y - 5 * mm
    c.drawString(x1, y, code)
    x = x
    y = y - 25 * mm

    if int(y) < 0:
        if r != 3:
            x = x + 50 * mm
            y = 280 * mm
            r = r + 1
        else:
            c.showPage()
            x = 1 * mm
            y = 280 * mm
            x1 = 6.4 * mm
            r = 0

c.save()

【问题讨论】:

  • 你能测试一下添加字符的不是你的扫描仪吗?
  • Wikipedia 告诉我 checksum 是可选的。也许(1)您的 Python 代码正在添加它,并且(2)您的读者不认识它。您的 (2...) 示例的行为类似于校验和。
  • 感谢您的建议。 Python代码没有添加它。扫描仪也不会添加字符。我现在已经通过将条形码生成为图像然后让 ReportLab 使用它们来完成它。

标签: python pdf barcode reportlab


【解决方案1】:

即使用户声称它没有被添加,默认情况下,reportlab 条形码库会自动添加校验和。

要避免校验和字符,请使用参数 checksum=0 初始化您的条形码,如下所示:

barcode = code39.Standard39(code, barHeight=26, stop=1, checksum=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-10
    • 2020-04-05
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多