pdftables-io
v0.1.0
Published
Official JavaScript/TypeScript SDK for the pdftables.io API – extract tables from PDFs.
Maintainers
Readme
pdftables-io
Official JavaScript/TypeScript SDK for the pdftables.io API — extract tables from PDFs programmatically.
npm install pdftables-ioQuick Start
import { PDFTablesClient } from "pdftables-io";
const client = new PDFTablesClient({ apiKey: "your-api-key" });
// 1. Upload a PDF
const upload = await client.upload("invoice.pdf");
// 2. Start table extraction
const job = await client.createJob(upload.upload_id);
// 3. Wait for completion
const result = await client.waitForJob(job.id);
// 4. Download results
const csvZip = await client.downloadJobCsv(result.id);Authentication
Pass your API key directly or set the PDFTABLES_API_KEY environment variable:
// Explicit
const client = new PDFTablesClient({ apiKey: "..." });
// Via environment variable (PDFTABLES_API_KEY)
const client = new PDFTablesClient();API Reference
Upload
| Method | Description |
|---|---|
| upload(file, filename?) | Upload a PDF (path, Buffer, Uint8Array, or Blob) |
| listUploads() | List all uploads |
Extraction Jobs
| Method | Description |
|---|---|
| createJob(uploadId, { pages?, mode? }) | Start extraction (auto, stream, lattice) |
| getJob(jobId) | Get job status |
| waitForJob(jobId, { pollInterval?, timeout? }) | Poll until complete |
| listJobs() | List all jobs |
| listJobTables(jobId) | List extracted tables |
Downloads
| Method | Description |
|---|---|
| downloadTable(tableId, { format?, structure? }) | Download single table (csv/json/xlsx) |
| downloadTablesZip(tableIds, { format?, structure? }) | Download multiple tables as ZIP |
| downloadJobCsv(jobId) | Download all job tables as CSV ZIP |
| downloadJobXlsx(jobId) | Download all job tables as XLSX ZIP |
| downloadJobJson(jobId) | Download all job tables as JSON ZIP |
Export Structures
| Method | Description |
|---|---|
| listStructures() | List all structures |
| createStructure({ name, slug, fields?, ... }) | Create custom structure |
| getStructure(structureId) | Get structure details |
| updateStructure(structureId, { name, slug, ... }) | Update structure |
| deleteStructure(structureId) | Delete structure |
DATEV
| Method | Description |
|---|---|
| createDatevExport(jobId, { tableId, fiscalYear? }) | Trigger DATEV export |
| downloadDatevExport(jobId, datevId, { format? }) | Download DATEV file |
Error Handling
import { PDFTablesClient, AuthenticationError, RateLimitError } from "pdftables-io";
try {
const upload = await client.upload("invoice.pdf");
} catch (err) {
if (err instanceof AuthenticationError) {
console.error("Invalid API key");
} else if (err instanceof RateLimitError) {
console.error("Rate limit exceeded");
}
}| Exception | HTTP Status |
|---|---|
| AuthenticationError | 401, 403 |
| ValidationError | 400 |
| PaymentRequiredError | 402 |
| NotFoundError | 404 |
| RateLimitError | 429 |
| ConflictError | 409 |
| ServerError | 5xx |
CommonJS
const { PDFTablesClient } = require("pdftables-io");Requirements
- Node.js ≥ 18 (native
fetch) - Zero runtime dependencies
License
BSD 3-Clause — see LICENSE.
