2010-06-12 9 views
2

est-il possible de faire quelque chose comme un publipostage, où les données (9-15 caractères) sont converties en un code à barres? im en essayant d'utiliser code128 openoffice pour calc, mais pour une raison quelconque, toutes les 10 chaînes, le code à barres devient fou, et l'ascii me dit de vous inscrire sur le site d'où vient l'extension, que je ne veux pasAjouter des codes à barres à pdfs

J'ai aussi trouvé un pour oodraw, mais cela nécessite que les valeurs soient saisies manuellement. car je ne suis pas familier avec les macros, je ne peux pas écrire quelque chose qui le fera automatiquement

ce que im essayant de faire est:

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 

tous les autres programmes gratuits que j'ai trouvé ne pas le faire bien, et puisque je ne suis pas vraiment une personne de pdf, je ne vais pas acheter des programmes aléatoires. J'ai juste besoin de ceci fait pour un gros lot de données

Répondre

1

Il ya cette police dandy pratique appelée IDAutomationHC39M qui est libre d'utiliser - il y a bien des limites - mais elle écrit le texte au format de code à barres. Aussi simple que cela. Pas de prise de tête. Barcode Font

2

J'ai moi-même rencontré un problème similaire. En utilisant python avec reportlab et pyPdf, vous pouvez placer un code à barres (y compris une balise string) dans un fichier pdf. Voici un lien vers mon repo gitlab ce avec le code 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 

Ce bloc indique toutes les importations nécessaires pour python pour faire son travail.

string = '0000000' 
x_var=0 
y_var=10 

Juste un peu de ménage mineur

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

Ce premier bloc crée le code à barres, le place sur la « dalle » prêt à être transformé en pdf. Remarquez les unités en mm, cela peut ne pas convenir à ceux inclinés Imperial.

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

Ce bloc est une création de magie PDF que je ne comprends pas complètement. Avec votre 'template.pdf' déjà en place, les choses devraient fonctionner correctement. Cela placera le code à barres pour 00000000 dans le coin inférieur gauche.

Un grand merci pour les personnes derrière reportlab, et pyPdf pour fournir une plate-forme impressionnante ici!

Édition: code ajouté pour plus de clarté: merci Amicable et Nico.

+1

Veuillez essayer de résumer le code dans les liens de votre réponse, car les futurs lecteurs ne peuvent pas compter sur le lien qui reste éternel. (Par exemple, si vous supprimiez votre github, cette réponse deviendrait inutile) – Amicable

+0

Merci Amicable, et Nico im essayant de comprendre comment résumer mon code sans écrire un essai de 20000 mots sur le sujet. Le point est pris cependant, et merci pour vos commentaires. – glokem

Questions connexes