{"_id":"pdfium-native","_rev":"25-891cca2fefc4cc2391859a497a52e2ab","name":"pdfium-native","dist-tags":{"latest":"0.10.0"},"versions":{"0.1.1":{"name":"pdfium-native","version":"0.1.1","keywords":["pdf","pdfium","native","render","text-extraction","ocr","node-addon","napi"],"license":"MIT","_id":"pdfium-native@0.1.1","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"6f5c4107d8c306cec0f4f96816f9575d8ba8b714","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.1.1.tgz","fileCount":47,"integrity":"sha512-+iN6niPqZA7K7ecXeJZCheovVX0EAUUq7RcJFDq5DruByu88k1lGWzh/G+qTRYfP+5adjD8C6zq6Sx6/mxaerQ==","signatures":[{"sig":"MEUCICRi3Yq/uWBP4Pain0ew2+Hl+iAGOUi8CLDnOEkupeLjAiEAhhKoHbqwF3zWz6QDXYXw6pnTpsWUQXBYiei5oOh1864=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188614},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"63927ee6eb2de1a2b9b07cdc5f30cc9cd1c14a87","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"xonaman","email":"xonaman@icloud.com"},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"10.9.7","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"22.22.2","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.1.1_1774684876982_0.31752701203799405","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"pdfium-native","version":"0.1.3","keywords":["pdf","pdfium","native","render","text-extraction","ocr","node-addon","napi"],"license":"MIT","_id":"pdfium-native@0.1.3","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"72039086a1bff9213f6dd11c8cd01892d39218ae","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.1.3.tgz","fileCount":47,"integrity":"sha512-F5HSO5BcP6+JOzAqaVcwq6/havBs2PzPFolMGUE05Eivujf/Q8lj8WXfaBYlrJfUdx4rs905oMRFLWQW2Xjp5A==","signatures":[{"sig":"MEUCIBTTi6ersIuessgICUQCZuNPNXYxXIwhtChtc9FqXCxQAiEAwJksFaKaxCMsr3Fq8rJ9FfSLO0sy9z+KuZqfuHyRJwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188614},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"4b52193c8acd96adcafb24af9171fbb70761384a","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:070b2224-f372-44f5-bcb3-26ab3ba95512"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.1.3_1774685931077_0.892124647006457","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"pdfium-native","version":"0.1.4","keywords":["pdf","pdfium","native","render","text-extraction","ocr","node-addon","napi"],"license":"MIT","_id":"pdfium-native@0.1.4","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"7b6c9a68f632423c535b80e06fb590e8a06dc3c4","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.1.4.tgz","fileCount":47,"integrity":"sha512-GfyeciPuzLfn7UDFlwSXYV4nSYhW8PwhPnDSKLgSZs0Uhnu0sI79rl5ATn/oGDbIJsVjaNBEhMcpUacSA8JIkA==","signatures":[{"sig":"MEQCIA1Oglu92kJQpjdXU66WMRMdLQ0ETOazXW0NjllCryCuAiBoo01BX4nEeNoSB/lnBwgLPyjUAQYRjfDFi6DcOVAZoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188614},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"d18712048d9d215719e84356c531e43574fe4054","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:070b2224-f372-44f5-bcb3-26ab3ba95512"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.1.4_1774686242416_0.12653568418529026","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"pdfium-native","version":"0.1.7","keywords":["pdf","pdfium","native","render","text-extraction","ocr","node-addon","napi"],"license":"MIT","_id":"pdfium-native@0.1.7","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"cc14f1931702d50e1d7e63e251fcf90c44fd7037","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.1.7.tgz","fileCount":47,"integrity":"sha512-JLyir5ZzxTkEHgY7ttb4TMTGNVeqvadU5zOrz+2mBl1gS5jZumcspcZJImXoMx3btlpxCq/hqauZeLUYpofUjg==","signatures":[{"sig":"MEQCIG3+YgANscvq5CZ8pRptR1jl7fRHm84mTYm8Dl6yvp+cAiBIjMqh4zOZXKpiioSAzZpGfb37n16Na/p1aa+q1yvGIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188615},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"6f4429ddbb60b4f93edcb2a673d708426610cbc7","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.1.7_1774688553425_0.6386842643557549","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"pdfium-native","version":"0.2.0","keywords":["pdf","pdfium","native","render","text-extraction","ocr","node-addon","napi"],"license":"MIT","_id":"pdfium-native@0.2.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"09e9790fa9a3a0a891a8aef624534c3e726f37a3","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.2.0.tgz","fileCount":41,"integrity":"sha512-orN4tOtVf4mWxEq4dpCo2l/plVpcg6zJNt+DfmUZshzVsVf3G3wbZHaWYIty/AM33GwD+4xVjnksugRbYa0c6A==","signatures":[{"sig":"MEYCIQDR/8WN8hNWVzEUFvuyz7riz/wZ1DuuDRFidbKYeTXvXAIhAI3fiWnv71D5lzH6mIF6U6dl+Sv5OV3R8kEL4bAsFljF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":183810},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"bc62b628d71d24b24b0d5325c7cf980247595593","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.2.0_1774691990724_0.07716480882259003","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"pdfium-native","version":"0.2.2","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.2.2","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"721d567fcfea525c8418063f90d8445f9de7df80","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.2.2.tgz","fileCount":41,"integrity":"sha512-mvKOqDD3hrpt8TtefnLQ7klPI4zA8ClNPziZj2yNQIY58BiA2t2NdMi0bAPzOF++MtfY4hwNW6jac+jtHFaLaw==","signatures":[{"sig":"MEUCIQDOhmQ2kPEbHhczUzFTtWmXLtszw4H8+YGXllzW6e4xNwIgF7nq3iDArKwZlgQm2tlghGf9iTErvIjJ5N0IECczawE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190030},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"9a7a6acf84805bf29230a28f82ca90ae992122d6","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.2.2_1774696454517_0.8664027905096665","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"pdfium-native","version":"0.2.3","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.2.3","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"cce1555003f67df238279d7dc8f43a64f4e023d2","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.2.3.tgz","fileCount":47,"integrity":"sha512-XSBpWg0517HlLYZOtlFobEpVPiLcS2V0tFHx1OZo7REGZLWBEm1OqcdlGsbYISYRmtv18E9I2y17KQd1k6UCdQ==","signatures":[{"sig":"MEUCIQCJicAe3dFcDf/FbgTQ1f8cApJs+lOE+l1SMwZAopBfmgIgBnjygHnomToviJo7DC8U1InbJUkT5QTzd8UnStQ/K/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":258179},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"4b8f4b4a2f11eb56e647e995c1b38145836c70af","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.2.3_1774708681350_0.9745817556133147","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"pdfium-native","version":"0.2.4","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.2.4","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"f9346e6a4b83b0531f4a77d49a9fc17b8e2558a5","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.2.4.tgz","fileCount":47,"integrity":"sha512-LvFJFdT/Vo49qxpaAdflVGFVAsSjKyDt5hsa7tHFMWqeOc1VucfV2ojTN+1qxuHEoysHYrcZPAG8qfLmrfPudw==","signatures":[{"sig":"MEYCIQCRzss1ZJzD7vvnParRGP+1foQAJQHHmfL6VTOj6oiG5wIhALFjgKdJuMT4aMt6E40IM7CaloCSWQ2z9P5Ut1TKsOrO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":258238},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"0f9215a22130871739aafb3c8ddfa5a14da59a1d","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.2.4_1774891763187_0.8729120114452","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"pdfium-native","version":"0.3.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.3.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"eb985a93f539e47108cea7c969c608caa0e9e552","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.3.0.tgz","fileCount":48,"integrity":"sha512-7P+90tZ5Epn2J6n9F2Xa4ptn0bxurhYkxkfu/TfvKFBizSPWXqFdld3J5jLqKL1/HayJmAFbsnKSy9r4HF0ueg==","signatures":[{"sig":"MEYCIQCFPk5uOvjqzf9MRrfPxpSkmCPR2DBVvPDN8ElIxNXunAIhAN9z4TKGCi7W8eeIdfS33c9YSnKXCCz4+d67M61uGOFF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":271850},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"d7641826bbba45b8ab046c6725d6b9e6cece14d8","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.3.0_1774958629199_0.8728104919000379","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"pdfium-native","version":"0.3.1","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.3.1","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"fad7ab6c5f55d5d18512658ebb57f85e065d5c16","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.3.1.tgz","fileCount":49,"integrity":"sha512-zIKbg3XCb4LsglWQDVvtOJ29xrPhnjfX6g4W2lwaDjQd3N+RvERXFiv/wFisc2ydSy2pz9xtEdwMwm3PYg6l0A==","signatures":[{"sig":"MEYCIQCpALz1cmlpdftVdwXamQ0CvaUJ83i380dC6Z1ylLdFMwIhAJjGnQc+Db1tiFGer96xCJMTHtjU7pzUXrYJIop5x1Jf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":279703},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"c4190045df796b8a538eb47fe30c0c8971f6ca87","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.9.0","description":"Native Node.js bindings for PDFium","directories":{},"_nodeVersion":"24.14.0","dependencies":{"node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.3.1_1774972880167_0.17515351345858354","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"pdfium-native","version":"0.4.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.4.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"eaa3099dec744437ca930b14386bdfa07c66ddb2","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.4.0.tgz","fileCount":54,"integrity":"sha512-JVJZrz0aShXQQuLfRQl91BEZFoSfYO1wCnpIrCkoWF43Em4XMUO3/WWpsvzYdF3HyHEjEcGwFVZd7jN9//eDpQ==","signatures":[{"sig":"MEYCIQDoUBG5HthxQHhieb5JYgwXIwNwF3DwC1gjEBReWvdJIAIhAMtHrI17HpziMoh+R1M5V52jYShyW5Xws0DyLlNz5N2b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286156},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"e22ee07df331a30edb1850dba97f5a8eb4c1e5f6","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.4.0_1775304813319_0.07955071516287782","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"pdfium-native","version":"0.5.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"209d68de62a55dccc6477149e38d476db7d87da6","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.0.tgz","fileCount":55,"integrity":"sha512-iZRcVNY84YY/AkVb/Hp/1pcs9ecSZFe9rxPigPVXAdPSHeG3+zqcZ03U/dFIw0aCcTB5E3ZhdY1rp4zugG4U3A==","signatures":[{"sig":"MEYCIQDlxW806mty3n5fn6CPGpaNom0lDIzWrolZAQDtcMxboAIhAPNRZZKgJHecOUsBxmXncc4aqMCJ/94hUNt/vHXOn4yF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":311060},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"5c662c687761f6de627cbdd70554b0f4c2ab1952","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.0_1775310415443_0.6147650434099099","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"pdfium-native","version":"0.5.1","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.1","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"d45e803d9eaa3af89e86e630e7be5c2b8d5a5e03","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.1.tgz","fileCount":55,"integrity":"sha512-GXfKUphvM3iKyRTlTSyBWi6PG4b8H1WeH1pPQGKB6L3AP5/UVmlVtGWLNT1sssrV+kjYCBLntlQ+xu5k7yr1qw==","signatures":[{"sig":"MEYCIQCIV93i9j11z6YQziY9jA/2t6qAow4qY7VsNrdVbu65aQIhAJNx+cOvp5acTwbGqrfrZRtKzumY+mMaqh7a/qMXBEiI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":312267},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"20b7971bc0bc05b565960cb14e2501d5ca450e49","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.1_1775313668050_0.45427084043912336","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"pdfium-native","version":"0.5.2","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.2","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"6546e264e1f586ae7b8eb84e5072b09daeb3ade0","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.2.tgz","fileCount":55,"integrity":"sha512-PhcEr2WZXdhA/svElCUU0xWOnhA9nhDHg0oJ/4CjH+lqUXSlnbyFWkwtME93M/KYHSzDoDfXjfgQJU4cyoRLOQ==","signatures":[{"sig":"MEUCIHNue6rRpKLoLDWGciFq5bVS9vzejxumVaw5JRlJBKeIAiEAzvsKFYeXNB1qykH2Ww0zXcQ1zCHOYsiDLTxw6idP3WE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315751},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"4d4295fa975fde71a2468516042368004e09e08a","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.2_1775610302995_0.9070377496444026","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"pdfium-native","version":"0.5.3","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.3","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"e67db23d70c059726f48bc6baefff8b4a8a77195","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.3.tgz","fileCount":55,"integrity":"sha512-xvxFORdR1BpSrmyQ2oYo+eKQWU1+64DgrR9zq01uzzOa+/oqe/bbgjF3/upgyRWy7mDCr82fgIfNeDvsf2s12Q==","signatures":[{"sig":"MEYCIQCsS4rOQFry2LfJibVP5ONhtxx53T7XD0W8MsPNSPuqdAIhAOgW6dzMrzM3Br+IQvn7tgyoMo8eTec6Phshs4eMG+vk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318265},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"b5abfaa1a33fa537fb9788ab99441f39c93809dc","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.3_1775642005435_0.705390727432174","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"pdfium-native","version":"0.5.4","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.4","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"d2311f630a56118baa23928e138cd94717a1bb9f","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.4.tgz","fileCount":56,"integrity":"sha512-iCSH8aFufqlGZpao9PUby11zA5Y0CiciKw4RCsrUfQqGTz+0aZizl/6bLIcvNau8+/4caWdYnb2CHbuRjW19tA==","signatures":[{"sig":"MEUCIQDAJDC6aGfW96GyvEUDyAQIsfhMkUUDgdGV86lHivznigIgL8qy+5SpbtqebkqTdazk4QTiRDcj9v2kQuvii45asyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320248},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"8594002e107a86e6c5687968369e8ab776343092","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.4_1775912828117_0.961149937373893","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"pdfium-native","version":"0.5.5","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.5","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"853343ef7b7ea13c5d62648b32df5ddfbee70927","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.5.tgz","fileCount":56,"integrity":"sha512-X7/n2V5sKD/1iWtPLXCJfi0fA+qe7CxMLXdx5RWJF96dZWWbH0FpZEprO8gtCac77w4AEcRo68pYB6dnM8Zi3A==","signatures":[{"sig":"MEUCIDYM48fgXKfKFWLs5TNUNUozWVLhMC8h4QoTTZ+Ni6KcAiEA6o+ipctmLI5ekelk/k/JCOJwnJimwFGXZdEEzlotN5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320481},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"f5a51d196d3d6bb34be9b85df2329df1ac2e0f91","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.11.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.14.1","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^11.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.5_1777160500975_0.5777039633333314","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"pdfium-native","version":"0.5.6","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.5.6","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"8688add36d67fd02886d6e0f8708cf7a8636bee0","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.5.6.tgz","fileCount":56,"integrity":"sha512-ukRiKyAsfDn53EhsG2g6ffdJht8Kw/d12l43QeMK+Ou2XZMNC98SEzPXKXXOpd7SI+Ie3Ql/fkCYOWMn1JOt3g==","signatures":[{"sig":"MEYCIQCMeFs1E8sR+Jigyv/T1o6BamVkCUHzkrESgZ+QitL1MAIhAPlah0kTWheuXfsAbXRqkvgMjW47xAaCistGNi7mWoF6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320636},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"a0954c7f8f373b7cb67cd25c57ed93d10fd3c510","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","lint:check":"eslint .","format:check":"prettier --check .","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.13.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js}":"eslint --max-warnings 0","*.{ts,js,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.17.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.5.6_1782484971053_0.4557245640897496","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"pdfium-native","version":"0.6.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.6.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"22dcb5ed1cdd4f0c8a43f503105ec6b90c9d0cb1","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.6.0.tgz","fileCount":60,"integrity":"sha512-bY2VUX45p0J8ULmr4q0boYqFPyLai7bWKvSgxwfNd9J69GTI53QDbqIWy2+xBCfVWrlt4Zh5mfFFcHCGf5mgxg==","signatures":[{"sig":"MEUCIHiuA9hadNGarWjiGf0fGp8PRNXb9iuleBNSBNCyOxNEAiEA5bBqfHK8GTKP0jR6tQq4Q13vEGkbtvh5CW7yiCnuhhw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":334398},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f599b730372e8f174261c9603cacc8ff24af6018","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.13.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.17.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.5.0","lint-staged":"^16.4.0","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.6.0_1782553485165_0.7721206589857319","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"pdfium-native","version":"0.6.1","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.6.1","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"17ed6ad01cb23777a8c1aa04d630cd579ac92845","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.6.1.tgz","fileCount":63,"integrity":"sha512-ORaGta00LpUw8rbPJSivNPcYPOZBsbALkSpOetuD4KSvt7hcQJQM0mZNJZ9dyO2omN424qcvPhmxkId2AKgeQg==","signatures":[{"sig":"MEUCICADESfKJ86xlzbVcBArw/dlRoaqCNe1GB4tVzZ7luzRAiEAqOdsUmtjgJ7QYEPLtymqbJ5WruBY34KB2G0lCAKD98Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345996},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"32d1abd8912641c53a232d57fbb7d58ed12ca42c","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.16.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.0.0","lint-staged":"^17.0.8","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.6.1_1784073422441_0.6891362161925634","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"pdfium-native","version":"0.7.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.7.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"8c0bf68afb8b48861563828d262342424319ca6a","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.7.0.tgz","fileCount":64,"integrity":"sha512-PksEgZTD68AW+6s8f1ncXT8BWFunT/rS6Ca2+TS1KUkfixCQexd8YCnlHU8Ki/jX8EhxN2yTHyWtlf5GPikKWQ==","signatures":[{"sig":"MEUCIQDBGxuWZEb55l+3HSq5hi4UA8nLieJn//XLpIIy19higwIgEn/sbaq3L2LnPrcrqnOwOVkT8Ta7BTdWcZK5sjAn9uU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":366404},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"672231ed8303632e837953a8cf89381fcb57dcd3","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.16.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.0.0","lint-staged":"^17.0.8","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.7.0_1785935264629_0.11447869565946434","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"pdfium-native","version":"0.8.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.8.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"fdfd4bff79d1b799dbd20b11c018ef8f3a0d47b5","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.8.0.tgz","fileCount":69,"integrity":"sha512-qe23tXMvMgnYYGBklwi8qT8LJ3wdprv84+lg2Snr0Xc2g42ro4+KmUmOz9Yob2vDIaTjqdjwwji9On9qeJ0Paw==","signatures":[{"sig":"MEUCIQCItKZuoe/7/FRCexO7Q+3TGiuyPoSVGliUTGt6OZPDFQIgKY2c+ct7Z3LES89eAz7n4b0ZEsgCnayiHoufisYVkQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":384686},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"18d95a7c9aa9be9ad3de5e72082327cb6074f809","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.16.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.0.0","lint-staged":"^17.0.8","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.8.0_1786006458383_0.8420146963351949","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"pdfium-native","version":"0.9.0","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.9.0","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"0efbe0330ab57bb3dab399b4103b064240c9267a","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.9.0.tgz","fileCount":78,"integrity":"sha512-P/DPVeY/4gDy+9Uxm4wS0YGTajj/U++pVoo3vghPnh/EzEjiGo589qwveUyROh+jnMfkN/4dtu5EPzJQHZPBpQ==","signatures":[{"sig":"MEQCIDGV/DP06Mk2DUrKen0KiYs9+wdTvf7n7eBwVybXOBpfAiBqBo3zRpG7TyGSz8HYLOFc+AKk6kjM1E7L71fDbdw0QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":532131},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b951214e5af0cabd0f8449618226e1ec64fd85c9","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.16.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.0.0","lint-staged":"^17.0.8","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.9.0_1786117657996_0.5737825617944174","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"pdfium-native","version":"0.9.1","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"license":"MIT","_id":"pdfium-native@0.9.1","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"os":["darwin","linux","win32"],"cpu":["x64","arm64","arm","ppc64"],"dist":{"shasum":"07dec632eab911aff443c919f6ff75624fd4c35d","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.9.1.tgz","fileCount":78,"integrity":"sha512-N1yQAKoGysBsRLIEehVo0sjUwXollIF8m8H8NRrk/6nFh3efWr/1Ee7poMAmSkrZX0j58uxShyTZzyAwOplKew==","signatures":[{"sig":"MEUCIGL7IafOOR13mknU26pj2PHPPy6dPErh2Z/zBZLQuhpFAiEAycasofZEjICbf5iD2z9mZgWtz1KAysgsvzqiQ2ki3Xo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":545623},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"ff2a61a4eadbca9e881d19d5125627345bd1227b","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.16.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.0.0","lint-staged":"^17.0.8","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/pdfium-native_0.9.1_1786122009408_0.2674701521953977","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"os":["darwin","linux","win32"],"_id":"pdfium-native@0.10.0","cpu":["x64","arm64","arm","ppc64"],"bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"dist":{"shasum":"409811fa5bcb8e2c14d90a95036af9a21d1ddcdf","tarball":"https://registry.npmjs.org/pdfium-native/-/pdfium-native-0.10.0.tgz","fileCount":78,"integrity":"sha512-4DBNdQGSc5ysgcuKBjy5a2Pt3G1K1OuO1yMNBpJ+ksgsPx6N39QflKOyKr2Q4EGECIBLLvzpkZLrtERsQqX45g==","signatures":[{"sig":"MEYCIQCo8P6BCRelbAuNY7H/CUspiY9VSBaKsiksW3Au9Vv/DwIhAILGYzVv5Z7xkFHrMLcYh6zgSeMgW/Yua2w1JgRKiVuv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHGXw3XTU2EZFk51fwZW7eqWXP5uLkfdfLqnFUbaVzAmAiBkXNRQI7BiWLoGCMkZIv1qDi0TKX36nuUtwo+dsxYd2g=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pdfium-native@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":549418},"main":"dist/index.js","name":"pdfium-native","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f7f015dda91baa69942afbe0536ec903a9989da2","license":"MIT","scripts":{"lint":"eslint --fix .","test":"vitest run","build":"node-gyp rebuild && node scripts/bundle-lib.mjs","format":"prettier --write .","install":"node scripts/install.mjs","prepare":"husky && tsc","build:ts":"tsc","download":"node scripts/download-pdfium.mjs","typecheck":"tsc --noEmit","lint:check":"eslint .","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"tsc","verify:checksums":"node scripts/verify-checksums.mjs"},"version":"0.10.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dc7a3771-cc95-46c2-a8a5-b84ce0dba884"}},"homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"_npmVersion":"11.19.0","description":"Native Node.js bindings for PDFium","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs}":"eslint --max-warnings 0","*.{ts,js,mjs,cjs,json,md,yaml,yml}":"prettier --write"},"maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"_nodeVersion":"24.20.0","dependencies":{"p-limit":"^7.3.0","node-addon-api":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.17.0","devDependencies":{"husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.0.0","node-gyp":"^13.0.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.0.0","lint-staged":"^17.0.8","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdfium-native_0.10.0_1790111715941_0.9660122661821857"}}},"time":{"created":"2026-03-28T08:01:16.866Z","modified":"2026-09-22T21:15:16.331Z","0.1.1":"2026-03-28T08:01:17.124Z","0.1.3":"2026-03-28T08:18:51.231Z","0.1.4":"2026-03-28T08:24:02.600Z","0.1.7":"2026-03-28T09:02:33.566Z","0.2.0":"2026-03-28T09:59:50.870Z","0.2.2":"2026-03-28T11:14:14.674Z","0.2.3":"2026-03-28T14:38:01.509Z","0.2.4":"2026-03-30T17:29:23.348Z","0.3.0":"2026-03-31T12:03:49.347Z","0.3.1":"2026-03-31T16:01:20.378Z","0.4.0":"2026-04-04T12:13:33.456Z","0.5.0":"2026-04-04T13:46:55.583Z","0.5.1":"2026-04-04T14:41:08.188Z","0.5.2":"2026-04-08T01:05:03.125Z","0.5.3":"2026-04-08T09:53:25.583Z","0.5.4":"2026-04-11T13:07:08.283Z","0.5.5":"2026-04-25T23:41:41.129Z","0.5.6":"2026-06-26T14:42:51.255Z","0.6.0":"2026-06-27T09:44:45.311Z","0.6.1":"2026-07-14T23:57:02.595Z","0.7.0":"2026-08-05T13:07:44.783Z","0.8.0":"2026-08-06T08:54:18.546Z","0.9.0":"2026-08-07T15:47:38.159Z","0.9.1":"2026-08-07T17:00:09.563Z","0.10.0":"2026-09-22T21:15:16.042Z"},"bugs":{"url":"https://github.com/xonaman/nodejs-pdfium-native/issues"},"license":"MIT","homepage":"https://github.com/xonaman/nodejs-pdfium-native#readme","keywords":["pdf","pdfium","native","render","text-extraction","node-addon","napi","pdf-parser","pdf-reader","pdf-to-text","pdf-to-image","pdf-render","extract-text","search","annotations","bookmarks","chromium"],"repository":{"url":"git+https://github.com/xonaman/nodejs-pdfium-native.git","type":"git"},"description":"Native Node.js bindings for PDFium","maintainers":[{"name":"xonaman","email":"xonaman@icloud.com"}],"readme":"# pdfium-native\n\n[![CI](https://github.com/xonaman/nodejs-pdfium-native/actions/workflows/ci.yml/badge.svg)](https://github.com/xonaman/nodejs-pdfium-native/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/pdfium-native)](https://www.npmjs.com/package/pdfium-native)\n[![Node.js](https://img.shields.io/node/v/pdfium-native)](https://nodejs.org)\n[![License](https://img.shields.io/npm/l/pdfium-native)](https://github.com/xonaman/nodejs-pdfium-native/blob/main/LICENSE)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue)](#-supported-platforms)\n\nFast, native PDF rendering and text extraction for Node.js — powered by [PDFium](https://pdfium.googlesource.com/pdfium/), the same engine used in Chromium. Built as a C++ addon with N-API for ABI stability across Node.js versions.\n\n> Designed for server-side workloads. Non-blocking, fast, and production-ready.\n\n## 🚀 Quick Start\n\n```typescript\nimport { loadDocument } from 'pdfium-native';\n\nconst doc = await loadDocument('invoice.pdf');\nconst page = await doc.getPage(0);\n\nconst text = await page.getText();\nconst image = await page.render({ scale: 3, format: 'png' }); // high-resolution render\n\npage.close();\ndoc.destroy();\n```\n\n## 💡 Why pdfium-native?\n\n**⚡ Performance**\n\n- Native C++ — no WASM overhead, no JS parsing\n- Non-blocking — all operations run off the main thread via libuv workers\n\n**🛠️ Developer experience**\n\n- Built-in JPEG/PNG rendering — no extra dependencies like sharp\n- Prebuilt binaries for 10 platform/arch combinations — no compile step\n- Full TypeScript support with types included\n\n**🔒 Reliability**\n\n- Built on PDFium — the PDF engine used in Chromium\n- ABI-stable via N-API — works across Node.js 22–24 without recompilation\n- Password-protected PDFs supported out of the box\n\n### 🎯 Use cases\n\n- 🖼️ Generate thumbnails and previews for uploaded PDFs\n- 📄 Extract searchable text from documents at scale\n- ⚙️ Build server-side PDF processing pipelines\n- ✂️ Split, merge, reorder, or impose PDFs — including n-up handout layouts\n- 🔗 Read annotations, bookmarks, links, and form fields from existing PDFs\n- 📐 Map extracted text back to page coordinates for redaction or layout analysis\n- ✍️ Inspect digital signatures and document-level JavaScript before trusting a file\n- ♿ Audit tagged-PDF structure and alternate text for accessibility\n- 🗄️ Flatten filled forms for archiving\n\n### 📊 How it compares\n\n|                 | **pdfium-native**    | @hyzyla/pdfium      | pdfjs-dist        |\n| --------------- | -------------------- | ------------------- | ----------------- |\n| Engine          | PDFium (C++ addon)   | PDFium (WASM)       | pdf.js (JS)       |\n| Rendering       | ✅ JPEG/PNG built-in | ⚠️ Raw bitmap (BYO) | ⚠️ Canvas/browser |\n| Text extraction | ✅ Plain + per-char  | ❌                  | ✅                |\n| Search          | ✅ With rects        | ❌                  | ⚠️ Manual         |\n| Split / Merge   | ✅ + reorder / n-up  | ❌                  | ❌                |\n| Signatures      | ✅ Metadata + blob   | ❌                  | ⚠️ Partial        |\n| Struct tree     | ✅                   | ❌                  | ✅                |\n| Flatten         | ✅                   | ❌                  | ❌                |\n| Annotations     | ✅                   | ❌                  | ⚠️ Partial        |\n| Bookmarks       | ✅                   | ❌                  | ✅                |\n| Links           | ✅                   | ❌                  | ✅                |\n| Form fields     | ✅                   | ❌                  | ✅                |\n| Attachments     | ✅ Files + annots    | ❌                  | ✅                |\n| Async I/O       | ✅ libuv workers     | ❌ Sync             | ❌ Main thread    |\n| Platforms       | macOS/Linux/Windows  | Any (WASM)          | Any               |\n\n¹ Prebuilt binaries downloaded at install — no runtime dependencies. Falls back to source compilation if unavailable.\n\n## Table of Contents\n\n- [Install](#-install)\n- [Supported Platforms](#-supported-platforms)\n- [API](#-api)\n  - [loadDocument](#loaddocumentinput-password)\n  - [splitDocument](#splitdocumentinput-splitat-options)\n  - [mergeDocuments](#mergedocumentsinputs-options)\n  - [assemblePages](#assemblepagesinput-pages-options)\n  - [nUpPages](#nuppagesinput-options)\n  - [addAttachments](#addattachmentsinput-attachments-options)\n  - [flattenDocument](#flattendocumentinput-options)\n  - [PDFiumDocument](#pdfiumdocument)\n  - [PDFiumPage](#pdfiumpage)\n  - [DocumentMetadata](#documentmetadata)\n- [Not supported](#-not-supported)\n- [Concurrency](#️-concurrency)\n- [Memory Management](#-memory-management)\n- [License](#-license)\n\n## 📦 Install\n\n```bash\nnpm install pdfium-native\n```\n\nPrebuilt binaries are available for all [supported platforms](#-supported-platforms) — most installs require no compiler. If no prebuilt is available, the package falls back to compiling from source (requires a C++ toolchain: Xcode CLI tools on macOS, `build-essential` on Linux, Visual Studio on Windows).\n\n## 🌍 Supported Platforms\n\n| OS                    | Architectures          |\n| --------------------- | ---------------------- |\n| macOS                 | arm64, x64             |\n| Linux (glibc)         | x64, arm64, arm, ppc64 |\n| Linux (musl / Alpine) | x64, arm64             |\n| Windows               | x64, arm64             |\n\n## 📚 API\n\n### `loadDocument(input, password?)`\n\nOpens a PDF from a `Buffer` or file path string. Returns `Promise<PDFiumDocument>`.\n\n```typescript\nconst doc = await loadDocument(buffer);\nconst doc = await loadDocument('/path/to/file.pdf');\nconst doc = await loadDocument(buffer, 'secret');\n```\n\n---\n\n### `splitDocument(input, splitAt, options?)`\n\nSplits a PDF into multiple documents at the given page indices. Each index in `splitAt` marks the first page of a new chunk. Returns `Promise<Buffer[]>`, or `Promise<void>` if `outputs` is set.\n\nA 10-page PDF with `splitAt: [3, 7]` produces three documents: pages 0–2, 3–6, and 7–9.\n\n```typescript\nimport { splitDocument } from 'pdfium-native';\n\n// split a two-page PDF into two single-page documents\nconst [part1, part2] = await splitDocument('report.pdf', [1]);\n\n// split into three parts (no split points = single document containing all pages)\nconst [a, b, c] = await splitDocument(buffer, [3, 7]);\n\n// write parts to files\nawait splitDocument('report.pdf', [5], {\n  outputs: ['first-half.pdf', 'second-half.pdf'],\n});\n\n// password-protected source\nconst parts = await splitDocument('encrypted.pdf', [3], { password: 'secret' });\n```\n\n| Option     | Type       | Default | Description                                                                                               |\n| ---------- | ---------- | ------- | --------------------------------------------------------------------------------------------------------- |\n| `outputs`  | `string[]` | —       | Write each part to these file paths instead of returning Buffers. Must have `splitAt.length + 1` entries. |\n| `password` | `string`   | —       | Password for the source PDF.                                                                              |\n\n---\n\n### `mergeDocuments(inputs, options?)`\n\nCombines multiple PDFs into a single document. Returns `Promise<Buffer>`, or `Promise<void>` if `output` is set.\n\nEach element of `inputs` can be a `Buffer`, a file path string, or an object `{ input, password? }` for password-protected PDFs.\n\n```typescript\nimport { mergeDocuments } from 'pdfium-native';\n\n// merge two files\nconst buf = await mergeDocuments(['part1.pdf', 'part2.pdf']);\n\n// mix buffers, paths, and password-protected PDFs\nconst buf = await mergeDocuments([\n  buffer1,\n  'part2.pdf',\n  { input: 'encrypted.pdf', password: 'secret' },\n]);\n\n// write directly to a file\nawait mergeDocuments(['a.pdf', 'b.pdf'], { output: 'merged.pdf' });\n```\n\n| Option   | Type     | Default | Description                                            |\n| -------- | -------- | ------- | ------------------------------------------------------ |\n| `output` | `string` | —       | Write to this file path instead of returning a Buffer. |\n\n---\n\n### `assemblePages(input, pages, options?)`\n\nBuilds a new PDF from selected pages of `input`, in the order given. Returns `Promise<Buffer>`, or `Promise<void>` when `options.output` is set.\n\nWhere [`splitDocument`](#splitdocumentinput-splitat-options) only cuts a document into consecutive runs, the index list here is taken literally: pages may be reordered, left out, or repeated.\n\n```typescript\nimport { assemblePages } from 'pdfium-native';\n\n// reverse a four-page document\nconst reversed = await assemblePages('doc.pdf', [3, 2, 1, 0]);\n\n// pull out one page\nawait assemblePages('doc.pdf', [2], { output: 'page3.pdf' });\n\n// repeat a page — e.g. a cover sheet before each section\nconst buf = await assemblePages('doc.pdf', [0, 1, 0, 2]);\n```\n\n| Option     | Type     | Default | Description                                            |\n| ---------- | -------- | ------- | ------------------------------------------------------ |\n| `output`   | `string` | —       | Write to this file path instead of returning a Buffer. |\n| `password` | `string` | —       | Password for the source PDF, if encrypted.             |\n\nRejects if any index is outside `0 … pageCount - 1`, naming the offending index.\n\n---\n\n### `nUpPages(input, options)`\n\nImposes `columns × rows` source pages onto each page of a new document — the classic \"n-up\" layout for handouts and proof sheets. Returns `Promise<Buffer>`, or `Promise<void>` when `options.output` is set.\n\n```typescript\nimport { nUpPages } from 'pdfium-native';\n\n// four source pages per sheet, sheet size taken from the first source page\nconst handout = await nUpPages('slides.pdf', { columns: 2, rows: 2 });\n\n// two-up on landscape A4\nawait nUpPages('doc.pdf', {\n  columns: 2,\n  rows: 1,\n  width: 842,\n  height: 595,\n  output: 'twoup.pdf',\n});\n```\n\n| Option     | Type     | Default           | Description                                            |\n| ---------- | -------- | ----------------- | ------------------------------------------------------ |\n| `columns`  | `number` | — (required)      | Source pages placed side by side across each sheet.    |\n| `rows`     | `number` | — (required)      | Source pages stacked down each sheet.                  |\n| `width`    | `number` | first source page | Output sheet width in points.                          |\n| `height`   | `number` | first source page | Output sheet height in points.                         |\n| `output`   | `string` | —                 | Write to this file path instead of returning a Buffer. |\n| `password` | `string` | —                 | Password for the source PDF, if encrypted.             |\n\nThe sheet defaults to the size of the first source page, so a 2×2 n-up of A4 pages lands on A4 with each source page scaled to a quarter. Partial sheets are allowed: 4 pages at 3 per sheet produce 2 sheets.\n\n---\n\n### `addAttachments(input, attachments, options?)`\n\nEmbeds files into a copy of `input`. Returns `Promise<Buffer>`, or `Promise<void>` when `options.output` is set.\n\n> **This does not produce a conformant PDF/A-3 e-invoice.** PDFium's write API reaches only the file name, the bytes and the `/Params` dates. It cannot set the MIME type (`/Subtype`), the description (`/Desc`), the `/AFRelationship` that marks an attachment as the invoice source, the catalog `/AF` array, an OutputIntent, or the XMP metadata — all of which ZUGFeRD, Factur-X and XRechnung require. Use a PDF/A toolchain to _produce_ e-invoices. _Reading_ them is fully supported by [`getAttachments()`](#getattachments).\n\n```typescript\nimport { addAttachments } from 'pdfium-native';\n\nconst pdf = await addAttachments('report.pdf', [\n  { name: 'data.csv', data: csvBuffer },\n  { name: 'notes.txt', data: Buffer.from('...'), creationDate: 'D:20250101120000Z' },\n]);\n```\n\n```typescript\ninterface AttachmentInput {\n  name: string; // must be non-empty and not already in the document\n  data: Buffer;\n  creationDate?: string; // PDF date string; defaults to now\n  modDate?: string;\n}\n```\n\n| Option     | Type     | Default | Description                                            |\n| ---------- | -------- | ------- | ------------------------------------------------------ |\n| `output`   | `string` | —       | Write to this file path instead of returning a Buffer. |\n| `password` | `string` | —       | Password for the source PDF, if encrypted.             |\n\nRejects on an empty or duplicate file name.\n\n---\n\n### `flattenDocument(input, options?)`\n\nMerges annotations and form widgets into the page content and removes them. Returns `Promise<Buffer>`, or `Promise<void>` when `options.output` is set.\n\nThe result renders identically in every viewer but is no longer interactive — which is the point when archiving, or handing a filled form to a system that ignores annotations.\n\n```typescript\nimport { flattenDocument } from 'pdfium-native';\n\nconst archived = await flattenDocument('filled-form.pdf');\n\n// print appearances, first page only\nawait flattenDocument('doc.pdf', { usage: 'print', pages: [0], output: 'out.pdf' });\n```\n\n| Option     | Type       | Default     | Description                                             |\n| ---------- | ---------- | ----------- | ------------------------------------------------------- |\n| `usage`    | `string`   | `'display'` | `'display'` or `'print'` — which appearance to bake in. |\n| `pages`    | `number[]` | all pages   | Only flatten these page indices.                        |\n| `output`   | `string`   | —           | Write to this file path instead of returning a Buffer.  |\n| `password` | `string`   | —           | Password for the source PDF, if encrypted.              |\n\nThis bakes in the appearance streams the document already carries rather than regenerating them. That is correct for any PDF whose widgets have valid `/AP` entries — what every mainstream producer writes. A form flagged `/NeedAppearances`, which asks the viewer to regenerate appearances itself, is the case this cannot help with. Interactive form _filling_ is not supported; see [Not supported](#-not-supported).\n\n---\n\n### PDFiumDocument\n\n| Property    | Type               | Description                             |\n| ----------- | ------------------ | --------------------------------------- |\n| `pageCount` | `number`           | Total number of pages.                  |\n| `metadata`  | `DocumentMetadata` | Title, author, dates, PDF version, etc. |\n\n#### `getPage(index)`\n\nLoads a page by 0-based index. Returns `Promise<PDFiumPage>`.\n\n#### `pages()`\n\nAsync generator that yields every page. Caller must close each page.\n\n```typescript\nfor await (const page of doc.pages()) {\n  console.log(await page.getText());\n  page.close();\n}\n```\n\n#### `getBookmarks()`\n\nReturns the bookmark/outline tree. Returns `Promise<Bookmark[]>`.\n\n```typescript\ninterface Bookmark {\n  title: string;\n  pageIndex?: number;\n  open: boolean; // whether the node is initially expanded\n  actionType?: 'goto' | 'remoteGoto' | 'uri' | 'launch' | 'embeddedGoto';\n  url?: string; // external URL for URI bookmarks\n  destX?: number; // destination X coordinate\n  destY?: number; // destination Y coordinate\n  destZoom?: number; // destination zoom level\n  children?: Bookmark[];\n}\n```\n\n#### `getAttachments()`\n\nLists every embedded file (attachment) in the document's `/EmbeddedFiles` name tree. Returns `Promise<Attachment[]>`. This reads only dictionary metadata — it does **not** decode the file streams; use [`getAttachment(index)`](#getattachmentindex-options) to read the bytes.\n\n```typescript\ninterface Attachment {\n  index: number; // 0-based index in the embedded-files name tree\n  name: string; // file name, e.g. 'factur-x.xml'\n  mimeType: string; // /Subtype, e.g. 'text/xml' ('' if the PDF omits it)\n  afRelationship?: string; // /AFRelationship, e.g. 'Alternative' (absent if the PDF omits it)\n  creationDate?: string; // PDF date string, e.g. 'D:20250101120000Z'\n  modDate?: string; // PDF date string\n}\n```\n\n`afRelationship` is the associated-file relationship defined by PDF 2.0 (ISO 32000-2:2020, Table 43) and used by PDF/A-3: it states an embedded file's _role_ rather than its type. A ZUGFeRD / Factur-X e-invoice marks the machine-readable invoice XML `Alternative` (it is an alternative representation of the visible page), while a human-readable companion is `Supplement`; `Source`, `Data` and `Unspecified` are the other standard values. Without it, an e-invoice reader has to guess which attachment is the invoice from its file name. The key is absent when the PDF omits the entry, and `addAttachments()` cannot set it (see [Writing attachments](#addattachmentsinput-attachments-options)), so attachments written by this library report no value.\n\n#### `getAttachment(index, options?)`\n\nReads the raw bytes of the attachment at `index`. Returns `Promise<Buffer>`, or `Promise<void>` when `options.output` is a file path (the bytes are written there instead).\n\n```typescript\n// Extract the embedded XML from a ZUGFeRD / Factur-X / XRechnung PDF/A-3 e-invoice.\n// The PDF stays the display artifact; the XML is the structured source of truth.\nconst E_INVOICE_NAMES = ['factur-x.xml', 'zugferd-invoice.xml', 'xrechnung.xml'];\n\nconst doc = await loadDocument('invoice.pdf');\nconst attachments = await doc.getAttachments();\nconst entry = attachments.find((a) => E_INVOICE_NAMES.includes(a.name.toLowerCase()));\n\nif (entry) {\n  const xml = await doc.getAttachment(entry.index); // Buffer of the exact embedded bytes\n  console.log(xml.toString('utf8'));\n}\n\n// or write straight to disk:\nawait doc.getAttachment(0, { output: 'attachment.xml' });\n\ndoc.destroy();\n```\n\nRejects if `index` is out of range (`0 … attachmentCount - 1`). `metadata.attachmentCount` gives the count without loading anything.\n\n#### `getSignatures()`\n\nLists every digital signature in the document. Returns `Promise<Signature[]>`.\n\nNothing here is cryptographically verified — PDFium does not do that. These values are what the signature dictionary _declares_, so a well-formed entry proves only that the document claims to be signed.\n\n```typescript\ninterface Signature {\n  index: number; // 0-based index in the AcroForm field list\n  subFilter: string; // encoding, e.g. 'adbe.pkcs7.detached', 'ETSI.CAdES.detached'\n  reason?: string; // /Reason, if given\n  time?: string; // /M as a PDF date string, e.g. \"D:20250101120000+01'00'\"\n  docMdpPermission?: 1 | 2 | 3; // certification level; absent for ordinary signatures\n  byteRange: number[]; // flat (offset, length) pairs covered by the digest\n  contentsLength: number; // size of /Contents in bytes\n}\n```\n\n```typescript\nconst doc = await loadDocument('contract.pdf');\n\nfor (const sig of await doc.getSignatures()) {\n  // A signature covers the whole file only if its last range ends at the file\n  // size. Anything less means content was appended after signing.\n  const end = sig.byteRange.at(-2)! + sig.byteRange.at(-1)!;\n  console.log(sig.subFilter, sig.reason, 'covers', end, 'bytes');\n}\n```\n\n`metadata.signatureCount` gives the count without listing anything.\n\n#### `getSignatureContents(index, options?)`\n\nReads the raw `/Contents` bytes of the signature at `index` — a DER-encoded PKCS#1 or PKCS#7 binary. Returns `Promise<Buffer>`, or `Promise<void>` when `options.output` is a file path.\n\nPass this, together with the `byteRange` from `getSignatures()`, to a crypto library to actually validate the signature.\n\n#### `getJavaScriptActions()`\n\nLists the document-level scripts a viewer runs when the document opens. Returns `Promise<JavaScriptAction[]>`.\n\nNothing is executed — the bundled PDFium is built with V8 disabled, so scripts come back as inert text. This is for inspection and triage.\n\n```typescript\ninterface JavaScriptAction {\n  index: number;\n  name: string; // entry name in the /Names /JavaScript tree\n  script: string; // the script source, as text\n}\n```\n\n```typescript\nconst doc = await loadDocument('untrusted.pdf');\nconst scripts = await doc.getJavaScriptActions();\nif (scripts.length > 0) {\n  console.warn(`${scripts.length} document-open script(s) — review before rendering`);\n}\n```\n\n#### `getNamedDestinations()`\n\nLists the document's named destinations — the anchors that GoTo actions and external links target by name rather than by page number. Returns `Promise<NamedDestination[]>`.\n\nBoth storage forms are read: the modern `/Names /Dests` name tree and the legacy `/Dests` catalog dictionary.\n\n```typescript\ninterface NamedDestination {\n  name: string; // e.g. 'Chapter2'\n  pageIndex?: number; // resolved target page\n  view: 'xyz' | 'fit' | 'fitH' | 'fitV' | 'fitR' | 'fitB' | 'fitBH' | 'fitBV' | 'unknown';\n  viewParams: number[]; // up to 4 numbers; meaning depends on `view`\n  destX?: number; // 'xyz' destinations only\n  destY?: number;\n  destZoom?: number;\n}\n```\n\n```typescript\n// Resolve \"document.pdf#Chapter2\" to a page index without walking every link.\nconst doc = await loadDocument('document.pdf');\nconst target = (await doc.getNamedDestinations()).find((d) => d.name === 'Chapter2');\nconsole.log(target?.pageIndex);\n```\n\n#### `destroy()`\n\nCloses the document and frees all native resources. Must be called when done.\n\n---\n\n### PDFiumPage\n\n| Property          | Type                | Description                                         |\n| ----------------- | ------------------- | --------------------------------------------------- |\n| `width`           | `number`            | Page width in points (1 pt = 1/72 inch).            |\n| `height`          | `number`            | Page height in points.                              |\n| `number`          | `number`            | 0-based page index.                                 |\n| `objectCount`     | `number`            | Number of page objects (text, images, paths, etc.). |\n| `rotation`        | `number`            | Page rotation: 0, 1 (90° CW), 2 (180°), 3 (270°).   |\n| `hasTransparency` | `boolean`           | Whether the page has transparency.                  |\n| `label`           | `string?`           | Page label (e.g. 'i', 'ii', '1').                   |\n| `cropBox`         | `PageObjectBounds?` | Crop box (visible region), if set.                  |\n| `trimBox`         | `PageObjectBounds?` | Trim box (intended finished size), if set.          |\n\n#### `getText()`\n\nExtracts all text from the page. Returns `Promise<string>`.\n\n#### `getCharacters(options?)`\n\nExtracts every character with the geometry `getText()` throws away — bounding box, baseline origin, font and rotation. Returns `Promise<TextCharacter[]>`.\n\nCharacter indices line up with `getText()` and with [`search()`](#searchtext-options) results, so a match maps straight back to page coordinates.\n\n```typescript\ninterface TextCharacter {\n  index: number; // 0-based, matches the offset in getText()\n  char: string; // '' when the glyph has no Unicode mapping\n  unicode: number;\n  bounds?: PageObjectBounds; // tight box around the glyph's ink\n  x?: number; // baseline origin\n  y?: number;\n  fontSize: number;\n  fontName: string; // e.g. 'Helvetica-Bold'\n  fontFlags: number;\n  fontWeight?: number;\n  angle: number; // radians, [0, 2π) — see the note below\n  isGenerated: boolean;\n  isHyphen: boolean;\n  hasUnicodeMapError: boolean;\n}\n```\n\n```typescript\nconst page = await doc.getPage(0);\n\n// Where on the page is the total?\nconst chars = await page.getCharacters();\nconst [match] = await page.search('Total');\nconst box = chars[match.charIndex].bounds;\n\n// Dense pages can hold tens of thousands of characters — page through instead\n// of materialising all of them at once.\nconst firstThousand = await page.getCharacters({ start: 0, count: 1000 });\n```\n\nTwo PDFium behaviours worth knowing:\n\n- **`isGenerated`** marks characters PDFium synthesized rather than read from the content stream — line breaks between text runs, and spaces inferred from glyph spacing. They carry no real font, so `fontName` is `''`, `fontSize` is `1` and `fontWeight` is absent.\n- **`angle` runs clockwise.** PDFium derives it as `atan2(c, a)` from the text matrix, so text rotated 45° _counterclockwise_ on the page reports ≈ `5.4978` (2π − π/4), not ≈ `0.7854`.\n\n#### `getStructTree()`\n\nReturns the tagged-PDF structure tree for this page — the logical outline (headings, paragraphs, tables, figures) that screen readers follow, and where alternate text lives. Returns `Promise<StructElement[]>`.\n\nThe tree is per-page: these are the elements whose content is on this page, not the whole document's tree. Returns an empty array for an untagged page; `metadata.isTagged` says up front whether there is anything to find.\n\n```typescript\ninterface StructElement {\n  type: string; // /S, e.g. 'H1', 'P', 'Table', 'Figure'\n  objType?: string; // /Type, normally 'StructElem'\n  title?: string; // /T\n  altText?: string; // /Alt — the accessibility description\n  actualText?: string; // /ActualText\n  id?: string; // /ID\n  lang?: string; // /Lang override for this subtree\n  markedContentId?: number;\n  children?: StructElement[];\n}\n```\n\n```typescript\n// Accessibility check: which figures are missing alternate text?\nconst walk = (nodes: StructElement[]): StructElement[] =>\n  nodes.flatMap((n) => [n, ...walk(n.children ?? [])]);\n\nconst missing = walk(await page.getStructTree()).filter((n) => n.type === 'Figure' && !n.altText);\n```\n\n#### `render(options?)`\n\nRenders the page to an encoded image. Returns `Promise<Buffer>`, or `Promise<void>` when `output` is specified.\n\n```typescript\ninterface PageRenderOptions {\n  scale?: number; // default: 1 (72 DPI). Use 3–4 for print quality.\n  width?: number; // override render width in pixels\n  height?: number; // override render height in pixels\n  format?: 'jpeg' | 'png'; // default: 'png'\n  quality?: number; // JPEG quality 1–100 (default: 100)\n  output?: string; // write to file instead of returning a Buffer\n  rotation?: 0 | 1 | 2 | 3; // 0=none, 1=90° CW, 2=180°, 3=270° CW\n  transparent?: boolean; // transparent background (PNG only, default: false)\n  renderAnnotations?: boolean; // render annotations (default: true)\n  grayscale?: boolean; // render in grayscale\n  lcdText?: boolean; // LCD-optimized sub-pixel text rendering\n}\n```\n\n#### `getObject(index)`\n\nReturns the page object at the given index. Returns `Promise<PageObject>`. Objects are discriminated by `type`:\n\n```typescript\ntype PageObject = TextPageObject | ImagePageObject | OtherPageObject;\n\n// all objects have:\n//   bounds: { left, bottom, right, top }\n//   fillColor: { r, g, b, a } | null\n//   strokeColor: { r, g, b, a } | null\n\n// type: 'text' adds: text, fontSize, fontName, fontWeight?, italicAngle?,\n//   renderMode?, fontFamily?, isEmbedded?, fontFlags?\n// type: 'image' adds: imageWidth, imageHeight, horizontalDpi?, verticalDpi?,\n//   bitsPerPixel?, colorspace?, filters?, render()\n// type: 'path' | 'shading' | 'form' | 'unknown'\n```\n\n**Image objects** have a `render()` method for extracting the embedded image:\n\n```typescript\nconst obj = await page.getObject(0);\nif (obj.type === 'image') {\n  const png = await obj.render(); // PNG buffer (default)\n  const jpeg = await obj.render({ format: 'jpeg', quality: 80 });\n  const raw = await obj.render({ format: 'raw' }); // original encoded stream\n  await obj.render({ output: '/tmp/image.png' }); // write to file\n  await obj.render({ rendered: true }); // apply image mask and transformation matrix\n}\n```\n\n```typescript\ninterface ImageRenderOptions {\n  format?: 'jpeg' | 'png' | 'raw'; // default: 'png'. 'raw' returns original stream bytes\n  quality?: number; // JPEG quality 1–100 (default: 100)\n  output?: string; // write to file instead of returning a Buffer\n  rendered?: boolean; // apply image mask and transformation matrix (default: false)\n}\n```\n\n#### `objects()`\n\nAsync generator that yields every page object. Convenience wrapper around `getObject()`.\n\n```typescript\nfor await (const obj of page.objects()) {\n  if (obj.type === 'image') {\n    await obj.render({ output: `image-${obj.imageWidth}x${obj.imageHeight}.png` });\n  }\n}\n```\n\n#### `getLinks()`\n\nReturns all links on the page. Returns `Promise<Link[]>`.\n\n```typescript\ninterface Link {\n  bounds?: { left; bottom; right; top };\n  url?: string; // external URL\n  pageIndex?: number; // internal link target\n  actionType?: 'goto' | 'remoteGoto' | 'uri' | 'launch' | 'embeddedGoto' | 'unknown';\n  destX?: number; // destination X coordinate\n  destY?: number; // destination Y coordinate\n  destZoom?: number; // destination zoom level\n  filePath?: string; // file path for remote goto / launch actions\n}\n```\n\n#### `search(text, options?)`\n\nSearches for text on the page. Returns `Promise<SearchMatch[]>` with character positions and bounding rectangles.\n\n```typescript\nconst matches = await page.search('invoice', {\n  caseSensitive: true,\n  wholeWord: false,\n  consecutive: false,\n});\n// [{ charIndex: 42, length: 7, matchedText: 'invoice', rects: [{ left, top, right, bottom }] }]\n```\n\n#### `getAnnotations()`\n\nReturns all annotations on the page. Returns `Promise<Annotation[]>`.\n\n```typescript\ninterface Annotation {\n  index: number; // 0-based annotation index on the page\n  type: 'text' | 'link' | 'highlight' | 'underline' | 'strikeout' | /* ... */ 'unknown';\n  fileName?: string; // embedded file name (fileattachment annotations only)\n  bounds?: { left; bottom; right; top };\n  contents: string;\n  color: { r; g; b; a } | null;\n  interiorColor?: { r; g; b; a }; // fill color for markup annotations\n  author: string; // annotation author\n  subject: string; // annotation subject\n  creationDate: string; // PDF date string (e.g. \"D:20250101120000Z\")\n  modDate: string; // modification date\n  flags: number; // annotation flags bitmask (PDF spec Table 165)\n  border?: { horizontalRadius; verticalRadius; width };\n  quadPoints?: Array<{ x1; y1; x2; y2; x3; y3; x4; y4 }>;\n}\n```\n\n#### `getAnnotationAttachment(index, options?)`\n\nReads the embedded file of the `'fileattachment'` (paperclip) annotation at `index` — the annotation's `index` from [`getAnnotations()`](#getannotations). Returns a `Promise<Buffer>`, or writes to a file and returns `Promise<void>` when `output` is given.\n\nThis is the **page-level** counterpart to the document-level [`getAttachment(index)`](#getattachmentindex-options): file-attachment annotations live on a page, not in the `/EmbeddedFiles` name tree, so ZUGFeRD / Factur-X e-invoice XML (a document-level embedded file) is read with `document.getAttachment`, not this method.\n\nRejects if the annotation at `index` is not a file attachment or carries no embedded file.\n\n```typescript\nconst annotations = await page.getAnnotations();\nfor (const annot of annotations) {\n  if (annot.type === 'fileattachment') {\n    const bytes = await page.getAnnotationAttachment(annot.index); // Buffer of exact embedded bytes\n    // ...or write straight to disk:\n    await page.getAnnotationAttachment(annot.index, { output: annot.fileName ?? 'attachment.bin' });\n  }\n}\n```\n\n#### `getFormFields()`\n\nReturns all form fields on the page. Returns `Promise<FormField[]>`.\n\n```typescript\ninterface FormField {\n  type:\n    | 'unknown'\n    | 'pushButton'\n    | 'checkbox'\n    | 'radioButton'\n    | 'comboBox'\n    | 'listBox'\n    | 'textField'\n    | 'signature';\n  name: string; // field name\n  value: string; // current value\n  alternateName?: string; // tooltip / alternate field name\n  exportValue?: string; // export value (checkboxes / radio buttons)\n  flags: number; // field flags bitmask\n  bounds?: { left; bottom; right; top };\n  isChecked: boolean; // whether checkbox / radio is checked\n  options?: FormFieldOption[]; // options for combo box / list box\n}\n\ninterface FormFieldOption {\n  label: string;\n  isSelected: boolean;\n}\n```\n\n```typescript\nconst fields = await page.getFormFields();\nconst textFields = fields.filter((f) => f.type === 'textField');\nconst checked = fields.filter((f) => f.isChecked);\n```\n\n#### `close()`\n\nCloses the page and frees resources. Must be called when done with the page.\n\n---\n\n### DocumentMetadata\n\n```typescript\ninterface DocumentMetadata {\n  title: string;\n  author: string;\n  subject: string;\n  keywords: string;\n  creator: string;\n  producer: string;\n  creationDate: string;\n  modDate: string;\n  pdfVersion: number; // e.g. 17 for PDF 1.7\n  permissions: {\n    print: boolean;\n    modify: boolean;\n    copy: boolean;\n    annotate: boolean;\n    fillForms: boolean;\n    extractForAccessibility: boolean;\n    assemble: boolean;\n    printHighQuality: boolean;\n  };\n  isTagged: boolean; // whether the PDF is a tagged PDF\n  language: string; // document language (e.g. 'en-US')\n  signatureCount: number; // number of digital signatures\n  attachmentCount: number; // number of file attachments\n  permanentId?: string; // permanent file identifier (hex)\n  changingId?: string; // changing file identifier (hex)\n}\n```\n\n---\n\n## 🚧 Not supported\n\nDeliberate gaps, so you know where the edges are before you hit them:\n\n- **Interactive form filling.** Setting field values programmatically is not offered. PDFium's `FPDF_FORMFILLINFO` is a UI event-loop API — timers, focus tracking, invalidation callbacks — with no meaningful mapping onto a stateless promise-based library, and the shortcut of writing `/V` directly yields PDFs whose rendered appearance contradicts their stored value. Reading fields ([`getFormFields()`](#getformfields)) and [flattening](#flattendocumentinput-options) them are supported.\n- **Producing PDF/A-3 e-invoices.** [`addAttachments()`](#addattachmentsinput-attachments-options) embeds files but cannot set `/Subtype`, `/AFRelationship`, the catalog `/AF` array, an OutputIntent or XMP — all required by ZUGFeRD, Factur-X and XRechnung. Reading such invoices is fully supported.\n- **Signature verification.** [`getSignatures()`](#getsignatures) reports what the signature dictionary declares; PDFium performs no cryptography. Pass the blob from [`getSignatureContents()`](#getsignaturecontentsindex-options) and its `byteRange` to a crypto library to actually validate.\n- **XMP metadata.** Not reachable through PDFium's public API at all.\n- **Executing JavaScript.** The bundled PDFium is built with V8 disabled. [`getJavaScriptActions()`](#getjavascriptactions) returns scripts as inert text.\n\nOne PDFium reading quirk worth knowing: an embedded file that decodes to _zero_ bytes comes back from [`getAttachment()`](#getattachmentindex-options) as its raw compressed stream, because PDFium treats \"decoded to empty\" as a decode failure and falls back to the undecoded bytes.\n\n## ⚙️ Concurrency\n\n### `concurrency(value?): number`\n\nGets or sets the maximum number of concurrent native operations dispatched to the thread pool.\n\nThe default is the number of CPU cores (`os.availableParallelism()`). A value of `0` resets to the default.\n\nPDFium is single-threaded internally — all operations are serialized through a global mutex. The concurrency limiter prevents excess libuv worker threads from being blocked waiting on that mutex.\n\n```typescript\nimport { loadDocument, concurrency } from 'pdfium-native';\n\nconcurrency(); // 8 (CPU cores)\nconcurrency(2); // limit to 2 concurrent operations\nconcurrency(0); // reset to default\n```\n\n---\n\n## 🙏 Acknowledgements\n\nThis project uses prebuilt PDFium binaries from [bblanchon/pdfium-binaries](https://github.com/bblanchon/pdfium-binaries), which provides automated builds of the PDFium library for multiple platforms. Thanks to [@bblanchon](https://github.com/bblanchon) for maintaining this invaluable resource.\n\n## 🧹 Memory Management\n\nAlways call `page.close()` and `doc.destroy()` when done. While GC-triggered destructor hooks exist as a safety net, they should not be relied on — explicit cleanup ensures resources are freed promptly.\n\n```typescript\nconst doc = await loadDocument('file.pdf');\ntry {\n  const page = await doc.getPage(0);\n  try {\n    // use page\n  } finally {\n    page.close();\n  }\n} finally {\n  doc.destroy();\n}\n```\n\n## 📄 License\n\nMIT\n","readmeFilename":"README.md"}