{"_id":"@cedrugs/pdf-parse","name":"@cedrugs/pdf-parse","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@cedrugs/pdf-parse","version":"1.0.0","description":"Fork of pdf-parse with fixes","main":"index.js","keywords":["pdf-parse","pdf-crawler","xpdf","pdf.js","pdfreader","pdf-extractor","pdf2json","j-pdfjson","pdf-parser","pdf-extract","pdf-extractor","pdf-to-text","pdf-text-extract","pdfjs","server side PDF parsing","pdf metadata"],"type":"commonjs","types":"index.d.ts","exports":{".":{"require":"./index.js","types":"./index.d.ts","default":"./index.js"}},"engines":{"node":">=18"},"dependencies":{"debug":"^3.1.0","node-ensure":"^0.0.0"},"devDependencies":{"mocha":"^4.0.1"},"scripts":{"test":"node node_modules/mocha/bin/_mocha --recursive --slow 10000","start":"node index.js"},"homepage":"https://github.com/Cedrugs/pdf-parse","bugs":{"url":"https://github.com/Cedrugs/pdf-parse/issues","email":"ceds.sam@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Cedrugs/pdf-parse.git"},"author":{"name":"Samuel Cedric","email":"ceds.sam@gmail.com"},"license":"MIT","_id":"@cedrugs/pdf-parse@1.0.0","gitHead":"c0d1ac65bade74697c28a99e8870b7960ef631a4","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-lu+4Hvrkzq725+XPqq/sTGjJ3+/z81b9af8mf8qgLa5CdkkheeZ0fgnlNTxlBZApQYUhOZJrXzqZXUYTMDQjlQ==","shasum":"a276045b86b1cbbf0e09bce547ae932ec3923132","tarball":"https://registry.npmjs.org/@cedrugs/pdf-parse/-/pdf-parse-1.0.0.tgz","fileCount":23,"unpackedSize":24195792,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID/n/7Bk0wny0/JIhzGgxASlVryk2kUwW5kdy1dNL5qpAiEAxyqBLoCwACE9w69icjbVEbJwbOpZ97i7hvtwd10wkTI="}]},"_npmUser":{"name":"cedrugs","email":"ceds.sam@gmail.com"},"directories":{},"maintainers":[{"name":"cedrugs","email":"ceds.sam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdf-parse_1.0.0_1757004934815_0.7660105545453466"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-04T16:55:34.700Z","1.0.0":"2025-09-04T16:55:35.088Z","modified":"2025-09-04T16:55:35.338Z"},"maintainers":[{"name":"cedrugs","email":"ceds.sam@gmail.com"}],"description":"Fork of pdf-parse with fixes","homepage":"https://github.com/Cedrugs/pdf-parse","keywords":["pdf-parse","pdf-crawler","xpdf","pdf.js","pdfreader","pdf-extractor","pdf2json","j-pdfjson","pdf-parser","pdf-extract","pdf-extractor","pdf-to-text","pdf-text-extract","pdfjs","server side PDF parsing","pdf metadata"],"repository":{"type":"git","url":"git+https://github.com/Cedrugs/pdf-parse.git"},"author":{"name":"Samuel Cedric","email":"ceds.sam@gmail.com"},"bugs":{"url":"https://github.com/Cedrugs/pdf-parse/issues","email":"ceds.sam@gmail.com"},"license":"MIT","readme":"# @cedrugs/pdf-parse\n\n**Pure JavaScript, cross-platform PDF text & metadata extraction.**  \nA maintained fork of [`pdf-parse`](https://www.npmjs.com/package/pdf-parse) with **bundled TypeScript types**, **ESM-friendly default export**, and **Node 18+** support.\n\n[![npm](https://img.shields.io/npm/v/%40cedrugs%2Fpdf-parse.svg)](https://www.npmjs.com/package/@cedrugs/pdf-parse)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n![node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)\n\n---\n\n## Why this fork?\n\n- **Types included** — ships `index.d.ts` (no need for `@types/pdf-parse`).\n- **ESM & CJS friendly** — default import works out of the box.\n- **Same API** as upstream for drop-in replacement.\n- **Node 18+** minimum for modern runtimes.\n\n> If you want to keep your existing `import pdf from \"pdf-parse\"` usage, see the **Install (alias)** section.\n\n---\n\n## Installation\n\n### Option A — Use this scoped package directly\n```bash\nnpm i @cedrugs/pdf-parse\n# or\npnpm add @cedrugs/pdf-parse\n# or\nyarn add @cedrugs/pdf-parse\n````\n\n### Option B — Keep the old import name via npm alias\n\n```bash\nnpm i pdf-parse@npm:@cedrugs/pdf-parse\n```\n\nNow `import pdf from \"pdf-parse\"` continues to work, but resolves to this fork.\n\n---\n\n## Basic Usage — Local Files\n\n### CommonJS\n\n```js\nconst fs = require('fs');\nconst pdf = require('@cedrugs/pdf-parse'); // or 'pdf-parse' if using the alias\n\nconst dataBuffer = fs.readFileSync('path/to/file.pdf');\n\npdf(dataBuffer).then((data) => {\n    // number of pages\n    console.log(data.numpages);\n    // number of rendered pages\n    console.log(data.numrender);\n    // PDF info\n    console.log(data.info);\n    // PDF metadata\n    console.log(data.metadata);\n    // PDF.js version\n    // see https://mozilla.github.io/pdf.js/getting_started/\n    console.log(data.version);\n    // PDF text\n    console.log(data.text);\n});\n```\n\n### ESM / TypeScript\n\n```ts\nimport pdf from '@cedrugs/pdf-parse'; // default export supported\nimport { readFileSync } from 'node:fs';\n\nconst buf = readFileSync('path/to/file.pdf');\nconst data = await pdf(buf);\n\nconsole.log(data.text);\n```\n\n---\n\n## Basic Usage — HTTP\n\nYou can use packages like [`crawler-request`](https://www.npmjs.com/package/crawler-request) which integrate with `pdf-parse`.\n\n---\n\n## Exception Handling\n\n```js\nconst fs = require('fs');\nconst pdf = require('@cedrugs/pdf-parse');\n\nconst buf = fs.readFileSync('path/to/file.pdf');\n\npdf(buf)\n    .then((data) => {\n        // use data\n    })\n    .catch((err) => {\n        // handle exceptions\n        console.error(err);\n    });\n```\n\n---\n\n## TypeScript\n\nThis fork bundles its own `.d.ts`. No external `@types/pdf-parse` needed.\n\n```ts\nimport pdf from '@cedrugs/pdf-parse';\n\nconst res = await pdf(Buffer.from('...'));\nres.text;       // string\nres.numpages;   // number\nres.version;    // \"default\" | \"v1.9.426\" | \"v1.10.100\" | \"v1.10.88\" | \"v2.0.550\"\n```\n\n---\n\n## Options\n\n```js\nconst DEFAULT_OPTIONS = {\n    // internal page parser callback\n    // set this if you need a custom output format instead of raw text\n    pagerender: render_page,\n\n    // max page number to parse (<= 0 means “all pages”)\n    max: 0,\n\n    // see https://mozilla.github.io/pdf.js/getting_started/\n    version: 'v1.10.100'\n};\n```\n\n### `pagerender` (callback)\n\nCustomize how each page is rendered/extracted if you need structured output beyond plain text.\n\n### `max` (number)\n\nMaximum number of pages to parse. Use `0` or a negative value to parse all pages.\n\n### `version` (string, pdf.js version)\n\n* `'default'`\n* `'v1.9.426'`\n* `'v1.10.100'`\n* `'v1.10.88'`\n* `'v2.0.550'`\n\n> Default version is `v1.10.100`. See the [pdf.js getting started guide](https://mozilla.github.io/pdf.js/getting_started/).\n\n---\n\n## Extend — Custom `pagerender`\n\n```js\nfunction render_page(pageData) {\n    // see https://mozilla.github.io/pdf.js/\n    const render_options = {\n        // replace all whitespace with standard spaces (0x20)\n        normalizeWhitespace: false,\n        // do not attempt to combine cedrugse-line TextItems\n        disableCombineTextItems: false\n    };\n\n    return pageData.getTextContent(render_options).then((textContent) => {\n        let lastY;\n        let text = '';\n        for (const item of textContent.items) {\n            if (lastY === item.transform[5] || !lastY) {\n                text += item.str;\n            } else {\n                text += '\\n' + item.str;\n            }\n            lastY = item.transform[5];\n        }\n        return text;\n    });\n}\n\nconst options = { pagerender: render_page };\nconst dataBuffer = require('fs').readFileSync('path/to/file.pdf');\n\nrequire('@cedrugs/pdf-parse')(dataBuffer, options).then((data) => {\n    // use custom-formatted output\n});\n```\n\n---\n\n## Similar Packages\n\n* [pdf2json](https://www.npmjs.com/package/pdf2json)\n* [j-pdfjson](https://www.npmjs.com/package/j-pdfjson)\n* [pdf-parser](https://github.com/dunso/pdf-parse)\n* [pdfreader](https://www.npmjs.com/package/pdfreader)\n* [pdf-extract](https://www.npmjs.com/package/pdf-extract)\n\n*(Different trade-offs: dependencies, maintenance, platform support, and output formats.)*\n\n---\n\n## Tests\n\n* `npm test` (runs `mocha`)\n* See the `test` directory in upstream for usage ideas; contributions adding tests here are welcome.\n\n---\n\n## Support / Issues\n\n* **Issues:** open on GitHub → [https://github.com/Cedrugs/pdf-parse/issues](https://github.com/Cedrugs/pdf-parse/issues)\n* **Discussions/PRs:** welcome!\n\n---\n\n## License\n\n[MIT](LICENSE)\n\n### Acknowledgements\n\nThis project builds on the excellent work of the original [`pdf-parse`](https://www.npmjs.com/package/pdf-parse) and the PDF.js team.","readmeFilename":"README.md","_rev":"1-2f9e9fd88e64cbaea9a1ee7ba13a0047"}