Complete Guide to Splitting PDFs with REST APIs
Master PDF splitting with our comprehensive guide. Learn how to extract pages, create ranges, and optimize performance for large documents.
Splitting PDFs is one of the most common document processing tasks. Whether you're extracting specific pages, creating page ranges, or breaking large documents into smaller chunks, doing it efficiently at scale requires the right approach.
Understanding PDF Splitting Use Cases
Before diving into implementation, let's explore common PDF splitting scenarios:
- Extract single pages: Pull out specific pages like invoices or receipts
- Page ranges: Extract chapters or sections from larger documents
- Split by size: Break large PDFs into manageable chunks
- Batch extraction: Extract multiple non-consecutive pages
Basic API Call: Extract Single Page
The simplest split operation extracts a single page. Here's how:
curl -X POST https://pdfmunk.com/api/split \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@document.pdf" \
-F "pages=5" \
-o page-5.pdfExtracting Page Ranges
For extracting multiple consecutive pages, use range notation:
// Extract pages 10-20
fetch('https://pdfmunk.com/api/split', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
},
body: formData // file + pages: "10-20"
})Multiple Non-Consecutive Pages
Extract specific pages that aren't next to each other:
// Extract pages 1, 5, 10, and 15
const pages = "1,5,10,15";
const formData = new FormData();
formData.append('file', pdfFile);
formData.append('pages', pages);
const response = await fetch('https://pdfmunk.com/api/split', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
body: formData
});Performance Optimization Tips
When working with large PDFs or high volume, optimize your splits:
1. Batch Multiple Splits
Instead of making multiple API calls for different pages, batch them:
// ❌ Bad: Multiple API calls
await splitPage(1);
await splitPage(5);
await splitPage(10);
// ✅ Good: One API call
await splitPages([1, 5, 10]);2. Stream Large Files
For PDFs over 10MB, use streaming to reduce memory usage:
const fs = require('fs');
const fileStream = fs.createReadStream('large-file.pdf');
const formData = new FormData();
formData.append('file', fileStream);
formData.append('pages', '1-10');3. Validate Before Splitting
Check page counts and validate ranges before making API calls:
function validatePageRange(totalPages, requestedPages) {
const pages = requestedPages.split(',').map(p => {
if (p.includes('-')) {
const [start, end] = p.split('-').map(Number);
return start <= totalPages && end <= totalPages;
}
return Number(p) <= totalPages;
});
return pages.every(valid => valid);
}Common Pitfalls to Avoid
- Zero-based vs One-based: Our API uses 1-based page numbering (page 1 is the first page)
- Invalid ranges: Always validate that end page ≥ start page
- Memory leaks: Clean up file buffers after processing
- Timeout handling: Large files may take longer - set appropriate timeouts
Quick Reference
pages=5 - Extract page 5
pages=1-10 - Extract pages 1 through 10
pages=1,5,10 - Extract pages 1, 5, and 10
pages=1-5,10-15 - Extract multiple ranges
Conclusion
PDF splitting with REST APIs is straightforward once you understand the basics. Start with simple single-page extractions, then move to ranges and batch operations as your needs grow. Remember to validate inputs and handle errors gracefully.
Ready to start splitting? Check out our full API documentation for more examples and advanced features.