将条形码添加到 pdf

Posted

技术标签:

【中文标题】将条形码添加到 pdf【英文标题】:Adding barcodes to pdfs 【发布时间】: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 人,我不会购买随机程序。我只需要为一大批数据完成此操作

【问题讨论】:

【参考方案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

【讨论】:

以上是关于将条形码添加到 pdf的主要内容,如果未能解决你的问题,请参考以下文章

Itext 在 PDF 中嵌入字体

绘制条形码在绘图窗口中的显示方式与在保存的 .pdf 中不同

Itext:用条形码分隔符分割pdf文档

将条形码结果保存到剪贴板 - Android应用程序

如何在 c# 中的 iTextSharp pdf 中将位图显示为 jpeg 格式

Reportlab:条形码未绘制在 PDF 文件的顶部