有没有办法做一些像邮件合并这样的数据(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人,我不打算购买随机程序。我只需要为一大批数据完成此操作
答案 0 :(得分:2)
我自己也遇到过类似的问题。将python与reportlab和pyPdf一起使用,可以将条形码(包括字符串标记)放入模板pdf中。这是一个链接到我的gitlab repo与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()
第一个块创建条形码,将其放在'slab'上,准备变成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。
答案 1 :(得分:1)
有一个名为IDAutomationHC39M的方便的花花公子字体可以免费使用 - 有限制 - 但它以条形码格式写入文本。就那么简单。没问题。 Barcode Font