[34288f42] Keine Zusammenfassung angegeben.

Keine Zusammenfassung angegeben.
This commit is contained in:
2026-04-14 14:09:58 +00:00
parent 0cca30a956
commit 1a3568f69e
14 changed files with 347 additions and 48 deletions

View File

@@ -292,3 +292,62 @@ def overlay_text_on_pdf(base_pdf_path: str, output_pdf_path: str, texts: list):
writer.write(output_file)
logger.info(f"Successfully generated overlaid PDF at {output_pdf_path}")
def generate_siblings_qr_overlay(base_pdf_path: str, output_pdf_path: str, families: list):
import io
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os
font_path = os.path.join(os.path.dirname(__file__), "assets", "OpenSans-Regular.ttf")
if os.path.exists(font_path):
pdfmetrics.registerFont(TTFont('OpenSans', font_path))
font_name = 'OpenSans'
else:
font_name = 'Helvetica'
mm_to_pt = 2.83465
page_width, page_height = A4
x_pos = 72 * mm_to_pt
y_pos_1 = page_height - (31 * mm_to_pt)
y_pos_2 = page_height - (180 * mm_to_pt)
reader = PdfReader(base_pdf_path)
writer = PdfWriter()
family_idx = 0
total_families = len(families)
for i in range(len(reader.pages)):
page = reader.pages[i]
if family_idx < total_families:
packet = io.BytesIO()
c = canvas.Canvas(packet, pagesize=A4)
c.setFont(font_name, 11)
# First card on the page
if family_idx < total_families:
text_top = f"Geschwisterbilder Familie {families[family_idx]['nachname']}"
c.drawString(x_pos, y_pos_1, text_top)
family_idx += 1
# Second card on the page
if family_idx < total_families:
text_bottom = f"Geschwisterbilder Familie {families[family_idx]['nachname']}"
c.drawString(x_pos, y_pos_2, text_bottom)
family_idx += 1
c.save()
packet.seek(0)
overlay_pdf = PdfReader(packet)
page.merge_page(overlay_pdf.pages[0])
writer.add_page(page)
with open(output_pdf_path, "wb") as output_file:
writer.write(output_file)