From aca2f67f97e9f583c139fccae83d9131d7384d1b Mon Sep 17 00:00:00 2001 From: Lucas Orth Date: Thu, 27 Aug 2026 11:05:44 +0200 Subject: [PATCH] render: eine A4-SVG je PDF-Seite (auch leere) + /render-json fuer die Auftrags-Anlage --- app.py | 12 ++++++++++++ core.py | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 8741bbd..0d8d2d4 100644 --- a/app.py +++ b/app.py @@ -123,6 +123,18 @@ async def render( ) +@app.post("/render-json") +async def render_json( + pdf: UploadFile = File(...), + svgs: List[UploadFile] = File(default=[]), + job: str = Form(...), +): + """Wie /render, aber als JSON: eine A4-SVG je PDF-Seite (leer wo kein Marker). + Für die Auftrags-Anlage, die die Seiten direkt in den Ausgabeordner schreibt.""" + _, pages = await _prepare(pdf, svgs, job) + return {"pages": [{"filename": p.filename, "svg": p.a4_svg} for p in pages]} + + @app.post("/preview") async def preview( pdf: UploadFile = File(...), diff --git a/core.py b/core.py index 4bac946..762a967 100644 --- a/core.py +++ b/core.py @@ -234,6 +234,7 @@ def place_all(pdf_bytes: bytes, svgs: dict, jobs: List[SignatureJob]): except Exception as e: return [], [f"PDF konnte nicht geöffnet werden: {e}"] + total_pages = doc.page_count try: for job in jobs: # 1. Ist die zugeordnete SVG hochgeladen? @@ -266,11 +267,13 @@ def place_all(pdf_bytes: bytes, svgs: dict, jobs: List[SignatureJob]): if errors: return [], errors + # Eine A4-SVG JE PDF-Seite – auch für Seiten OHNE Marker (leere SVG), damit der + # Plotter jede Seite einzieht und die Reihenfolge zum Dokument passt. pages: List[PageRender] = [] - for page_index in sorted(page_items): + for page_index in range(total_pages): # Signaturen einer Seite links→rechts sortieren: der Plotter schreibt in # dieser Richtung, also linke Signatur immer vor der rechten abarbeiten. - items = sorted(page_items[page_index], key=lambda t: t[0]) + items = sorted(page_items.get(page_index, []), key=lambda t: t[0]) a4 = wrap_a4([group for _, _, group in items]) pages.append(PageRender( page_index=page_index,