Bar-Barcodegenerator/main.py

91 lines
2.5 KiB
Python

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!')