【问题标题】:Adding barcodes to pdfs将条形码添加到 pdf
【发布时间】:2011-03-03 02:21:27
【问题描述】:

有什么方法可以进行邮件合并,将数据(9-15 个字符长)转换为条形码?我正在尝试使用 openoffice 的 code128 进行计算,但由于某种原因,每 10 个字符串,条形码就会变得疯狂,并且 ascii 告诉我在扩展名来自的站点注册,我不想这样做

我还为 oodraw 找到了一个,但这需要手动输入值。由于我对宏不熟悉,所以我无法编写会自动执行的东西

我想做的是:

take an old pdf (only 1 page)
covert it to word or picture or something
add a function/macro/whatever to show a barcode 
        (whether or not the barcode shows in this file, i dont care), 
        given a string from excel data
reconvert to separate pdfs

or some other way that adds barcodes to pdfs

我发现的所有其他免费程序都不能很好地做到这一点,而且由于我不是真正的 pdf 人,我不会购买随机程序。我只需要为一大批数据完成此操作

【问题讨论】:

    标签: pdf pdf-generation barcode


    【解决方案1】:

    我自己也遇到过类似的问题。将python与reportlab和pyPdf一起使用,您可以将条形码(包括字符串标签)放入模板pdf中。这是我的 gitlab 代码库的链接,其中包含 python 代码:

    https://github.com/glokem/barcodepdf

    from pyPdf import PdfFileWriter, PdfFileReader
    import StringIO
    from reportlab.pdfgen import canvas
    from reportlab.lib.pagesizes import A4
    from reportlab.lib.units import mm
    from reportlab.graphics.barcode import code39
    

    此块指示 python 完成其工作所需的所有导入。

    string = '0000000' 
    x_var=0
    y_var=10
    

    只是一些小的家务

    packet = StringIO.StringIO()
    
    slab = canvas.Canvas(packet, pagesize=A4)
    slab.setFillColorRGB(0,0,0) 
    barcode = code39.Extended39(string,barWidth=.5*mm,barHeight=10*mm, checksum=0)
    barcode.drawOn(slab, x_var*mm , y_var*mm)
    slab.setFont("Courier", 25) 
    slab.drawString(40, 10, string)
    
    slab.save()
    

    第一个块创建条形码,将其放在“平板”上,准备转换为 pdf。注意毫米单位,这可能不适合那些帝国倾向的人。

    packet.seek(0)
    new_pdf = PdfFileReader(packet)
    
    existing_pdf = PdfFileReader(file("template.pdf", "rb"))
    output = PdfFileWriter()
    
    
    page = existing_pdf.getPage(0)
    page.mergePage(new_pdf.getPage(0))
    output.addPage(page)
    
    outputStream = file("destination.pdf", "wb")
    output.write(outputStream)
    outputStream.close()
    

    这个块是我不完全理解的 PDF 创建魔法。

    您的“template.pdf”已经就位,一切正常。这会将 00000000 的条形码放在左下角。

    非常感谢 reportlab 背后的人们,以及 pyPdf 在这里提供了一个很棒的平台!

    编辑: 为清楚起见添加了代码:感谢 Amicable 和 Nico。

    【讨论】:

    • 请尝试在您的答案中总结链接中的代码,因为未来的读者不能永远依赖链接。 (例如,如果你删除了你的 github,这个答案将变得毫无意义)
    • 感谢 Amicable,Nico 我正在试图弄清楚如何在不写关于该主题的 20000 字文章的情况下总结我的代码。不过,点已被采纳,感谢您的反馈。
    【解决方案2】:

    有一种名为 IDAutomationHC39M 的方便的花花公子字体可以免费使用——当然也有限制——但它以条形码格式写入文本。就那么简单。没脑子。 Barcode Font

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多