render: eine A4-SVG je PDF-Seite (auch leere) + /render-json fuer die Auftrags-Anlage
All checks were successful
Build & Deploy / deploy (push) Successful in 2m3s
All checks were successful
Build & Deploy / deploy (push) Successful in 2m3s
This commit is contained in:
12
app.py
12
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(...),
|
||||
|
||||
7
core.py
7
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,
|
||||
|
||||
Reference in New Issue
Block a user