This commit is contained in:
raven 2023-01-18 22:50:33 +01:00
commit bf3da33050
Signed by: raven
GPG Key ID: 7B8469C2D00594A1
5 changed files with 96 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
bin
lib
.idea
out

9
drinks.csv Normal file
View File

@ -0,0 +1,9 @@
drink,filename
KitchenTschunk,tschunk
VirginTschunk,vir_tschunk
MoscowMule,moscowmule
VirginMoscowMule,vir_moscowmule
Schnaps2cl,schnaps2cl
Schnaps4cl,schnaps4cl
Likoer2cl,likoer2cl
GinTonic,gintonic
1 drink filename
2 KitchenTschunk tschunk
3 VirginTschunk vir_tschunk
4 MoscowMule moscowmule
5 VirginMoscowMule vir_moscowmule
6 Schnaps2cl schnaps2cl
7 Schnaps4cl schnaps4cl
8 Likoer2cl likoer2cl
9 GinTonic gintonic

72
main.py Normal file
View File

@ -0,0 +1,72 @@
import csv
import os
from barcode import Code128
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
def generate_barcode(filename, content):
if not os.path.exists('out'):
os.makedirs('out')
with open('out/' + filename + '.png', "wb") as f:
Code128(str(content), writer=ImageWriter()).write(f)
def generate_barcode_username(filename, content):
generate_barcode(filename, content + '\t') # we need a tab-character to select the 'strichliste'
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()
# 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')
pdf.add_page()
pdf.set_font("Arial", size=15)
filename = 'drinks.csv'
with open(filename, 'r') as csvfile:
datareader = csv.reader(csvfile)
next(datareader, None) # skip the headers
for row in datareader:
print('Generating Code for:', row[0], 'to', row[1])
generate_barcode(row[1], row[0])
pdf_add_barcode('out/' + row[1] + '.png')
pdf.output("out/barcodes.pdf")
print()
print('drink responsibly and')
print('Don\'t drink and root!')

8
pyvenv.cfg Normal file
View File

@ -0,0 +1,8 @@
home = /opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10
implementation = CPython
version_info = 3.10.9.final.0
virtualenv = 20.13.0
include-system-site-packages = false
base-prefix = /opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10
base-exec-prefix = /opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10
base-executable = /opt/homebrew/bin/python3.10

3
requirements.txt Normal file
View File

@ -0,0 +1,3 @@
python-barcode
python-barcode[images]
fpdf