如何阻止ReportLab在条形码中添加多余字符?

2 投票
1 回答
1534 浏览
提问于 2025-04-18 08:02

我用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()

1 个回答

3

虽然用户说没有添加,但实际上,reportlab条形码库默认会自动加上校验码。

如果你想去掉这个校验码,可以在初始化条形码的时候加上参数checksum=0,像这样:

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

撰写回答