{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://inquir.org/use-cases/pdf-processing#webpage","url":"https://inquir.org/use-cases/pdf-processing","name":"Serverless PDF processing: generate, extract, and transform","headline":"Serverless PDF processing: generate, extract, and transform","description":"Serverless PDF processing: generate PDFs from templates, extract text and data from uploads, and transform documents in background pipelines—no HTTP timeout, retries, and binary response support.","inLanguage":"en-US","isPartOf":{"@id":"https://inquir.org/#website"},"author":{"@type":"Organization","name":"Inquir"},"datePublished":"2025-01-01T00:00:00.000Z","dateModified":"2026-04-20T00:00:00.000Z","citation":"https://inquir.org/docs"},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://inquir.org"},{"@type":"ListItem","position":2,"name":"Use cases","item":"https://inquir.org/use-cases"},{"@type":"ListItem","position":3,"name":"PDF processing","item":"https://inquir.org/use-cases/pdf-processing"}]},{"@type":"HowTo","@id":"https://inquir.org/use-cases/pdf-processing#howto","name":"Serverless PDF processing: generate, extract, and transform","description":"Serverless PDF processing: generate PDFs from templates, extract text and data from uploads, and transform documents in background pipelines—no HTTP timeout, retries, and binary response support.","inLanguage":"en-US","author":{"@type":"Organization","name":"Inquir"},"step":[{"@type":"HowToStep","position":1,"name":"HTTP handler returns 202 + job ID","text":"Validate request, store job record with status=pending, trigger pipeline with data and job ID."},{"@type":"HowToStep","position":2,"name":"Pipeline step generates PDF","text":"Render template with data, generate PDF, upload to object storage, update job record with file URL."},{"@type":"HowToStep","position":3,"name":"Notify client","text":"Return pre-signed download URL via webhook, email, or status endpoint poll."}],"isPartOf":{"@id":"https://inquir.org/use-cases/pdf-processing#webpage"}},{"@type":"FAQPage","@id":"https://inquir.org/use-cases/pdf-processing#faq","url":"https://inquir.org/use-cases/pdf-processing","isPartOf":{"@id":"https://inquir.org/use-cases/pdf-processing#webpage"},"mainEntity":[{"@type":"Question","name":"How do I handle large PDF binary responses?","acceptedAnswer":{"@type":"Answer","text":"Store the PDF to object storage (S3-compatible) and return a pre-signed download URL. Avoid passing large base64-encoded PDFs as HTTP response bodies—gateway limits and client memory both benefit from storage-backed URLs."}},{"@type":"Question","name":"Can I use Python libraries like reportlab or pdfplumber?","acceptedAnswer":{"@type":"Answer","text":"Yes—Python 3.12 supports reportlab, pdfplumber, PyMuPDF, and other PDF libraries. Deploy a Python function for extraction and transformation work alongside Node.js functions for HTTP handlers in the same workspace."}}]}]}