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

PDFopsDocRaptor
PrimitiveAcroForm fill-form + merge (operates on existing PDFs)HTML → PDF only (always emits a new PDF)
AcroForm fill-formYes (core endpoint)No — API only accepts document_content or document_url
PDF mergeYes (core endpoint)No — compose merged HTML, then render
Per-document priceFree during beta, 100 req/IP/month12¢ (Basic, $15/mo, 125 docs) → 2.5¢ (Silver, $1,000/mo, 40k docs)
Free tier100 req/month/IP, no signup5 test docs/mo, watermarked, no overage allowed
Auth modelNone during beta (anonymous, IP-rate-limited)API key required
Hosting substrateVercel Edge (globally distributed)AWS-hosted (no region selection published)
Rendering enginepdf-lib (V8-isolate-compatible)PrinceXML 15.1 (Prince 16 released Oct 2024 — unupgraded)
Last public changelogContinuous — see /blogSep 2023 — no entries since
SLANone during beta; enterprise via waitlistTier-dependent
Best forTemplate-fill + merge at scale on edge stacksHTML 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.