Firmendaten unter das Logo (rechtsbundig), Rechnungsdaten/Empfaenger darunter links
This commit is contained in:
61
app.py
61
app.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user