Package Exports
- @meistrari/document-sdk
Readme
Document Processing SDK
A TypeScript SDK for the Document Processing API that provides methods for PDF extraction, splitting, template generation, PDF-to-image conversion, merging, and cropping operations.
Installation
npm install @meistrari/document-sdk
# or
pnpm add @meistrari/document-sdk
# or
yarn add @meistrari/document-sdkQuick Start
Using DataToken Authentication
import { docClient } from '@meistrari/document-sdk'
const client = docClient({
apiUrl: 'https://your-api-url.com',
dataToken: 'your-data-token'
})Using API Key Authentication
import { docClient } from '@meistrari/document-sdk'
const client = docClient({
apiUrl: 'https://your-api-url.com',
apiKey: 'Bearer your-api-key'
})Using DocClient Class Directly
import { DocClient } from '@meistrari/document-sdk'
const client = new DocClient({
apiUrl: 'https://your-api-url.com',
dataToken: 'your-data-token'
})Operations
Extract Pages from PDF
const result = await client.extract({
type: 'page',
indexes: [1, 3, -1, '2-4'], // Support for ranges and negative indexing
files: [
{
file_url: 'vault://document-123',
filename: 'document.pdf'
}
]
})Split PDF
const result = await client.split({
files: [
{
file_url: 'vault://document-123',
filename: 'large-document.pdf'
}
],
chunkSize: 5, // Pages per chunk
type: 'page'
})Generate Document from Template
const result = await client.template({
template: {
content: 'base64-encoded-docx-content',
filename: 'template.docx'
},
data: {
name: 'John Doe',
company: 'Acme Corp',
user: {
email: 'john@example.com'
}
},
options: {
outputFormat: 'vault_url',
enableMustache: true,
createPermalink: true
}
})Convert PDF to Images
const result = await client.pdfToImage({
file_url: 'vault://document-123',
filename: 'document.pdf',
pages: [1, 2, 5] // Pages to convert
})Merge PDFs
const result = await client.merge({
files: [
{ file_url: 'vault://doc1', filename: 'doc1.pdf' },
{ file_url: 'vault://doc2', filename: 'doc2.pdf' }
],
outputFilename: 'merged-document.pdf'
})Crop Image
const result = await client.crop({
file_url: 'vault://image-123',
filename: 'image.jpg',
coordinates: {
x1: 10,
y1: 10,
x2: 200,
y2: 200
}
})Error Handling
The SDK provides typed error classes for different scenarios:
import {
ValidationError,
AuthenticationError,
NetworkError,
ServerError,
NotFoundError
} from '@meistrari/document-sdk'
try {
const result = await client.extract(request)
} catch (error) {
if (error instanceof ValidationError) {
console.log('Validation failed:', error.message)
} else if (error instanceof AuthenticationError) {
console.log('Authentication failed:', error.message)
} else if (error instanceof NetworkError) {
console.log('Network error:', error.message)
}
}TypeScript Support
The SDK is written in TypeScript and provides comprehensive type definitions:
import type {
ExtractRequest,
ExtractResponse,
TemplateRequest,
TemplateResponse,
DocConfig
} from '@meistrari/document-sdk'File URL Formats
The SDK supports multiple file URL formats:
- Vault URLs:
vault://file-id - External URLs:
https://example.com/file.pdf - Base64: For template content (inline base64 encoded data)
Build & Development
# Install dependencies
pnpm install
# Build the SDK
pnpm build
# Run tests
pnpm test
# Lint code
pnpm lintLicense
UNLICENSED