[34288f42] Keine Zusammenfassung angegeben.
Keine Zusammenfassung angegeben.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user