homebox-label-template/generate_labels_a4.py

83 lines
2.6 KiB
Python
Executable file

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script to generate hobebox A4 Labels
"""
import os
import svgwrite
LOST_AND_FOUND_STRING = "Found? https://l3d.ch/kontakt"
ASSET_CONTENT_PREFIX = "000-"
def create_a4_svg(output_filename):
"""
Create A4 SVG
"""
# A4 size in millimeters
a4_width = '210mm'
a4_height = '297mm'
# Create SVG document (A4)
dwg = svgwrite.Drawing(output_filename, size=(a4_width, a4_height), profile='tiny')
# Add your content or elements to the SVG here
# For example, you can add a rectangle as a placeholder
asset_content_suffix=0
for x in range(0,3):
for y in range(0,10):
print(f"Create Label: X={x}, Y={y} - {ASSET_CONTENT_PREFIX}{asset_content_suffix:03}")
# white bg for label
dwg.add(
dwg.rect(
insert=(f'{x*70}mm', f'{y*29.7}mm'),
size=('70mm', '29.7mm'), fill="white", stroke="none"
)
)
# asset number
asset_element = dwg.text(
str(f"{ASSET_CONTENT_PREFIX}{asset_content_suffix:03}"),
insert=(f'{x*70+29.7}mm',
f'{y*29.7+10}mm'),
font_size="37px",
font_family="Lato",
fill="black"
)
dwg.add(asset_element)
# lost and found
lost_and_found_element = dwg.text(LOST_AND_FOUND_STRING, insert=(
f'{x*70+29.7}mm',
f'{y*29.7+15}mm'),
font_size="11.3px",
font_family="Lato",
fill="black"
)
dwg.add(lost_and_found_element)
# freitextfeld
dwg.add(
dwg.rect(
insert=(f'{x*70+29.7+0.5}mm', f'{y*29.7+28.2}mm'),
size=('38.3mm', '0.2mm'),
fill="grey",
stroke="none"
)
)
# create qr-code
asset_url = f"https://i.l3d.ch/a/{ASSET_CONTENT_PREFIX}{asset_content_suffix:03}"
qr_path = f"/tmp/homebox-{ASSET_CONTENT_PREFIX}{asset_content_suffix:03}.svg"
os.system(f'qrencode -t svg -l H -s 42 "{asset_url}" -o {qr_path}')
# import
qr_code_svg = svgwrite.image.Image(
f'{qr_path}',
insert=(f'{x*70}mm',
f'{y*29.7}mm'),
size=('29.7mm', '29.7mm')
)
dwg.add(qr_code_svg)
asset_content_suffix+= 1
# Save the SVG document
dwg.save()
if __name__ == "__main__":
create_a4_svg("output_a4.svg")