JavaScript SDK for FlexiDoc
Official JavaScript/TypeScript library for FlexiDoc API. Build document conversion features in browsers, Node.js, and modern frameworks.
npm installation
$ npm install flexidoc-js
yarn installation
$ yarn add flexidoc-js
Why Use Our JavaScript SDK?
Browser & Node.js
Works in browsers, Node.js, and serverless environments
TypeScript Support
Built with TypeScript for excellent type safety and IDE support
Promise-Based
Modern async/await API with built-in retry logic
Tree-Shakeable
Modular design for optimal bundle sizes
Works With Your Favorite Framework
FlexiDoc JavaScript SDK is framework-agnostic and works seamlessly with all modern JavaScript frameworks
⚛️
React
🟢
Vue.js
🔺
Angular
▲
Next.js
🟩
Nuxt
🟠
Svelte
Quick Start Examples
Basic Usage
import { FlexiDoc } from 'flexidoc-js';
// Initialize the client
const client = new FlexiDoc('your-api-key');
// Convert PDF to HTML
const file = document.getElementById('file-input').files[0];
const result = await client.pdfToHtml(file);
console.log(result.html);
// Convert HTML to PDF
const pdf = await client.htmlToPdf('<h1>Hello World</h1>');
// Download the PDF
pdf.download('output.pdf');
Browser Usage (CDN)
<!-- Include via CDN -->
<script src="https://cdn.jsdelivr.net/npm/flexidoc-js@latest/dist/flexidoc.min.js"></script>
<script>
// Initialize client
const client = new FlexiDoc('your-api-key');
// Handle file upload
async function convertPDF() {
const fileInput = document.getElementById('pdf-file');
const file = fileInput.files[0];
try {
const result = await client.pdfToHtml(file);
document.getElementById('output').innerHTML = result.html;
} catch (error) {
console.error('Conversion failed:', error);
}
}
</script>
Node.js Usage
import { FlexiDoc } from 'flexidoc-js';
import fs from 'fs/promises';
const client = new FlexiDoc(process.env.FLEXIDOC_API_KEY);
// Convert PDF file
const pdfBuffer = await fs.readFile('document.pdf');
const result = await client.pdfToHtml(pdfBuffer);
// Save HTML output
await fs.writeFile('output.html', result.html);
// Convert HTML to PDF
const pdf = await client.htmlToPdf('<h1>Report</h1>', {
format: 'A4',
margin: { top: '1cm', bottom: '1cm' }
});
await fs.writeFile('output.pdf', pdf);
React Component Example
import React, { useState } from 'react';
import { FlexiDoc } from 'flexidoc-js';
const client = new FlexiDoc(process.env.REACT_APP_FLEXIDOC_KEY);
function PDFConverter() {
const [html, setHtml] = useState('');
const [loading, setLoading] = useState(false);
const handleFileUpload = async (event) => {
const file = event.target.files[0];
if (!file) return;
setLoading(true);
try {
const result = await client.pdfToHtml(file, {
semantic: true,
extractImages: true
});
setHtml(result.html);
} catch (error) {
console.error('Conversion failed:', error);
} finally {
setLoading(false);
}
};
return (
<div>
<input
type="file"
accept=".pdf"
onChange={handleFileUpload}
disabled={loading}
/>
{loading && <p>Converting...</p>}
{html && (
<div dangerouslySetInnerHTML={{ __html: html }} />
)}
</div>
);
}
TypeScript Support
import { FlexiDoc, ConversionResult, PDFOptions } from 'flexidoc-js';
const client = new FlexiDoc('your-api-key');
// TypeScript interfaces are included
interface CustomOptions extends PDFOptions {
watermark?: string;
}
async function convertWithTypes(): Promise<void> {
try {
// Full type support
const result: ConversionResult = await client.pdfToHtml(
file,
{
semantic: true,
preserveLayout: true
}
);
// Access typed properties
console.log(result.html);
console.log(result.metadata.pageCount);
console.log(result.images.length);
} catch (error) {
if (error instanceof FlexiDocError) {
console.error('API Error:', error.code, error.message);
}
}
}
Batch Processing
import { FlexiDoc } from 'flexidoc-js';
const client = new FlexiDoc('your-api-key');
// Create batch job
const batch = await client.batch.create({
name: 'Website PDF Generation',
conversions: [
{
source: 'https://example.com/page1',
operation: 'html-to-pdf',
options: { format: 'A4' }
},
{
source: 'https://example.com/page2',
operation: 'html-to-pdf',
options: { format: 'A4' }
}
]
});
// Monitor progress
batch.on('progress', (update) => {
console.log(`Progress: ${update.percentage}%`);
});
batch.on('complete', (results) => {
console.log('Batch complete!', results);
});
await batch.waitForCompletion();
Error Handling
import { FlexiDoc, FlexiDocError } from 'flexidoc-js';
const client = new FlexiDoc('your-api-key');
try {
const result = await client.pdfToHtml(file);
} catch (error) {
if (error instanceof FlexiDocError) {
switch (error.code) {
case 'rate_limit':
console.error(`Rate limited. Retry after ${error.retryAfter}s`);
break;
case 'invalid_file':
console.error('Invalid PDF file');
break;
case 'quota_exceeded':
console.error('Monthly quota exceeded');
break;
default:
console.error('API Error:', error.message);
}
} else {
console.error('Unexpected error:', error);
}
}
Browser & Runtime Support
Browsers
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
Runtimes
- Node.js 16+
- Deno
- Cloudflare Workers
- Vercel Edge Runtime