odysseus-dev/odysseus · error · HTTPException
PDF render failed: {e}
Error message
PDF render failed: {e} What it means
Error "PDF render failed: {e}" thrown in odysseus-dev/odysseus.
Source
Thrown at routes/document/document_routes.py:1435
pdf_path = _locate_current_user_upload(request, upload_id, user)
if not pdf_path:
raise HTTPException(404, f"Source PDF {upload_id} not found")
# Fail fast with a clear 503 if the optional PyMuPDF dependency
# is missing — fill_fields/stamp_annotations will otherwise
# raise RuntimeError deep inside and bubble out as a 500.
# Mirrors the convention in _load_pdf_viewer_fitz above.
_load_pdf_viewer_fitz()
values = parse_markdown_to_values(doc.current_content or "")
out_path = tempfile.NamedTemporaryFile(suffix=".pdf", delete=False).name
_to_unlink.append(out_path)
try:
fill_fields(pdf_path, out_path, values)
except Exception as e:
logger.error(f"render_pdf fill_fields failed for {doc_id}: {e}")
_cleanup_temps()
raise HTTPException(500, f"PDF render failed: {e}")
annotations = parse_markdown_annotations(doc.current_content or "")
if annotations:
ann_sig_ids = [
a["value"][len("signature:"):].strip()
for a in annotations
if a.get("kind") == "signature"
and isinstance(a.get("value"), str)
and a["value"].startswith("signature:")
]
ann_signature_pngs: dict[str, bytes] = {}
if ann_sig_ids:
# SECURITY: filter by owner so a caller can't reference
# someone else's signature ID from doc markdown and have
# it stamped/exported.
_sig_q = db.query(Signature).filter(Signature.id.in_(ann_sig_ids))
if user:
_sig_q = _sig_q.filter(Signature.owner == user)View on GitHub (pinned to f9235ebbf1)
Solutions
- Check the server logs for the underlying PDF rendering error.
- Verify the PDF file is valid and not corrupted, then retry the render.
When it happens
Trigger: Triggered when the corresponding server-side validation or runtime check at the recorded location rejects the request or operation and returns this error message to the caller.
Common situations: See trigger scenarios.
AI-assisted analysis of odysseus-dev/odysseus@f9235ebbf1 (2026-08-14).
Data as JSON: /api/errors/83cc47770e43e9d9.
Report an issue: GitHub.