DocRaptor uses Prince XML, an industry-leading CSS-for-print renderer. The quality of PDF output from complex HTML — multi-column layouts, running headers, footnotes, CSS counter styles, page breaks — is genuinely better than what browser-based or LibreOffice-based renderers produce. That quality comes at a price: DocRaptor starts at $15/month for just 125 documents.
The migration to ChangeThisFile makes sense for a specific subset of DocRaptor users: those generating simple structured documents (data exports, basic reports, simple invoices) where LibreOffice rendering is adequate, or those who originally chose DocRaptor for a general conversion need and are paying a premium for a specialist they don't need.
When migrating from DocRaptor makes sense
You're generating simple documents, not typeset publications. DocRaptor shines for print-quality PDFs: books, legal briefs, annual reports. If you're generating a simple data table, a basic invoice, or a Markdown-rendered report, LibreOffice handles it adequately and ChangeThisFile costs a fraction of DocRaptor.
Cost-per-document is unsustainable. DocRaptor's entry plan is $15/month for 125 documents — $0.12 per document. ChangeThisFile's free tier covers 1,000 documents at $0/each. For data-intensive applications generating many simple PDFs, the cost difference is 10–100×.
You use DocRaptor for non-HTML conversions. Some teams route DOCX, XLSX, or image conversions through DocRaptor despite it being primarily an HTML→PDF tool. ChangeThisFile handles 690 format pairs natively at a lower cost.
Who should NOT migrate from DocRaptor:
- Your PDFs are customer-facing documents where layout quality reflects brand quality
- You use CSS features like
prince-pdf-page-label,string(), running elements, or@footnote - You need precise page-break control with Prince's CSS extensions
- You generate legal, regulatory, or publishing documents where print fidelity is contractually important
- Your HTML is rendered with JavaScript before conversion
For these cases, DocRaptor's Prince engine is not replaceable by LibreOffice. The rendering quality gap is real and visible.
Cost comparison
| Volume/month | DocRaptor (est.) | ChangeThisFile | Monthly savings |
|---|---|---|---|
| 125 documents | $15/mo (entry plan) | $0 (free tier) | $15 |
| 500 documents | ~$30–50/mo | $0 (free tier) | $30–50 |
| 2,000 documents | ~$75–100/mo | $29 (Hobby) | $46–71 |
| 10,000 documents | ~$200–300/mo | $99 (Startup) | $101–201 |
DocRaptor's per-document cost is high because you're paying for Prince XML's rendering engine, which is the standard in print publishing. If you don't need that quality, you're significantly overpaying.
API endpoint mapping
| DocRaptor action | ChangeThisFile equivalent |
|---|---|
| POST /docs (JSON body with HTML) | POST /v1/convert (file upload) |
| Basic Auth (YOUR_API_KEY as username) | Authorization: Bearer ctf_sk_{key} |
| document_content: "<html>..." | files["file"]: BytesIO(html_bytes) |
| document_url: "https://..." | Download first, then upload file |
| document_type: "pdf" | data.target: "pdf" |
| test: true (test mode) | Use free tier for testing |
| prince_options: {...} (CSS extensions) | Not supported |
| Asynchronous (async: true) + status polling | Synchronous — file in response |
Code migration: BEFORE and AFTER
# BEFORE: DocRaptor (JSON body, Basic Auth, PDF as bytes)
import requests
import base64
DOCRAPTOR_KEY = 'YOUR_API_KEY'
resp = requests.post(
'https://docraptor.com/docs',
auth=(DOCRAPTOR_KEY, ''),
json={
'test': False,
'document_type': 'pdf',
'document_content': open('report.html').read(),
'prince_options': {
'media': 'print',
'baseurl': 'https://yourapp.com'
}
}
)
with open('report.pdf', 'wb') as f:
f.write(resp.content)
# AFTER: ChangeThisFile (multipart file upload, Bearer auth)
import requests
import io
html_content = open('report.html', 'rb').read()
response = requests.post(
'https://changethisfile.com/v1/convert',
headers={'Authorization': 'Bearer ctf_sk_your_key'},
files={'file': ('report.html', io.BytesIO(html_content), 'text/html')},
data={'target': 'pdf'}
)
with open('report.pdf', 'wb') as f:
f.write(response.content)
The structure is similar — both accept HTML and return a PDF. The differences are: JSON body vs. multipart upload, Basic Auth vs. Bearer token, and no Prince-specific options in the CTF version.
Auth migration
- Get your CTF key: changethisfile.com/v1/keys/free. Free tier includes 1,000 conversions/month with no card.
- Switch from Basic Auth to Bearer token: DocRaptor uses
auth=(API_KEY, ''). ChangeThisFile usesheaders={'Authorization': 'Bearer ctf_sk_...'}. - Convert JSON body to multipart upload: DocRaptor accepts HTML as a JSON string. ChangeThisFile requires a file. Wrap HTML with
io.BytesIO(html_bytes)and pass as a file in the multipart request. - Remove Prince options: Delete
prince_options,media,baseurl, and any Prince-specific CSS from your HTML templates. ChangeThisFile's LibreOffice renderer ignores Prince extensions. - Remove test mode: DocRaptor has a
test: trueparameter that generates watermarked PDFs for free. ChangeThisFile's free tier (1,000/mo, no card) serves the same development purpose without watermarks.
Rollback plan
DocRaptor subscriptions remain active until cancelled. The rollback decision for this migration is primarily about output quality, not API compatibility:
- Generate PDFs from your 10 most representative HTML templates using both APIs. Compare output side-by-side — especially page breaks, fonts, tables, and multi-column layouts.
- Route by template type: simple data exports via ChangeThisFile, complex print-quality documents via DocRaptor. Both APIs can run in parallel indefinitely.
- If any template shows unacceptable rendering in ChangeThisFile, that template stays on DocRaptor. There's no shame in a hybrid — you pay DocRaptor only for conversions that actually need its rendering quality.
Common migration questions
DocRaptor's Prince XML is the gold standard for CSS print. Why would anyone switch?
Cost, primarily. At $15/month minimum for 125 documents, DocRaptor is an expensive choice for simple documents. Many teams adopted it for quality and then realized they're generating basic data reports, not typeset publications. For those use cases, ChangeThisFile at 1,000/month free is the right tool.
Will CSS @page rules work in ChangeThisFile?
Basic @page rules (margins, size) work. Prince's CSS extensions (prince-pdf-page-label, running(), string(), footnotes) do not. If your templates use these features, they won't render correctly in ChangeThisFile.
What about DocRaptor's Excel (XLSX) output?
DocRaptor can generate Excel files from HTML tables. ChangeThisFile doesn't support HTML→XLSX directly. If you use this feature, it doesn't translate to ChangeThisFile.
Does ChangeThisFile support async document generation?
No — ChangeThisFile is synchronous. DocRaptor's async mode (submit job, get download URL) is not replicated. The synchronous response is simpler for most use cases.
DocRaptor is irreplaceable for print-quality PDFs. ChangeThisFile is the right choice when you're generating simple structured documents and paying DocRaptor's premium for a quality level you don't need. Test your templates with ChangeThisFile's free tier before making any decision.