JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 17498
  • Score
    100M100P100Q144899F
  • License UNLICENSED

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-sdk

Quick 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 lint

License

UNLICENSED