Comparison
PDFops vs DocRaptor
DocRaptor is a hosted HTML-to-PDF API built on PrinceXML,
priced from $15/mo (125 docs, 12¢/doc effective) up to
$1,000/mo (40,000 docs, 2.5¢/doc). It's a fundamentally
different verb than PDFops: DocRaptor has no
fill-form endpoint and no merge endpoint — its API
only accepts document_content (HTML/XML) or
document_url and always emits a new PDF. This
page is for developers who picked DocRaptor for
template-driven invoice / receipt / contract / form
generation and are asking whether the form-fill primitive
fits better.
The honest framing
If you need to render arbitrary HTML to PDF — with CSS, web fonts, multi-page layout, headers/footers driven by content — DocRaptor still fits better. PDFops doesn't render HTML.
If your usage is template-driven (you author a PDF template once, then fill it with per-customer data on each request — invoices, receipts, contracts, government forms, statements), the wedge flips. AcroForm templates + an HTTP API call is a cleaner abstraction than rendering HTML for every document, and the substrate cost is dramatically lower.
One stagnation signal worth knowing. DocRaptor's last public changelog entry is dated September 5, 2023 — over two and a half years ago. They're still shipping Prince 15.1; Prince 16 has been generally available since October 2024. No edge runtime, no form-fill endpoint, no merge endpoint has been announced in that window. [source: docraptor.com/documentation/changelog]
Side-by-side
| PDFops | DocRaptor | |
|---|---|---|
| Primitive | AcroForm fill-form + merge (operates on existing PDFs) | HTML → PDF only (always emits a new PDF) |
| AcroForm fill-form | Yes (core endpoint) | No — API only accepts document_content or document_url |
| PDF merge | Yes (core endpoint) | No — compose merged HTML, then render |
| Per-document price | Free during beta, 100 req/IP/month | 12¢ (Basic, $15/mo, 125 docs) → 2.5¢ (Silver, $1,000/mo, 40k docs) |
| Free tier | 100 req/month/IP, no signup | 5 test docs/mo, watermarked, no overage allowed |
| Auth model | None during beta (anonymous, IP-rate-limited) | API key required |
| Hosting substrate | Vercel Edge (globally distributed) | AWS-hosted (no region selection published) |
| Rendering engine | pdf-lib (V8-isolate-compatible) | PrinceXML 15.1 (Prince 16 released Oct 2024 — unupgraded) |
| Last public changelog | Continuous — see /blog | Sep 2023 — no entries since |
| SLA | None during beta; enterprise via waitlist | Tier-dependent |
| Best for | Template-fill + merge at scale on edge stacks | HTML rendering with rich CSS / typography |
Pricing verified at docraptor.com/signup as of 2026-05-19. Heroku addon pricing is ~25–30% higher and is not quoted here.
Try the migration in 30 seconds
If you've got a PDF template with AcroForm fields (or want one — grab a sample invoice-template.pdf with customer_name + total fields), the call shape is:
curl -X POST https://pdfops.dev/api/fill-form \
-F "pdf=@invoice-template.pdf" \
-F 'fields={"customer_name":"Acme Co","total":"$1,250.00"}' \
-o filled.pdf
You get a filled PDF back. No API key, no signup. The full reference for the endpoint is in the fill-form docs.
Frequently asked
Is PDFops a drop-in replacement for DocRaptor?
No — different primitives. DocRaptor renders HTML to PDF; PDFops fills AcroForm fields in PDF templates you author. If your DocRaptor usage is template-driven and you can move to AcroForm templates, PDFops fits. If you need arbitrary HTML rendering, DocRaptor is still the answer.
How much cheaper is PDFops per document?
DocRaptor charges $0.05–$0.20 per document depending on plan. PDFops is free during beta. Post-beta pricing is designed to land roughly 10× cheaper per document — possible because PDFops runs on edge-runtime infrastructure rather than dedicated VMs, and that substrate's unit economics pass through to the per-document price.
What's the migration story?
For invoice / receipt / contract / form generation from a fixed template: (1) Author an AcroForm version of your template in Acrobat, Mac Preview, LibreOffice Draw, or pdftk. (2) Replace your DocRaptor SDK call with a multipart POST to /api/fill-form sending the template + a JSON object of field-name → value. (3) The response is the filled PDF. The Stripe-webhook-to-invoice walkthrough is in the blog.
Does PDFops offer an SLA?
Not during beta. For enterprise volume with SLA, drop a note in the waitlist form's message field. Production usage should design for the API as best-effort and treat 5xx as retryable.
Where does the curl go in production?
Anywhere. PDFops is an HTTP API — your calling code can run on Cloudflare Workers, Vercel Edge, Deno Deploy, Bun, AWS Lambda, your own Node backend, or a desktop curl. Edge-deployed PDFops + edge-deployed caller = sub-300ms end-to-end with no cold starts.
Move when ready
If the template-fill primitive matches your usage, join the waitlist to lock in early-tier pricing post-beta. The form's message field is the fastest way to tell me about your volume and migration constraints — that signal is what I'm prioritizing endpoints + pricing tiers on.
← PDFops home · Blog · Docs