ouput pdf: text styling

This commit is contained in:
Rob committed 2026-06-23 11:50:44 +02:00
1 parent e50f423304
commit 9bdd90c073
1 file changed
+35 -3
+35 -3
View File
@@ -169,6 +169,12 @@ def _fill_pdf_pages(
field_info: dict[str, dict], field_info: dict[str, dict],
) -> None: ) -> None:
"""Befüllt alle Template-Seiten: redacted _Field-Platzhalter und fügt echte Daten ein.""" """Befüllt alle Template-Seiten: redacted _Field-Platzhalter und fügt echte Daten ein."""
# Mehrzeilige Felder, die als Textbox (mit Zeilenumbruch) behandelt werden
MULTILINE_FIELDS = {"Tätigkeiten_Field", "Dienstreisen_Field"}
TEXTBOX_FONT_SCALE = 1 # Schriftgrößen-Faktor für Textboxen
TEXTBOX_WIDTH_PT = 400 # Breite der Textbox in Punkt
TEXTBOX_HEIGHT_PT = 120 # Höhe der Textbox in Punkt
for m in mapping: for m in mapping:
if m.pdf_field is None: if m.pdf_field is None:
continue continue
@@ -188,12 +194,38 @@ def _fill_pdf_pages(
value = _get_field_value(record, employee_name, m.source_field) value = _get_field_value(record, employee_name, m.source_field)
formatted = _format_value(value, m.format) formatted = _format_value(value, m.format)
# Platzhalter redacten # Platzhalter immer redacten, auch wenn kein Wert zum Einsetzen da ist
page.add_redact_annot(rect) page.add_redact_annot(rect)
page.apply_redactions() page.apply_redactions()
# Neuen Text einfügen if not formatted:
if formatted: continue
# Mehrzeilige Felder: insert_textbox mit Zeilenumbruch
if m.pdf_field in MULTILINE_FIELDS:
# Doppelte Leerzeilen entfernen
clean_text = "\n".join(
line for line in formatted.split("\n") if line.strip()
)
if not clean_text:
continue
# Rechteck für die Textbox: ausgehend vom Marker, nach rechts & unten erweitert
textbox_rect = fitz.Rect(
rect.x0, # links
rect.y0, # oben
rect.x0 + TEXTBOX_WIDTH_PT, # rechts
rect.y0 + TEXTBOX_HEIGHT_PT, # unten
)
page.insert_textbox(
textbox_rect,
clean_text,
fontname="helv",
fontsize=fontsize * TEXTBOX_FONT_SCALE,
lineheight=1.5,
align=fitz.TEXT_ALIGN_LEFT,
)
else:
page.insert_text( page.insert_text(
rect.bl, rect.bl,
formatted, formatted,