import csv import os from barcode import Code128, EAN13 from barcode.writer import ImageWriter from fpdf import FPDF # options code_height = 40 pdf_row_spacing = 40 # internal stuff pdf = FPDF() pdf_row = 0 pdf_colum = 0 pdf_logo = 'binary_kitchen.png' def generate_barcode(filename, content, label): if not os.path.exists('out'): os.makedirs('out') with open('out/' + filename + '.png', "wb") as f: EAN13.default_writer_options['write_text'] = False EAN13.default_writer_options['text'] = label EAN13(str(content), writer=ImageWriter()).write(f) def generate_barcode_username(filename, content, label): if not os.path.exists('out'): os.makedirs('out') with open('out/' + filename + '.png', "wb") as f: Code128.default_writer_options['write_text'] = False Code128.default_writer_options['text'] = label Code128(str(content), writer=ImageWriter()).write(f) def pdf_add_barcode(imagepath): global pdf_row, pdf_colum, pdf_row_spacing # determine y-position y = 10 + (pdf_row * pdf_row_spacing) if y >= 251: print('maximum Code per Page reached. Creating new Page.') print('y: ' + str(y) + ' pdf_row: ' + str(pdf_row)) y = 10 pdf_row = 0 pdf.add_page() pdf.image(pdf_logo, x=100, y=265, h=24) # determine x-position if pdf_colum == 0: x = 10 pdf_colum += 1 else: x = 100 pdf_colum = 0 # reset colum pdf_row += 1 # start a new row pdf.image(imagepath, x=x, y=y, h=code_height) if __name__ == '__main__': generate_barcode_username('raven', 'raven\t', 'raven') generate_barcode_username('voidptrs Geburtstagsfeier', '\tvoidptrs Geburtstagsfeier\t', 'voidptrs Geburtstagsfeier') pdf.add_page() pdf.set_font("Arial", size=15) pdf.image(pdf_logo, x=180, y=7, h=24) filename = 'drinks.csv' with open(filename, 'r') as csvfile: datareader = csv.reader(csvfile) next(datareader, None) # skip the headers for row in datareader: row_code = row[0] row_text = row[1] row_filename = row[2] print('Generating Code for:', row_text, 'row_filename', row_filename, 'row_code', row_code) generate_barcode(row_filename, row_code, row_text) pdf_add_barcode('out/' + row_filename + '.png') pdf.output("out/barcodes.pdf") print() print('drink responsibly and') print('Don\'t drink and root!')