Improve PDF export line breaks

This commit is contained in:
2026-04-13 14:47:25 +02:00
parent 03584c4b97
commit 7b751b4d47
+19 -1
View File
@@ -2033,7 +2033,7 @@ def fetch_plan_entries_for_range_export(start_date: date, end_date: date, *, mod
def format_week_pdf_entry(entry: dict, *, mode: str) -> str:
label = entry["item_name"]
label = format_pdf_cell_label(entry["item_name"])
if mode == "household":
if entry.get("target_name"):
return f"{label} (Für {entry['target_name']})"
@@ -2046,6 +2046,23 @@ def format_week_pdf_entry(entry: dict, *, mode: str) -> str:
return label
def format_pdf_cell_label(label: str) -> str:
cleaned = " ".join((label or "").split())
if not cleaned:
return ""
if " - " in cleaned:
return cleaned.replace(" - ", "\n")
if ", " in cleaned and len(cleaned) > 20:
return cleaned.replace(", ", ",\n")
if "-" in cleaned:
return "-\n".join(part for part in cleaned.split("-") if part)
return cleaned
def build_week_pdf_rows(week_start: date, *, mode: str) -> tuple[list, list[list[str]]]:
days = [week_start + timedelta(days=index) for index in range(7)]
grouped_entries = fetch_plan_entries_for_range_export(week_start, week_start + timedelta(days=6), mode=mode)
@@ -2098,6 +2115,7 @@ def build_week_plan_pdf(week_start: date, *, mode: str = "mine") -> bytes:
pdf.cell(0, 6, f"KW {week_number:02d}", new_x="LMARGIN", new_y="NEXT")
pdf.ln(3)
pdf.set_text_color(20, 20, 20)
pdf.set_font("Helvetica", "", 10)
headings = [" "] + [f"{format_weekday(day)}\n{day.strftime('%d.%m.%Y')}" for day in days]
first_column_width = 34