URL in qr
This commit is contained in:
99
Homebox_QR_XXL_HB001_bis_HB016.pdf
Normal file
99
Homebox_QR_XXL_HB001_bis_HB016.pdf
Normal file
File diff suppressed because one or more lines are too long
@@ -5,14 +5,19 @@ from reportlab.pdfgen import canvas
|
|||||||
from reportlab.graphics.barcode import qr
|
from reportlab.graphics.barcode import qr
|
||||||
from reportlab.graphics.shapes import Drawing
|
from reportlab.graphics.shapes import Drawing
|
||||||
|
|
||||||
def generate_xxl_qr_pdf(start_num, count):
|
def generate_xxl_qr_pdf(domain, start_num, count):
|
||||||
|
# URL-Formatierung sicherstellen
|
||||||
|
domain = domain.strip().rstrip('/')
|
||||||
|
if not domain.startswith("http"):
|
||||||
|
domain = f"https://{domain}"
|
||||||
|
|
||||||
end_num = start_num + count - 1
|
end_num = start_num + count - 1
|
||||||
filename = f"Homebox_QR_XXL_HB{start_num:03d}_bis_HB{end_num:03d}.pdf"
|
filename = f"Homebox_QR_XXL_HB{start_num:03d}_bis_HB{end_num:03d}.pdf"
|
||||||
|
|
||||||
c = canvas.Canvas(filename, pagesize=A4)
|
c = canvas.Canvas(filename, pagesize=A4)
|
||||||
page_width, page_height = A4
|
page_width, page_height = A4
|
||||||
|
|
||||||
# Layout: 2 Spalten x 4 Zeilen = 8 Labels pro A4-Seite
|
# 2 Spalten x 4 Zeilen = 8 Labels pro A4-Seite
|
||||||
cols, rows = 2, 4
|
cols, rows = 2, 4
|
||||||
col_width = page_width / cols
|
col_width = page_width / cols
|
||||||
row_height = page_height / rows
|
row_height = page_height / rows
|
||||||
@@ -31,15 +36,17 @@ def generate_xxl_qr_pdf(start_num, count):
|
|||||||
y_center = row * row_height + (row_height / 2)
|
y_center = row * row_height + (row_height / 2)
|
||||||
|
|
||||||
code_str = f"HB-{current_num:03d}"
|
code_str = f"HB-{current_num:03d}"
|
||||||
|
# Der Direkt-Such-Link für die Homebox-Weboberfläche
|
||||||
|
qr_url = f"{domain}/items?q={code_str}"
|
||||||
|
|
||||||
# Gestrichelte Schnittlinie
|
# Gestrichelte Schnittlinie
|
||||||
c.setDash(2, 2)
|
c.setDash(2, 2)
|
||||||
c.setStrokeColorRGB(0.6, 0.6, 0.6)
|
c.setStrokeColorRGB(0.6, 0.6, 0.6)
|
||||||
c.rect(col * col_width + 3*mm, row * row_height + 3*mm, col_width - 6*mm, row_height - 6*mm)
|
c.rect(col * col_width + 3*mm, row * row_height + 3*mm, col_width - 6*mm, row_height - 6*mm)
|
||||||
|
|
||||||
# QR-Code (50mm x 50mm XXL)
|
# QR-Code (50mm x 50mm)
|
||||||
qr_size = 50 * mm
|
qr_size = 50 * mm
|
||||||
qr_widget = qr.QrCodeWidget(code_str)
|
qr_widget = qr.QrCodeWidget(qr_url)
|
||||||
bounds = qr_widget.getBounds()
|
bounds = qr_widget.getBounds()
|
||||||
w = bounds[2] - bounds[0]
|
w = bounds[2] - bounds[0]
|
||||||
h = bounds[3] - bounds[1]
|
h = bounds[3] - bounds[1]
|
||||||
@@ -51,7 +58,7 @@ def generate_xxl_qr_pdf(start_num, count):
|
|||||||
render_y = y_center - (qr_size / 2) + 2*mm
|
render_y = y_center - (qr_size / 2) + 2*mm
|
||||||
d.drawOn(c, render_x, render_y)
|
d.drawOn(c, render_x, render_y)
|
||||||
|
|
||||||
# Große Beschriftung darunter (Courier-Bold 16pt)
|
# Leserlicher Text darunter
|
||||||
c.setFont("Courier-Bold", 16)
|
c.setFont("Courier-Bold", 16)
|
||||||
c.setFillColorRGB(0, 0, 0)
|
c.setFillColorRGB(0, 0, 0)
|
||||||
c.drawCentredString(x_center, render_y - 7*mm, code_str)
|
c.drawCentredString(x_center, render_y - 7*mm, code_str)
|
||||||
@@ -59,28 +66,20 @@ def generate_xxl_qr_pdf(start_num, count):
|
|||||||
current_num += 1
|
current_num += 1
|
||||||
|
|
||||||
c.save()
|
c.save()
|
||||||
print(f"\n✅ PDF wurde erfolgreich erstellt: {filename}")
|
print(f"\n✅ PDF mit Homebox-Links wurde erstellt: {filename}")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Fall 1: Parameter wurden direkt im Befehl übergeben (z.B. python generate_qr.py 17 16)
|
print("--- Homebox XXL Label Generierung (mit URL) ---")
|
||||||
if len(sys.argv) >= 3:
|
domain_input = "homebox.prinz-pilaw.de".strip()
|
||||||
try:
|
|
||||||
start = int(sys.argv[1])
|
|
||||||
anzahl = int(sys.argv[2])
|
|
||||||
except ValueError:
|
|
||||||
print("❌ Fehler: Bitte gültige Zahlen angeben.")
|
|
||||||
sys.exit(1)
|
|
||||||
# Fall 2: Keine Parameter -> Interaktive Eingabe auffordern
|
|
||||||
else:
|
|
||||||
print("--- Homebox XXL Label Generierung ---")
|
|
||||||
try:
|
|
||||||
start_input = input("Startnummer eingeben (z. B. 17): ").strip()
|
|
||||||
start = int(start_input) if start_input else 1
|
|
||||||
|
|
||||||
anzahl_input = input("Anzahl Etiketten eingeben (z. B. 16): ").strip()
|
try:
|
||||||
anzahl = int(anzahl_input) if anzahl_input else 16
|
start_input = input("Startnummer (Standard 1): ").strip()
|
||||||
except ValueError:
|
start = int(start_input) if start_input else 1
|
||||||
print("❌ Fehler: Bitte gültige Zahlen eingeben.")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
generate_xxl_qr_pdf(start, anzahl)
|
anzahl_input = input("Anzahl Etiketten (Standard 16): ").strip()
|
||||||
|
anzahl = int(anzahl_input) if anzahl_input else 16
|
||||||
|
except ValueError:
|
||||||
|
print("❌ Fehler: Bitte gültige Zahlen eingeben.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
generate_xxl_qr_pdf(domain_input, start, anzahl)
|
||||||
Reference in New Issue
Block a user