{"_id":"@contexaworks/pdf-to-excel","_rev":"5-3bdb808472bce5b88d7c974044bc6569","name":"@contexaworks/pdf-to-excel","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@contexaworks/pdf-to-excel","version":"0.1.0","keywords":["contexa","pdf","excel","pdf-to-excel","spreadsheet","table-extraction","ocr","ai","rapidapi"],"license":"MIT","_id":"@contexaworks/pdf-to-excel@0.1.0","maintainers":[{"name":"strathausen","email":"strathausen@gmail.com"}],"dist":{"shasum":"8e950c8a0d348bec981c0d1d9fa6f03ed6687c76","tarball":"https://registry.npmjs.org/@contexaworks/pdf-to-excel/-/pdf-to-excel-0.1.0.tgz","fileCount":10,"integrity":"sha512-ZYKUg1QWZjxmKrPrmzhVOPBWWzP3aZO4ECp8VFRBCDKxjufJvSp5qCe4z3/jGfvVAng1fyqsOnJyWaRbA9TN8g==","signatures":[{"sig":"MEYCIQDrWsZnYpQc3D9OKH+mMpmhWIRGScR6AmpXODAMuBxdXAIhAKrfXUe0pSVhDJDlqSzvs0GgIiHJDlUH6TOOank3Pzhx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14573},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"39898919c583ec5d82b071d24634addb183fbfb9","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"strathausen","email":"strathausen@gmail.com"},"_npmVersion":"10.9.4","description":"Convert PDF documents to Excel spreadsheets with AI-powered table extraction","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-to-excel_0.1.0_1773266536940_0.6706079990306713","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@contexaworks/pdf-to-excel","version":"0.1.1","keywords":["contexa","pdf","excel","pdf-to-excel","spreadsheet","table-extraction","ocr","ai","rapidapi"],"license":"MIT","_id":"@contexaworks/pdf-to-excel@0.1.1","maintainers":[{"name":"strathausen","email":"strathausen@gmail.com"}],"dist":{"shasum":"8ff5dacdcc28d5b3a561c67d17113cb7de6f1af3","tarball":"https://registry.npmjs.org/@contexaworks/pdf-to-excel/-/pdf-to-excel-0.1.1.tgz","fileCount":10,"integrity":"sha512-3QpkWq6922BWom1tpS/RVKodBrbP9DWmdOx1csvB/xIB2f37QsSZaHfOzujiXOKzCm6LSRgw9s72h4xFRFsqtg==","signatures":[{"sig":"MEUCIEm8SubgLhvysQFvhSpF8Q98Q2eNZCtgvn/JUTQAetMZAiEAlIFzzjuxjRPdL2YCHzroYjIYIKDQXSouJd8rPEA9c4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14630},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"39898919c583ec5d82b071d24634addb183fbfb9","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"strathausen","email":"strathausen@gmail.com"},"_npmVersion":"10.9.4","description":"Convert PDF documents to Excel spreadsheets with AI-powered table extraction","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-to-excel_0.1.1_1773266716023_0.5354850884927733","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@contexaworks/pdf-to-excel","version":"0.1.2","keywords":["contexa","pdf","excel","pdf-to-excel","spreadsheet","table-extraction","ocr","ai","rapidapi"],"license":"MIT","_id":"@contexaworks/pdf-to-excel@0.1.2","maintainers":[{"name":"strathausen","email":"strathausen@gmail.com"}],"dist":{"shasum":"412fa6ea2d4adc377530bf4a81f62b8231d6054b","tarball":"https://registry.npmjs.org/@contexaworks/pdf-to-excel/-/pdf-to-excel-0.1.2.tgz","fileCount":10,"integrity":"sha512-T/qK676R/fIvA05Y5WgQrgEIPONxBMuJbxy974diCQ1/IgV4EomKCiR4WDWFYEMzLOrwxIQsLedI10AeTLQyMA==","signatures":[{"sig":"MEQCIFbAX/Zc9RSHKg5S1OFSlI/TIj6/lzd3X1U2yFWiHGqhAiBRKlygHNceI+qAW6CRE2OEKTauTfxFsdTAfxr6ml7hLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14693},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"39898919c583ec5d82b071d24634addb183fbfb9","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"strathausen","email":"strathausen@gmail.com"},"_npmVersion":"10.9.4","description":"Convert PDF documents to Excel spreadsheets with AI-powered table extraction","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-to-excel_0.1.2_1773267494810_0.6937974612757389","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@contexaworks/pdf-to-excel","version":"0.2.0","keywords":["contexa","pdf","excel","pdf-to-excel","spreadsheet","table-extraction","ocr","ai","rapidapi"],"license":"MIT","_id":"@contexaworks/pdf-to-excel@0.2.0","maintainers":[{"name":"strathausen","email":"strathausen@gmail.com"}],"dist":{"shasum":"612cbb546f8ad39d34ad48dc3c9501e95f9af86d","tarball":"https://registry.npmjs.org/@contexaworks/pdf-to-excel/-/pdf-to-excel-0.2.0.tgz","fileCount":10,"integrity":"sha512-NdFleWt/vLrZFxA3N2Ip9AMS40qVQ5RrezunLcng8yuPo8BDUJMe6nRZxf9gzrnThB92GVwqjeY/J8yZMq1IqA==","signatures":[{"sig":"MEUCICYAvFqBfCfV5Y5kCEnqGVKgS3uoOz+yI+E7gEydum85AiEAjyEdDUMi89fgO7VIGkRt6TWw5VGFuWCJT/Alza+rjOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14744},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"66355ef522f4b2e40105f130b971fb5556eead20","scripts":{"build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"strathausen","email":"strathausen@gmail.com"},"_npmVersion":"10.9.4","description":"Convert PDF documents to Excel spreadsheets with AI-powered table extraction","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-to-excel_0.2.0_1773411017006_0.4242098873263118","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@contexaworks/pdf-to-excel","version":"0.2.1","description":"Convert PDF documents to Excel spreadsheets with AI-powered table extraction","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsc","prepublishOnly":"tsc"},"keywords":["contexa","pdf","excel","pdf-to-excel","spreadsheet","table-extraction","ocr","ai","rapidapi"],"license":"MIT","devDependencies":{"typescript":"^5.5.0"},"_id":"@contexaworks/pdf-to-excel@0.2.1","gitHead":"66355ef522f4b2e40105f130b971fb5556eead20","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-9llU6lI5yO7dx2OdnVv9mcvtmukr2m5DomnMtB3UbjVt8nZ9h0nGpsBJmdRBK8ibXPU4QFGZtXvpeVs7FmdqWg==","shasum":"38919f7d4ca5ef3f45d70294a71616ae50ba3c35","tarball":"https://registry.npmjs.org/@contexaworks/pdf-to-excel/-/pdf-to-excel-0.2.1.tgz","fileCount":10,"unpackedSize":14729,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICF4KHOuYlBBLyU4XBSElH2hqAbIhOUy2Z3IDYgXZUZCAiEA5ThMxsZ6V+EyH/g85bcfGUtu0j9krnUMUhkNzX2xOHw="}]},"_npmUser":{"name":"strathausen","email":"strathausen@gmail.com"},"directories":{},"maintainers":[{"name":"strathausen","email":"strathausen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdf-to-excel_0.2.1_1773411560661_0.9476897623220468"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T22:02:16.835Z","modified":"2026-03-13T14:19:21.010Z","0.1.0":"2026-03-11T22:02:17.101Z","0.1.1":"2026-03-11T22:05:16.188Z","0.1.2":"2026-03-11T22:18:15.040Z","0.2.0":"2026-03-13T14:10:17.164Z","0.2.1":"2026-03-13T14:19:20.875Z"},"license":"MIT","keywords":["contexa","pdf","excel","pdf-to-excel","spreadsheet","table-extraction","ocr","ai","rapidapi"],"description":"Convert PDF documents to Excel spreadsheets with AI-powered table extraction","maintainers":[{"name":"strathausen","email":"strathausen@gmail.com"}],"readme":"# @contexaworks/pdf-to-excel\n\nConvert PDF documents to Excel spreadsheets (.xlsx) with AI-powered table extraction. Automatically detects tables, headers, column types, and multi-page layouts.\n\nPowered by the [Contexa PDF to Excel API](https://rapidapi.com/contexa-contexa-default/api/pdf-to-excel-converter5) on RapidAPI.\n\n## Install\n\n```bash\nnpm install @contexaworks/pdf-to-excel\n```\n\n## Quick Start\n\nGet your API key from [RapidAPI](https://rapidapi.com/contexa-contexa-default/api/pdf-to-excel-converter5) — subscribe to a plan and copy your `X-RapidAPI-Key` from any endpoint page.\n\n```typescript\nimport { ContexaPdfToExcel } from \"@contexaworks/pdf-to-excel\";\nimport { readFileSync, writeFileSync } from \"fs\";\n\nconst client = new ContexaPdfToExcel({\n  apiKey: \"your-rapidapi-key\",\n});\n\n// Convert a PDF to Excel — returns the .xlsx binary\nconst result = await client.pdfToExcel(readFileSync(\"report.pdf\"));\n\nwriteFileSync(\"report.xlsx\", Buffer.from(result.data));\nconsole.log(`Done in ${result.processingTimeMs}ms`);\n```\n\n## Usage\n\n### File Input\n\nThe SDK accepts multiple file input formats:\n\n```typescript\n// Buffer / Uint8Array (Node.js)\nawait client.pdfToExcel(readFileSync(\"file.pdf\"));\n\n// File / Blob (browser)\nconst input = document.querySelector<HTMLInputElement>(\"#file-input\");\nawait client.pdfToExcel(input.files[0]);\n\n// Base64 string\nawait client.pdfToExcel({\n  base64: \"JVBERi0xLjQg...\",\n  mimeType: \"application/pdf\",\n  fileName: \"report.pdf\",\n});\n```\n\n### Extract Specific Pages\n\n```typescript\nconst result = await client.pdfToExcel(file, {\n  pages: \"1-5\", // only extract pages 1 through 5\n});\n```\n\n### Custom Extraction Prompt\n\nGuide the AI on what to extract:\n\n```typescript\nconst result = await client.pdfToExcel(file, {\n  prompt: \"Only extract the revenue table, ignore footnotes\",\n});\n```\n\n### Progress Tracking\n\nFor large PDFs, track extraction progress page by page:\n\n```typescript\nconst result = await client.pdfToExcel(file, {\n  onProgress: (job) => {\n    const p = job.result?.progress;\n    if (p) {\n      console.log(`Page ${p.currentPage}/${p.totalPages} — ${p.tablesFound} tables found`);\n    }\n  },\n});\n```\n\n### Manual Polling\n\nIf you prefer to handle polling yourself (e.g. in a queue worker):\n\n```typescript\n// Submit the job without waiting\nconst { jobId } = await client.pdfToExcel(file, { poll: false });\n\n// Check status later\nconst job = await client.getJob(jobId);\nconsole.log(job.status); // \"processing\" | \"completed\" | \"failed\"\n\n// Fetch the result when ready\nconst response = await client.getJobResult(jobId);\nconst xlsx = Buffer.from(await response.arrayBuffer());\n```\n\n### Webhook Callback\n\nGet notified when extraction completes instead of polling:\n\n```typescript\nconst { jobId } = await client.pdfToExcel(file, {\n  poll: false,\n  callbackUrl: \"https://your-server.com/webhook\",\n});\n// Your webhook receives: { jobId, status, processingTimeMs }\n```\n\n## What It Extracts\n\nThe AI handles complex PDF layouts including:\n\n- **Multi-page tables** — tables that span across pages are automatically merged\n- **Multi-row headers** — grouped/spanning column headers are preserved\n- **Column types** — numbers, dates, currencies, percentages detected automatically\n- **Merged cells** — vertically merged cells are reconstructed in the Excel output\n- **Multiple tables** — each table gets its own worksheet\n\n## API Reference\n\n### `new ContexaPdfToExcel(options)`\n\n| Option    | Type     | Required | Description                                      |\n|-----------|----------|----------|--------------------------------------------------|\n| `apiKey`  | `string` | Yes      | Your RapidAPI key                                |\n| `baseUrl` | `string` | No       | API base URL (default: RapidAPI proxy) |\n\n### `client.pdfToExcel(file, options?)`\n\n| Option        | Type                    | Default | Description                        |\n|---------------|-------------------------|---------|------------------------------------|\n| `prompt`      | `string`                | —       | Custom extraction instructions     |\n| `pages`       | `string`                | —       | Page range (e.g. `\"1-5\"`)         |\n| `poll`        | `boolean`               | `true`  | Wait for completion                |\n| `onProgress`  | `(job: Job) => void`    | —       | Progress callback                  |\n| `pollInterval`| `number`                | `2000`  | Polling interval in ms             |\n| `callbackUrl` | `string`                | —       | Webhook URL for completion         |\n\nReturns `ExcelResult` (when `poll: true`) or `AsyncSubmitResult` (when `poll: false`).\n\n### `client.getJob(id)`\n\nReturns the current status of a job.\n\n### `client.getJobResult(id)`\n\nReturns the raw `Response` — for Excel jobs this contains the `.xlsx` binary.\n\n## RapidAPI Setup\n\n1. Go to [Contexa PDF to Excel on RapidAPI](https://rapidapi.com/contexa-contexa-default/api/pdf-to-excel-converter5)\n2. Subscribe to a plan (free tier available)\n3. Copy your **X-RapidAPI-Key** from any endpoint page\n4. Pass it as `apiKey` when creating the client\n\n## License\n\nMIT\n","readmeFilename":"README.md"}