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()
|
pdf.add_page()
|
||||||
|
|
||||||
left = 15
|
left = 15
|
||||||
col_right = 150
|
|
||||||
col_w = 45
|
col_w = 45
|
||||||
|
|
||||||
# --- Header: Absender links, Logo rechts ---
|
# Logo rechts oben
|
||||||
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_name = config.get('logo', '')
|
logo_name = config.get('logo', '')
|
||||||
logo_path = os.path.join('static', logo_name) if logo_name else ''
|
logo_path = os.path.join('static', logo_name) if logo_name else ''
|
||||||
if logo_name and os.path.exists(logo_path):
|
if logo_name and os.path.exists(logo_path):
|
||||||
pdf.image(logo_path, x=155, y=8, w=40)
|
pdf.image(logo_path, x=155, y=8, w=40)
|
||||||
|
logo_bottom = pdf.get_y()
|
||||||
else:
|
else:
|
||||||
pdf.set_font("Arial", "B", 18)
|
pdf.set_font("Arial", "B", 18)
|
||||||
pdf.set_xy(150, 15)
|
pdf.set_xy(150, 15)
|
||||||
@@ -282,29 +265,49 @@ def invoice_pdf():
|
|||||||
pdf.set_x(150)
|
pdf.set_x(150)
|
||||||
pdf.cell(col_w, 7, "Design", ln=True, align='R')
|
pdf.cell(col_w, 7, "Design", ln=True, align='R')
|
||||||
pdf.set_text_color(0, 0, 0)
|
pdf.set_text_color(0, 0, 0)
|
||||||
|
logo_bottom = pdf.get_y()
|
||||||
|
|
||||||
# --- Rechnungsdaten ---
|
# Firmendaten rechts unter Logo
|
||||||
invoice_y = max(pdf.get_y(), 50)
|
right_x = 150
|
||||||
pdf.set_xy(left, invoice_y)
|
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)
|
pdf.set_font("Arial", "", 10)
|
||||||
if rechnungsnummer:
|
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.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() + 8)
|
||||||
pdf.set_xy(left, pdf.get_y() + 10)
|
|
||||||
pdf.set_font("Arial", "B", 10)
|
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_font("Arial", "", 10)
|
||||||
pdf.set_x(left)
|
pdf.set_x(left)
|
||||||
pdf.cell(col_w, 5, kunde, ln=True)
|
pdf.cell(80, 5, kunde, ln=True)
|
||||||
if adresse:
|
if adresse:
|
||||||
pdf.set_x(left)
|
pdf.set_x(left)
|
||||||
pdf.set_font("Arial", "", 9)
|
pdf.set_font("Arial", "", 9)
|
||||||
for line in adresse.split('\n'):
|
for line in adresse.split('\n'):
|
||||||
pdf.set_x(left)
|
pdf.set_x(left)
|
||||||
pdf.cell(col_w, 4, line.strip(), ln=True)
|
pdf.cell(80, 4, line.strip(), ln=True)
|
||||||
|
|
||||||
# --- Trennlinie ---
|
# --- Trennlinie ---
|
||||||
pdf.set_draw_color(220, 220, 220)
|
pdf.set_draw_color(220, 220, 220)
|
||||||
|
|||||||
Reference in New Issue
Block a user