10 Powerful PDF API Use Cases Every Developer Should Know (2025)



10 Powerful PDF API Use Cases Every Developer Should Know (2025)
Thinking about integrating PDF functionality into your app? A PDF API can automate document generation, conversions, and processing—saving you weeks of development time and thousands in licensing costs.
This guide covers 10 real-world use cases with code examples using OnlyDocs API ($29.99/month unlimited).
Use Case 1: SaaS Invoice Generation
The Problem: Your SaaS app needs to generate thousands of branded invoices monthly.
Traditional Approach:
- Build PDF generation from scratch (weeks of work)
- Or use expensive Adobe API ($0.05/invoice = $5,000/month for 100k invoices)
OnlyDocs Solution: $29.99/month, unlimited invoices
// Generate invoice from HTML template
async function generateInvoice(invoiceData) {
const html = `
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial; }
.header { background: #4F46E5; color: white; padding: 20px; }
.invoice-table { width: 100%; border-collapse: collapse; }
.invoice-table td { padding: 10px; border-bottom: 1px solid #ddd; }
</style>
</head>
<body>
<div class="header">
<h1>INVOICE #${invoiceData.invoiceNumber}</h1>
</div>
<table class="invoice-table">
<tr>
<td><strong>Bill To:</strong></td>
<td>${invoiceData.customer}</td>
</tr>
<tr>
<td><strong>Amount Due:</strong></td>
<td>$${invoiceData.amount}</td>
</tr>
</table>
</body>
</html>
`;
const response = await fetch('https://api.onlydocs.net/v1/convert/html-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
html,
options: {
format: 'A4',
margin: { top: '20mm', bottom: '20mm' }
}
})
});
const result = await response.json();
return result.data.pdfBase64; // Send to customer
}
ROI:
- 100k invoices/month
- OnlyDocs: $29.99/month
- Adobe: $5,000/month
- Savings: $59,881/year
Use Case 2: E-Learning Certificate Generator
The Problem: Online course platform needs to generate completion certificates for students.
Requirements:
- Custom branding per course
- Student name/date personalization
- Download or email delivery
Solution:
async function generateCertificate(studentName, courseName, completionDate) {
const html = `
<!DOCTYPE html>
<html>
<head>
<style>
body {
text-align: center;
font-family: 'Georgia', serif;
padding: 50px;
}
.certificate {
border: 10px solid gold;
padding: 40px;
}
h1 { font-size: 48px; color: #1a1a1a; }
.student { font-size: 36px; font-weight: bold; color: #4F46E5; }
</style>
</head>
<body>
<div class="certificate">
<h1>Certificate of Completion</h1>
<p>This certifies that</p>
<p class="student">${studentName}</p>
<p>has successfully completed</p>
<p><strong>${courseName}</strong></p>
<p>on ${completionDate}</p>
</div>
</body>
</html>
`;
const response = await fetch('https://api.onlydocs.net/v1/convert/html-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ html })
});
const result = await response.json();
// Save to database and email to student
await saveAndEmailCertificate(studentName, result.data.pdfBase64);
return result.data.pdfBase64;
}
Use Case 3: Contract Management System
The Problem: Legal tech platform needs to merge contract templates with client data and collect signatures.
Workflow:
- Generate contract from template
- Fill in client/date variables
- Send for signature
- Archive signed version
Solution:
async function generateContract(templateId, clientData) {
// Step 1: Fetch template HTML
const template = await getContractTemplate(templateId);
// Step 2: Replace variables
const html = template
.replace('{{CLIENT_NAME}}', clientData.name)
.replace('{{START_DATE}}', clientData.startDate)
.replace('{{RATE}}', clientData.rate)
.replace('{{SERVICES}}', clientData.services);
// Step 3: Generate PDF
const response = await fetch('https://api.onlydocs.net/v1/convert/html-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ html })
});
const result = await response.json();
// Step 4: Store and send for signature
const contractId = await saveContract(result.data.pdfBase64, clientData);
await sendForSignature(contractId, clientData.email);
return contractId;
}
Use Case 4: Receipt OCR for Expense Tracking
The Problem: Expense management app needs to extract data from scanned receipts.
Traditional Approach: Build ML model (months) or use Google Vision API ($1.50/1000 images)
OnlyDocs Solution: OCR API included at $29.99/month
async function processReceipt(receiptImageBase64) {
// Step 1: Convert image to PDF (if needed)
const pdfResponse = await fetch('https://api.onlydocs.net/v1/editor/images-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ images: [receiptImageBase64] })
});
const pdf = await pdfResponse.json();
// Step 2: Perform OCR
const ocrResponse = await fetch('https://api.onlydocs.net/v1/convert/ocr', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
pdfBase64: pdf.data.pdfBase64,
language: 'eng'
})
});
const ocr = await ocrResponse.json();
// Step 3: Extract data using regex
const text = ocr.data.text;
const total = text.match(/Total:?\s*\$?([\d,.]+)/i)?.[1];
const date = text.match(/(\d{1,2}\/\d{1,2}\/\d{2,4})/)?.[1];
const merchant = text.split('\n')[0]; // Usually first line
return { total, date, merchant, fullText: text };
}
ROI:
- 10k receipts/month
- Google Vision: $15/month
- OnlyDocs: $29.99/month (includes OCR + all other features)
- Still cheaper with way more features
Use Case 5: Automated Report Generation
The Problem: Analytics dashboard needs to generate weekly PDF reports for clients.
Solution: Convert chart data to images, combine with HTML report
const puppeteer = require('puppeteer');
async function generateWeeklyReport(clientId, metrics) {
// Step 1: Generate charts as images
const chartImages = await generateCharts(metrics);
// Step 2: Build HTML report
const html = `
<!DOCTYPE html>
<html>
<body>
<h1>Weekly Analytics Report</h1>
<p>Client: ${clientId}</p>
<p>Week of: ${new Date().toLocaleDateString()}</p>
<h2>Traffic Overview</h2>
<img src="data:image/png;base64,${chartImages.traffic}" width="600"/>
<h2>Conversions</h2>
<img src="data:image/png;base64,${chartImages.conversions}" width="600"/>
<h2>Summary</h2>
<ul>
<li>Total Visitors: ${metrics.visitors.toLocaleString()}</li>
<li>Conversion Rate: ${metrics.conversionRate}%</li>
<li>Revenue: $${metrics.revenue.toLocaleString()}</li>
</ul>
</body>
</html>
`;
// Step 3: Convert to PDF
const response = await fetch('https://api.onlydocs.net/v1/convert/html-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ html, options: { format: 'Letter' } })
});
const result = await response.json();
// Step 4: Email to client
await emailReport(clientId, result.data.pdfBase64);
return result.data.pdfBase64;
}
Use Case 6: Document Archive Compression
The Problem: Legacy system has millions of large scanned PDFs eating up storage.
ROI: Compress PDFs by 60-80% without quality loss
async function compressArchive() {
const oldPDFs = await getAllArchivedPDFs(); // Get from S3/database
for (const pdf of oldPDFs) {
const pdfBase64 = pdf.data.toString('base64');
// Compress PDF
const response = await fetch('https://api.onlydocs.net/v1/editor/compress', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
pdfBase64,
compressionLevel: 'high' // 'low', 'medium', or 'high'
})
});
const result = await response.json();
const compressed = Buffer.from(result.data.pdfBase64, 'base64');
// Calculate savings
const originalSize = pdf.data.length;
const compressedSize = compressed.length;
const savings = ((originalSize - compressedSize) / originalSize * 100).toFixed(1);
console.log(`Compressed ${pdf.id}: ${originalSize} → ${compressedSize} (${savings}% savings)`);
// Save back to storage
await updatePDF(pdf.id, compressed);
}
}
Real savings:
- 1TB storage → 300GB (70% reduction)
- AWS S3 Standard: $23/TB/month
- Before: $23/month
- After: $6.90/month
- Savings: $193.20/year in storage alone
Use Case 7: Form Data Extraction
The Problem: Insurance company receives 1000s of filled PDF forms daily that need data entry.
Solution: Extract form field data automatically
async function extractFormData(pdfBase64) {
// Extract all text
const response = await fetch('https://api.onlydocs.net/v1/editor/extract-text', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ pdfBase64 })
});
const result = await response.json();
const text = result.data.text;
// Parse extracted text for key fields
const formData = {
name: text.match(/Name:?\s*([^\n]+)/i)?.[1]?.trim(),
email: text.match(/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/)?.[1],
phone: text.match(/Phone:?\s*([\d\-\(\)\s]+)/i)?.[1]?.trim(),
address: text.match(/Address:?\s*([^\n]+)/i)?.[1]?.trim(),
};
// Save to database
await saveFormSubmission(formData);
return formData;
}
ROI:
- 1000 forms/day
- Manual data entry: 5 min/form = 83 hours/day
- At $20/hour: $1,660/day = $49,800/month
- OnlyDocs API: $29.99/month
- Savings: $49,770/month
Use Case 8: Multi-Language Document Converter
The Problem: International company needs to convert documents between formats for different teams.
Solution: Batch convert PDFs to Word (for editing), Excel (for data), or images (for web)
async function convertDocumentBatch(pdfs, targetFormat) {
const endpoints = {
'word': '/api/v1/convert/pdf-to-docx',
'excel': '/api/v1/convert/pdf-to-xlsx',
'image': '/api/v1/convert/pdf-to-image',
'html': '/api/v1/convert/pdf-to-html'
};
const results = await Promise.all(
pdfs.map(async (pdfBase64) => {
const response = await fetch(`https://api.onlydocs.net${endpoints[targetFormat]}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ pdfBase64 })
});
return await response.json();
})
);
return results;
}
// Usage
const pdfs = await getPendingConversions();
const converted = await convertDocumentBatch(pdfs, 'word');
Use Case 9: Document Compression at Scale
The Problem: SaaS platform generates large PDF reports, causing slow downloads and high storage costs.
Solution: Automatically compress all generated PDFs
async function generateAndCompressReport(reportData) {
// Generate report from template
const reportPdf = await generateReport(reportData);
// Compress for storage and download
const response = await fetch('https://api.onlydocs.net/v1/editor/compress', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
pdfBase64: reportPdf,
compressionLevel: 'high', // 'low', 'medium', 'high'
optimizeImages: true,
removeDuplicates: true
})
});
const result = await response.json();
// Result typically 50-80% smaller
console.log(`Original: ${reportPdf.length} bytes`);
console.log(`Compressed: ${result.data.pdfBase64.length} bytes`);
console.log(`Savings: ${((1 - result.data.pdfBase64.length / reportPdf.length) * 100).toFixed(1)}%`);
// Store compressed version
await storePDF(result.data.pdfBase64);
return result.data.pdfBase64;
}
// Batch compression for existing documents
async function compressExistingDocuments() {
const largeDocuments = await findLargeDocuments(); // > 5MB
const results = await Promise.all(
largeDocuments.map(async (doc) => {
const compressed = await fetch('https://api.onlydocs.net/v1/editor/compress', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
pdfBase64: doc.pdfBase64,
compressionLevel: 'high'
})
}).then(r => r.json());
return {
id: doc.id,
originalSize: doc.size,
newSize: Buffer.from(compressed.data.pdfBase64, 'base64').length,
pdf: compressed.data.pdfBase64
};
})
);
// Save compressed versions
for (const result of results) {
await updateDocument(result.id, result.pdf);
console.log(`Compressed ${result.id}: ${result.originalSize} → ${result.newSize} bytes`);
}
const totalSaved = results.reduce((sum, r) => sum + (r.originalSize - r.newSize), 0);
console.log(`Total storage saved: ${(totalSaved / 1024 / 1024).toFixed(2)} MB`);
}
Use Case 10: Website Screenshot to PDF
The Problem: Compliance tool needs to archive web pages as PDFs for legal records.
Solution: Convert URLs to PDFs automatically
async function archiveWebPage(url) {
const response = await fetch('https://api.onlydocs.net/v1/convert/url-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
url,
options: {
fullPage: true, // Capture entire page
waitUntil: 'networkidle', // Wait for page to fully load
format: 'A4'
}
})
});
const result = await response.json();
// Add metadata
const withMetadata = await fetch('https://api.onlydocs.net/v1/editor/metadata', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
pdfBase64: result.data.pdfBase64,
metadata: {
title: `Archive of ${url}`,
author: 'Compliance Bot',
subject: 'Web Archive',
keywords: `archive, ${new Date().toISOString()}`
}
})
});
return await withMetadata.json();
}
Common Integration Patterns
Pattern 1: Queue-Based Processing
const Bull = require('bull');
const pdfQueue = new Bull('pdf-generation');
// Add job to queue
pdfQueue.add({ type: 'invoice', data: invoiceData });
// Process jobs
pdfQueue.process(async (job) => {
const { type, data } = job.data;
const response = await fetch('https://api.onlydocs.net/v1/convert/html-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ html: generateHTML(type, data) })
});
const result = await response.json();
await savePDF(result.data.pdfBase64);
});
Pattern 2: Webhook Callbacks
// Request with callback URL
const response = await fetch('https://api.onlydocs.net/v1/async/html-to-pdf', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
html: largeHTML,
callbackUrl: 'https://myapp.com/api/pdf-completed'
})
});
// Handle callback
app.post('/api/pdf-completed', (req, res) => {
const { jobId, status, result } = req.body;
if (status === 'completed') {
const pdfBase64 = result.pdfBase64;
await processPDF(pdfBase64);
}
res.json({ received: true });
});
Pattern 3: Batch Processing with Rate Limiting
const pLimit = require('p-limit');
const limit = pLimit(10); // 10 concurrent requests
async function processBatch(items) {
const results = await Promise.all(
items.map(item =>
limit(async () => {
const response = await fetch('https://api.onlydocs.net/v1/editor/merge', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ONLYDOCS_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ pdfs: item.pdfs })
});
return await response.json();
})
)
);
return results;
}
Cost Comparison Across Use Cases
| Use Case | Monthly Volume | OnlyDocs | Adobe | Savings |
|---|---|---|---|---|
| Invoice Gen | 100k PDFs | $29.99 | $5,000 | $59,881/yr |
| Certificates | 50k PDFs | $29.99 | $2,500 | $29,641/yr |
| OCR Processing | 10k scans | $29.99 | $500 | $5,641/yr |
| Compression | 1M PDFs | $29.99 | $50,000 | $599,881/yr |
| Report Gen | 5k reports | $29.99 | $250 | $2,641/yr |
Total potential savings: $697,685/year across all use cases
Getting Started
- Sign up: Visit onlydocs.net/pricing
- Upgrade to Business: $29.99/month (API requires Business tier)
- Generate API Key: Dashboard → Settings → API Keys
- Start building: Unlimited requests with Business subscription
- Deploy: 100 requests/minute rate limit
API Resources
- Full Documentation: api.onlydocs.net/docs
- Code Examples: GitHub repo with JS, Python, PHP, Ruby samples
- Postman Collection: Import and test all endpoints
- Status Page: status.onlydocs.net
- Support: priority@onlydocs.net (24h response)
The Bottom Line
A PDF API unlocks massive automation potential. Whether you're:
- Generating invoices
- Processing scanned documents
- Creating reports
- Managing contracts
- Archiving web pages
OnlyDocs API gives you enterprise capabilities at $29.99/month unlimited—saving you 94-99% compared to Adobe or PDFtron.
Start building today and see why developers are switching to OnlyDocs.
Keywords: PDF API use cases, document automation, invoice generation API, OCR API, PDF processing, developer tools, OnlyDocs API, PDF API examples