{"_id":"@angellist-venture/pdf-merger","_rev":"1-c7fecb2d50aaa9401a5dde161e7eb48e","name":"@angellist-venture/pdf-merger","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@angellist-venture/pdf-merger","version":"1.0.0","description":"merge multible PDF documents, or parts of them, to a new PDF document","main":"./index.js","types":"./index.d.ts","browser":"./browser.js","scripts":{"standard":"standard","standard:fix":"standard --fix","test":"jest --detectOpenHandles","test:watch":"jest --watch --forceExit --detectOpenHandles"},"standard":{"env":["jest","browser"]},"repository":{"type":"git","url":"git+https://github.com/angellist/pdf-merger-js.git"},"keywords":["pdf","merge"],"author":{"name":"angellist-venture"},"license":"MIT","dependencies":{"pdf-lib":"^1.17.1"},"devDependencies":{"fs-extra":"^10.1.0","jest":"^29.1.2","jest-environment-jsdom":"^29.1.2","jsdom":"^20.0.1","node-fetch":"^2.6.7","pdf-diff":"^0.1.1","standard":"^17.0.0"},"bugs":{"url":"https://github.com/angellist/pdf-merger-js/issues"},"homepage":"https://github.com/angellist/pdf-merger-js#readme","directories":{"test":"test"},"gitHead":"be82c22371edee8ede901a31a65d6c03972ed404","_id":"@angellist-venture/pdf-merger@1.0.0","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-vDLMli15UoKOD1p6hDWFN7kN2KoGKd4YyA+5oCuM7Cwi/9UqzyeWDpI+cea1v6IwNNd6mtXZc83FZT0yAHNrjQ==","shasum":"a66052b4a3a730c3b53e5bd13c2e7d3a09574b50","tarball":"https://registry.npmjs.org/@angellist-venture/pdf-merger/-/pdf-merger-1.0.0.tgz","fileCount":18,"unpackedSize":2535495,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIcII7ui4mwSzVcsbmC9nO09ceg6iRwNNgNlX3qz72/wIhAIbWxx8VQFhiEdZNFKUuO5LGHhUU17QhE8N9j/1L0x83"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkpXFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqZKQ/+NCjD1MXfaAzS1hc4CKeVF53DGI6E8BYVKWao/qHGngpEAfUM\r\n2vk8xdd8bICMLVlgRF/AQRVAnjSHORd1dutRhyhjDwm8+HSvDsWD1FYWpOv5\r\nqPggw9wu/vj8zmcMRgoaofGuMXfbISM+oyFhxWOG5s/m1J+W4wspXYWc6LYR\r\nqvNIryK3KrCDVYOlfxHXn8HR2uZFMUt3clldYdOv4M5ENuA6F6F3u6PMmUXw\r\niVK07XAM4fr40mtgNUgI52X33JTG0qh4UMI9rly1K/cGfyOELNzM+QkF+oIk\r\nnYsDolIZNRzaeCh9y8T0p5QbaEUhV0q4Fv17Ing7CH0QlPJh5KQwyA00Z5l3\r\nYb/KwssUy4gQ5VSJvH71CbiX/ocWmjirFxOAxsKoIDImEmjW04CFvc2dPcoh\r\nz0lqjkfaVtMnZFO12L89kX4cGGES/dyshXsgTRFcUH5r7KyjlBpvki35+hqC\r\n/BKrJ7eQ9w705rJ9YU0h/2Ks15foHthn0BHk0ONUxo4Lv6jJJPT2+Jisl47E\r\nsBp0r3J26Fq+S/4nDxO0fPGzgPLXCxFK0oBfCocbdgi6sh6pbncuNv4cyHaG\r\n7S436R50Y+fx19ONLQkPJbb5C24UoHhbayXXjuBsdD/y7YfK7zBl6bq4y3dr\r\nQppTQs0hDMf876h+EBJoB80VGAJiqAQMQo0=\r\n=jcpE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"angellistjames","email":"james.zammit@angellist.com"},"maintainers":[{"name":"angellistjames","email":"james.zammit@angellist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-merger_1.0.0_1670550981130_0.6613739890152539"},"_hasShrinkwrap":false},"1.0.1":{"name":"@angellist-venture/pdf-merger","version":"1.0.1","description":"merge multible PDF documents, or parts of them, to a new PDF document","main":"./index.js","types":"./index.d.ts","browser":"./browser.js","scripts":{"standard":"standard","standard:fix":"standard --fix","test":"jest --detectOpenHandles","test:watch":"jest --watch --forceExit --detectOpenHandles"},"standard":{"env":["jest","browser"]},"repository":{"type":"git","url":"git+https://github.com/angellist/pdf-merger-js.git"},"keywords":["pdf","merge"],"author":{"name":"angellist-venture"},"license":"MIT","dependencies":{"pdf-lib":"^1.17.1"},"devDependencies":{"fs-extra":"^10.1.0","jest":"^29.1.2","jest-environment-jsdom":"^29.1.2","jsdom":"^20.0.1","node-fetch":"^2.6.7","pdf-diff":"^0.1.1","standard":"^17.0.0"},"bugs":{"url":"https://github.com/angellist/pdf-merger-js/issues"},"homepage":"https://github.com/angellist/pdf-merger-js#readme","directories":{"test":"test"},"gitHead":"4a3cbe7cf15cfa1c514e80151189ac83475b3f0a","_id":"@angellist-venture/pdf-merger@1.0.1","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-g8oZgcP6wBov66UA67azgr9SH4SoNO3Z+WXPSMXqVXgX2jZFmD4pp7/wx1kuGKJM8bL1nu3p/BpbOdWPzEJ/Tg==","shasum":"b717342041f1b395776cb06cedf78f45e7f1a9b6","tarball":"https://registry.npmjs.org/@angellist-venture/pdf-merger/-/pdf-merger-1.0.1.tgz","fileCount":18,"unpackedSize":2535495,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrEmic4cNvc/FFG715eeXJqsCQcMmh9UCHN+XoQgNLvAIhAM8EtYZuIO+E5wtkzg3cqd0Q8Qm54ali9Cr/VPYXzmto"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkpe7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpU+w//QS+6JDeSVc9mCX+ncy/gKQmCV4hT/Krtpl4Wn4Krk61ZubO8\r\nYO2xmcN/xXkF6ripau8ct5l+Pk7/WWsjcP9LbOH2ml4XD0ARcISVg3K02fL0\r\nMWEvQ1+cbTtm9gU6hYkn9jMzWzw5B8ygoJJysAu1/bDAx6Sw7tvHSxD0bAx8\r\nq1wrz4IuojmUIYK8jSbCU+ICU4wf/s0+sXWJyWZqs7YukGXJ8rMRqHEBMHcN\r\nnsuwX5uJkFqjFkvwBt/95t62Qn4VQTilGKa5+UwrBJfIxn+nvOXSnSag3Jl3\r\nthYE3mGhfKOnxXeosVb+Ab/6HTOZiXmki43JvexrXipg34JAFp5j/io1aFhW\r\n8ZdJznVnlw50YjwVQSfWyswympRZqOEVTv2EBcSAGVZuXIuwGfEKbDapJPla\r\nxUiKEkwP4Is7vz5yenc5VFOPg41yBKZhYC9gG1YOsCAKrpnMEUQyuYd4Nzb5\r\n5HZC/UNO0V+ibsf2ovZT05ecIp9D9TeNK4S/A6CGiyqiTefj1nNkylcwHRLX\r\nrjVDQdAeZG/mwpCOlaZlSLYXkpfaGbuLI7HNZDGN8W8/YgmgBiOU++AU5lF+\r\nbfO8EojrhVefiH5DkaxSbjfbB7FGP43rizBm2IIfGQYykwKoqZtGV9Ve6PV5\r\nDeaQtMy/NF+hCmmsHmqXC7squ7Vlxw5YUy4=\r\n=R+VB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"angellistjames","email":"james.zammit@angellist.com"},"maintainers":[{"name":"angellistjames","email":"james.zammit@angellist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-merger_1.0.1_1670551482940_0.6453087534261457"},"_hasShrinkwrap":false}},"time":{"created":"2022-12-09T01:56:21.065Z","1.0.0":"2022-12-09T01:56:21.367Z","modified":"2022-12-09T02:04:43.275Z","1.0.1":"2022-12-09T02:04:43.152Z"},"maintainers":[{"name":"angellistjames","email":"james.zammit@angellist.com"}],"description":"merge multible PDF documents, or parts of them, to a new PDF document","homepage":"https://github.com/angellist/pdf-merger-js#readme","keywords":["pdf","merge"],"repository":{"type":"git","url":"git+https://github.com/angellist/pdf-merger-js.git"},"author":{"name":"angellist-venture"},"bugs":{"url":"https://github.com/angellist/pdf-merger-js/issues"},"license":"MIT","readme":"# Description\n\nThis node.js library can **merge multiple PDF documents**, or parts of them, to one new PDF document. It's only dependency is [pdf-lib](https://pdf-lib.js.org/) so it can run in any javascript-only environnement **without any external dependencies**.\n\n> If you are searching for the legacy version based on \n[pdfjs](https://www.npmjs.com/package/pdfjs) please install a [v3 release](https://github.com/nbesli/pdf-merger-js/releases?q=v3&expanded=true). Since [v4](https://github.com/nbesli/pdf-merger-js/releases?q=v4&expanded=true) we use [pdf-lib](https://pdf-lib.js.org/) instead.\n\nThis library is inspired by the [PHP library PDFMerger](https://github.com/myokyawhtun/PDFMerger) and has a very similar API.\n\n## Installation\n\n`npm install --save pdf-merger-js`\n\n## Usage\n\n### node.js\n\nThe node.js version has the following export functions:\n\n* `saveAsBuffer` exports a merged pdf as an [Buffer](https://nodejs.org/api/buffer.html).\n* `save` saves the pdf under the given filename.\n\n### async node.js example\n\n```js\nconst PDFMerger = require('pdf-merger-js');\n\nvar merger = new PDFMerger();\n\n(async () => {\n  await merger.add('pdf1.pdf');  //merge all pages. parameter is the path to file and filename.\n  await merger.add('pdf2.pdf', 2); // merge only page 2\n  await merger.add('pdf2.pdf', [1, 3]); // merge the pages 1 and 3\n  await merger.add('pdf2.pdf', '4, 7, 8'); // merge the pages 4, 7 and 8\n  await merger.add('pdf3.pdf', '3 to 5'); //merge pages 3 to 5 (3,4,5)\n  await merger.add('pdf3.pdf', '3-5'); //merge pages 3 to 5 (3,4,5)\n\n  await merger.save('merged.pdf'); //save under given name and reset the internal document\n  \n  // Export the merged PDF as a nodejs Buffer\n  // const mergedPdfBuffer = await merger.saveAsBuffer();\n  // fs.writeSync('merged.pdf', mergedPdfBuffer);\n})();\n```\n\n### Browser\n\nThe Browser version has the following export functions:\n\n* `saveAsBuffer` exports a merged pdf as an [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array).\n* `saveAsBlob` exports a merged pdf as a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n* `save` starts a file-download directly in the browser.\n\n#### Sample - React\n\n```jsx\nimport PDFMerger from 'pdf-merger-js/browser';\nimport React, { useEffect, useState } from 'react';\n\n// files: Array of PDF File or Blob objects\nconst Merger = (files) => {\n  const [mergedPdfUrl, setMergedPdfUrl] = useState();\n\n  useEffect(() => {\n    const render = async () => {\n      const merger = new PDFMerger();\n\n      for(const file of files) {\n        await merger.add(file)\n      }\n\n      const mergedPdf = await merger.saveAsBlob();\n      const url = URL.createObjectURL(mergedPdf);\n\n      return setMergedPdfUrl(url);\n    };\n\n    render().catch((err) => {\n      throw err;\n    });\n\n    () => setMergedPdfUrl({});\n  }, [files, setMergedPdfUrl]);\n\n  return !data ? (\n    <>Loading</>\n  ) : (\n    <iframe\n      height={1000}\n      src={`${mergedPdfUrl}`}\n      title='pdf-viewer'\n      width='100%s'\n    ></iframe>\n  );\n};\n```\n\n## Similar libraries\n\n* [pdf-merge](https://www.npmjs.com/package/pdf-merge) has a dependency on [PDFtk](https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).\n* [easy-pdf-merge](https://www.npmjs.com/package/easy-pdf-merge) has a dependency on the [Apache PDFBox® - A Java PDF Library](https://pdfbox.apache.org/).\n* [pdfmerge](https://www.npmjs.com/package/pdfmerge) has a dependency on python and [PyPDF2](https://pythonhosted.org/PyPDF2/).\n","readmeFilename":"README.md"}