Firmendaten unter das Logo (rechtsbundig), Rechnungsdaten/Empfaenger darunter links

This commit is contained in:
Erik Thiele
2026-07-02 15:26:27 +02:00
parent 0241816252
commit 3b6d2a96ba

61
app.py
View File

@@ -249,31 +249,14 @@ def invoice_pdf():
pdf.add_page()
left = 15
col_right = 150
col_w = 45
# --- Header: Absender links, Logo rechts ---
pdf.set_font("Arial", "B", 11)
pdf.set_xy(left, 15)
pdf.cell(col_w, 5, firmen_name, ln=True)
pdf.set_font("Arial", "", 9)
if firmen_adresse:
pdf.set_x(left)
pdf.cell(col_w, 4, firmen_adresse, ln=True)
contact_parts = []
if telefon:
contact_parts.append(f"Tel: {telefon}")
if email:
contact_parts.append(f"Mail: {email}")
if contact_parts:
pdf.set_x(left)
pdf.cell(col_w, 4, " | ".join(contact_parts), ln=True)
# Logo rechts oben (Bild oder Text-Fallback)
# Logo rechts oben
logo_name = config.get('logo', '')
logo_path = os.path.join('static', logo_name) if logo_name else ''
if logo_name and os.path.exists(logo_path):
pdf.image(logo_path, x=155, y=8, w=40)
logo_bottom = pdf.get_y()
else:
pdf.set_font("Arial", "B", 18)
pdf.set_xy(150, 15)
@@ -282,29 +265,49 @@ def invoice_pdf():
pdf.set_x(150)
pdf.cell(col_w, 7, "Design", ln=True, align='R')
pdf.set_text_color(0, 0, 0)
logo_bottom = pdf.get_y()
# --- Rechnungsdaten ---
invoice_y = max(pdf.get_y(), 50)
pdf.set_xy(left, invoice_y)
# Firmendaten rechts unter Logo
right_x = 150
info_y = logo_bottom + 3
pdf.set_font("Arial", "B", 9)
pdf.set_xy(right_x, info_y)
pdf.cell(col_w, 4, firmen_name, ln=True, align='R')
pdf.set_font("Arial", "", 8)
if firmen_adresse:
pdf.set_x(right_x)
pdf.cell(col_w, 3.5, firmen_adresse, ln=True, align='R')
contact_parts = []
if telefon:
contact_parts.append(f"Tel: {telefon}")
if email:
contact_parts.append(f"Mail: {email}")
if contact_parts:
pdf.set_x(right_x)
pdf.cell(col_w, 3.5, " | ".join(contact_parts), ln=True, align='R')
right_bottom = pdf.get_y()
# --- Rechnungsdaten & Empfaenger (links, unterhalb der rechten Spalte) ---
content_y = max(right_bottom + 5, 50)
pdf.set_xy(left, content_y)
pdf.set_font("Arial", "", 10)
if rechnungsnummer:
pdf.cell(col_w, 5, f"Rechnungsnr.: {rechnungsnummer}", ln=True)
pdf.cell(80, 5, f"Rechnungsnr.: {rechnungsnummer}", ln=True)
pdf.set_x(left)
pdf.cell(col_w, 5, f"Datum: {datum}", ln=True)
pdf.cell(80, 5, f"Datum: {datum}", ln=True)
# --- Empfänger ---
pdf.set_xy(left, pdf.get_y() + 10)
pdf.set_xy(left, pdf.get_y() + 8)
pdf.set_font("Arial", "B", 10)
pdf.cell(col_w, 5, "Rechnungsempfanger:", ln=True)
pdf.cell(80, 5, "Rechnungsempfanger:", ln=True)
pdf.set_font("Arial", "", 10)
pdf.set_x(left)
pdf.cell(col_w, 5, kunde, ln=True)
pdf.cell(80, 5, kunde, ln=True)
if adresse:
pdf.set_x(left)
pdf.set_font("Arial", "", 9)
for line in adresse.split('\n'):
pdf.set_x(left)
pdf.cell(col_w, 4, line.strip(), ln=True)
pdf.cell(80, 4, line.strip(), ln=True)
# --- Trennlinie ---
pdf.set_draw_color(220, 220, 220)