#!/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")