2010-06-12 123 views
2

有没有办法像邮件合并那样将数据(9-15个字符长)转换为条形码?即时通讯使用试图使用OpenOffice的code128 calc,但由于某种原因,每10个字符串,条码变得疯狂,ascii告诉我注册的网站,扩展名来自哪里,我不想做将条形码添加到pdfs

我还发现了一个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

这是一个方便花哨的字体称为IDAutomationHC39M,可以自由使用 - 以及有限制 - 但它写入条形码格式的文本。就那么简单。没有脑子。 Barcode Font

2

我自己也遇到过类似的问题。使用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文件。注意mm单位,这可能不适合那些倾斜的帝国。

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

请尝试总结您的答案中的链接代码,因为未来的读者不能依赖永远保持的链接。 (例如,如果你删除了你的github,那么这个答案将会变得没有意义) – Amicable 2014-03-25 12:14:24

+0

感谢Amicable和Nico im试图弄清楚如何总结我的代码而不写20000字的文章。点虽然采取,并感谢您的反馈。 – glokem 2014-03-25 12:40:24

相关问题