{"bugs":{"url":"https://github.com/Hopding/pdf-lib/issues"},"dist":{"shasum":"b438544c065a7961d21caf5134e8086a5ad76afe","tarball":"https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.0.0-beta.2.tgz","fileCount":771,"integrity":"sha512-godVXwb4UIVBn7Z/ZGCPgOupyJgW6L+LRsysxbPP8eE2CQZ8y1xfNHWHa8nIkJACg0SgB5Y7d2336GmHw3mEDA==","signatures":[{"sig":"MEYCIQDWRj2JOqa2kSnC3orkwV80eJIhl1etqfMcrp2s5jSUHwIhAMMz8A1hdx0eMSb1Sih6+U2fpT70RxjU9Q7YLvXuTjXp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4448397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJeAqCRA9TVsSAnZWagAAirEP/RHdd9HUoF4Q6dsJqkfK\n8xaK75RnKcjq/jjnBBm8ym73DMMTNoXX5zy1Gr4NvR+k0tgZdRfNc/0Xo9m4\n17weAcCyfcP6NcQzTPeuxthT81o6SEUy8UA+rXOzLtuPDyAetO6dHrq3Ci5L\nUrmnJxzc+7vIJUH7honehdk6crO/HonDaRJyiS8piqbyTa8gWmrgWbwPiuQY\nbHo8+FrEgPhX2EDvG0fXNf4N1ntRzlzn6KPBjk7jJxdhMjl/0nvRWKKXQaxD\ncLALVpPWfA9+RK5cWhHDIrrRtc3+rf9aNmMi8O5WnatVIH76EshxrJ3qvUwT\nBny4aUfooSi4BILKsi/6cZK2Q0SPu+pZXr0G5gYBLljpZ683jhuomxUujRui\np9d9HULdx+JfSBnP2rB9ej4GSZG0/c44gfMGMPXJnGHRtJz7BSaNINcnWqij\n6PBsGGPBiTnAy0XZEmzrrgboqve3IiBEQocbUpZYS628H05XHZ9l6hpehIln\n/7a+pHrDaPKGsMr2vIOiRC3VDf93FDsUlLVMiG+2wkFRp8QO6G8u88KMuYqS\nM7GeyAqGpsBFKSQGhqJC43xVK/JlLBitXJ6CqpS50hd+QQQevImI7gJ7Jljl\nEOXspQK7ywALP6bj6Y0XA2cFCZYjandCsETAJDhr27yIa7V2a2kgyZPh3FOX\nQNZn\r\n=5CUe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"cjs/index.js","name":"pdf-lib","types":"cjs/index.d.ts","unpkg":"dist/pdf-lib.min.js","author":{"name":"Andrew Dillon","email":"andrew.dillon.j@gmail.com"},"module":"es/index.js","readme":"<h1 align=\"center\">\n<img alt=\"pdf-lib\" height=\"300\" src=\"https://raw.githubusercontent.com/Hopding/pdf-lib-docs/master/assets/logo-full.svg?sanitize=true\">\n</h1>\n\n<div align=\"center\">\n  <strong>Create and modify PDF documents in any JavaScript environment.</strong>\n</div>\n<div align=\"center\">\n  Designed to work in any modern JavaScript runtime. Tested in Node, Browser, and React Native environments.\n</div>\n\n<br />\n\n<div align=\"center\">\n  <!-- NPM Version -->\n  <a href=\"https://www.npmjs.com/package/pdf-lib\">\n    <img\n      src=\"https://img.shields.io/npm/v/pdf-lib.svg?style=flat-square\"\n      alt=\"NPM Version\"\n    />\n  </a>\n  <!-- Build Status -->\n  <a href=\"https://circleci.com/gh/Hopding/pdf-lib\">\n    <img\n      src=\"https://img.shields.io/circleci/project/github/Hopding/pdf-lib/master.svg?style=flat-square&label=CircleCI\"\n      alt=\"CircleCI Build Status\"\n    />\n  </a>\n  <!-- Prettier Badge -->\n  <a href=\"https://prettier.io/\">\n    <img\n      src=\"https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square\"\n      alt=\"Prettier Badge\"\n    />\n  </a>\n</div>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Usage Examples](#usage-examples)\n  - [Create Document](#create-document)\n  - [Modify Document](#modify-document)\n  - [Copy Pages](#copy-pages)\n  - [Embed PNG and JPEG Images](#embed-png-and-jpeg-images)\n  - [Embed Font and Measure Text](#embed-font-and-measure-text)\n- [Complete Examples](#complete-examples)\n- [Installation](#installation)\n- [Encryption Handling](#encryption-handling)\n- [Prior Art](#prior-art)\n- [License](#license)\n\n## Features\n\n- Create new PDFs\n- Modify existing PDFs\n- Add Pages\n- Insert Pages\n- Remove Pages\n- Copy pages between PDFs\n- Draw Text\n- Draw Images\n- Draw Vector Graphics\n- Measure width and height of text\n- Embed Fonts (supports UTF-8 and UTF-16 character sets)\n\n## Motivation\n\n`pdf-lib` was created to address the JavaScript ecosystem's lack of robust support for PDF manipulation (especially for PDF _modification_).\n\nTwo of `pdf-lib`'s distinguishing features are:\n\n1. Supporting modification (editing) of existing documents.\n2. Working in all JavaScript environments - not just in Node or the Browser.\n\nThere are [other](#prior-art) good open source JavaScript PDF libraries available. However, most of them can only _create_ documents, they cannot _modify_ existing ones. And many of them only work in particular environments.\n\n## Usage Examples\n\n### Create Document\n\n_This example produces [this PDF](assets/pdfs/examples/create_document.pdf)._\n\n<!-- prettier-ignore -->\n```js\nimport { PDFDocument, StandardFonts, rgb } from 'pdf-lib'\n\n// Create a new PDFDocument\nconst pdfDoc = await PDFDocument.create()\n\n// Embed the Times Roman font\nconst timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)\n\n// Add a blank page to the document\nconst page = pdfDoc.addPage()\n\n// Get the width and height of the page\nconst { width, height } = page.getSize()\n\n// Draw a string of text toward the top of the page\nconst fontSize = 30\npage.drawText('Creating PDFs in JavaScript is awesome!', {\n  x: 50,\n  y: height - 4 * fontSize,\n  size: fontSize,\n  font: timesRomanFont,\n  color: rgb(0, 0.53, 0.71),\n})\n\n// Serialize the PDFDocument to bytes (a Uint8Array)\nconst pdfBytes = await pdfDoc.save()\n\n// For example, `pdfBytes` can be:\n//   • Written to a file in Node\n//   • Downloaded from the browser\n//   • Rendered in an <iframe>\n```\n\n### Modify Document\n\n_This example produces [this PDF](assets/pdfs/examples/modify_document.pdf)_ (when [this PDF](assets/pdfs/with_update_sections.pdf) is used for the `existingPdfBytes` variable).\n\n<!-- prettier-ignore -->\n```js\nimport { degrees, PDFDocument, rgb, StandardFonts } from 'pdf-lib';\n\n// This should be a Uint8Array or ArrayBuffer\n// This data can be obtained in a number of different ways\n// If your running in a Node environment, you could use fs.readFile()\n// In the browser, you could make a fetch() call and use res.arrayBuffer()\nconst existingPdfBytes = ...\n\n// Load a PDFDocument from the existing PDF bytes\nconst pdfDoc = await PDFDocument.load(existingPdfBytes)\n\n// Embed the Helvetica font\nconst helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)\n\n// Get the first page of the document\nconst pages = pdfDoc.getPages()\nconst firstPage = pages[0]\n\n// Get the width and height of the first page\nconst { width, height } = firstPage.getSize()\n\n// Draw a string of text diagonally across the first page\nfirstPage.drawText('This text was added with JavaScript!', {\n  x: 5,\n  y: height / 2 + 300,\n  size: 50,\n  font: helveticaFont,\n  color: rgb(0.95, 0.1, 0.1),\n  rotate: degrees(-45),\n})\n\n\n// Serialize the PDFDocument to bytes (a Uint8Array)\nconst pdfBytes = await pdfDoc.save()\n\n// For example, `pdfBytes` can be:\n//   • Written to a file in Node\n//   • Downloaded from the browser\n//   • Rendered in an <iframe>\n```\n\n### Copy Pages\n\n_This example produces [this PDF](assets/pdfs/examples/copy_pages.pdf)_ (when [this PDF](assets/pdfs/with_update_sections.pdf) is used for the `firstDonorPdfBytes` variable and [this PDF](assets/pdfs/with_large_page_count.pdf) is used for the `secondDonorPdfBytes` variable).\n\n<!-- prettier-ignore -->\n```js\nimport { PDFDocument } from 'pdf-lib'\n\n// Create a new PDFDocument\nconst pdfDoc = await PDFDocument.create();\n\n// These should be Uint8Arrays or ArrayBuffers\n// This data can be obtained in a number of different ways\n// If your running in a Node environment, you could use fs.readFile()\n// In the browser, you could make a fetch() call and use res.arrayBuffer()\nconst firstDonorPdfBytes = ...\nconst secondDonorPdfBytes = ...\n\n// Load a PDFDocument from each of the existing PDFs\nconst firstDonorPdfDoc = await PDFDocument.load(firstDonorPdfBytes)\nconst secondDonorPdfDoc = await PDFDocument.load(secondDonorPdfBytes)\n\n// Copy the 1st page from the first donor document, and \n// the 743rd page from the second donor document\nconst [firstDonorPage] = await pdfDoc.copyPages(firstDonorPdfDoc, [0])\nconst [secondDonorPage] = await pdfDoc.copyPages(secondDonorPdfDoc, [742])\n\n// Add the first copied page\npdfDoc.addPage(firstDonorPage)\n\n// Insert the second copied page to index 0, so it will be the \n// first page in `pdfDoc`\npdfDoc.insertPage(0, secondDonorPage)\n\n// Serialize the PDFDocument to bytes (a Uint8Array)\nconst pdfBytes = await pdfDoc.save()\n\n// For example, `pdfBytes` can be:\n//   • Written to a file in Node\n//   • Downloaded from the browser\n//   • Rendered in an <iframe>\n```\n\n### Embed PNG and JPEG Images\n\n_This example produces [this PDF](assets/pdfs/examples/embed_png_and_jpeg_images.pdf)_ (when [this image](assets/images/cat_riding_unicorn.jpg) is used for the `jpgImageBytes` variable and [this image](assets/images/minions_banana_alpha.png) is used for the `pngImageBytes` variable).\n\n<!-- prettier-ignore -->\n```js\nimport { PDFDocument } from 'pdf-lib'\n\n// These should be Uint8Arrays or ArrayBuffers\n// This data can be obtained in a number of different ways\n// If your running in a Node environment, you could use fs.readFile()\n// In the browser, you could make a fetch() call and use res.arrayBuffer()\nconst jpgImageBytes = ...\nconst pngImageBytes = ...\n\n// Create a new PDFDocument\nconst pdfDoc = await PDFDocument.create()\n\n// Embed the JPG image bytes and PNG image bytes\nconst jpgImage = await pdfDoc.embedJpg(jpgImageBytes)\nconst pngImage = await pdfDoc.embedPng(pngImageBytes)\n\n// Get the width/height of the JPG image scaled down to 25% of its original size\nconst jpgDims = jpgImage.scale(0.25)\n\n// Get the width/height of the PNG image scaled down to 50% of its original size\nconst pngDims = pngImage.scale(0.5)\n\n// Add a blank page to the document\nconst page = pdfDoc.addPage()\n\n// Draw the JPG image in the center of the page\npage.drawImage(jpgImage, {\n  x: page.getWidth() / 2 - jpgDims.width / 2,\n  y: page.getHeight() / 2 - jpgDims.height / 2,\n  width: jpgDims.width,\n  height: jpgDims.height,\n})\n\n// Draw the PNG image near the lower right corner of the JPG image\npage.drawImage(pngImage, {\n  x: page.getWidth() / 2 - pngDims.width / 2 + 75,\n  y: page.getHeight() / 2 - pngDims.height,\n  width: pngDims.width,\n  height: pngDims.height,\n})\n\n// Serialize the PDFDocument to bytes (a Uint8Array)\nconst pdfBytes = await pdfDoc.save()\n\n// For example, `pdfBytes` can be:\n//   • Written to a file in Node\n//   • Downloaded from the browser\n//   • Rendered in an <iframe>\n```\n\n### Embed Font and Measure Text\n\n`pdf-lib` relies on a sister module to support embedding custom fonts: [`@pdf-lib/fontkit`](https://www.npmjs.com/package/@pdf-lib/fontkit). You must add the `@pdf-lib/fontkit` module to your project and register it using `pdfDoc.registerFontkit(...)` before embedding custom fonts.\n\n> **[See below for detailed installation instructions on installing `@pdf-lib/fontkit` as a UMD or NPM module.](#fontkit-installation)**\n\n_This example produces [this PDF](assets/pdfs/examples/embed_font_and_measure_text.pdf)_ (when [this font](assets/fonts/ubuntu/Ubuntu-R.ttf) is used for the `fontBytes` variable).\n\n<!-- prettier-ignore -->\n```js\nimport { PDFDocument, rgb } from 'pdf-lib'\nimport fontkit from '@pdf-lib/fontkit'\n\n// This should be a Uint8Array or ArrayBuffer\n// This data can be obtained in a number of different ways\n// If your running in a Node environment, you could use fs.readFile()\n// In the browser, you could make a fetch() call and use res.arrayBuffer()\nconst fontBytes = ...\n\n// Create a new PDFDocument\nconst pdfDoc = await PDFDocument.create()\n\n// Register the `fontkit` instance\npdfDoc.registerFontkit(fontkit)\n\n// Embed our custom font in the document\nconst customFont = await pdfDoc.embedFont(fontBytes)\n\n// Add a blank page to the document\nconst page = pdfDoc.addPage()\n\n// Create a string of text and measure its width and height in our custom font\nconst text = 'This is text in an embedded font!'\nconst textSize = 35\nconst textWidth = customFont.widthOfTextAtSize(text, textSize)\nconst textHeight = customFont.heightAtSize(textSize)\n\n// Draw the string of text on the page\npage.drawText(text, {\n  x: 40,\n  y: 450,\n  size: textSize,\n  font: customFont,\n  color: rgb(0, 0.53, 0.71),\n})\n\n// Draw a box around the string of text\npage.drawRectangle({\n  x: 40,\n  y: 450,\n  width: textWidth,\n  height: textHeight,\n  borderColor: rgb(1, 0, 0),\n  borderWidth: 1.5,\n})\n\n// Serialize the PDFDocument to bytes (a Uint8Array)\nconst pdfBytes = await pdfDoc.save()\n\n// For example, `pdfBytes` can be:\n//   • Written to a file in Node\n//   • Downloaded from the browser\n//   • Rendered in an <iframe>\n```\n\n## Complete Examples\n\nThe [usage examples](#usage-examples) provide code that is brief and to the point, demonstrating the different features of `pdf-lib`. You can find complete working examples in the [`apps/`](apps/) directory. These apps are used to do manual testing of `pdf-lib` before every release (in addition to the [automated tests](tests/)).\n\nThere are currently two apps:\n\n- [**`node`**](apps/node/) - contains [tests](apps/node/tests/) for `pdf-lib` in Node environments. These tests are a handy reference when trying to save/load PDFs, fonts, or images with `pdf-lib` from the filesystem. They also allow you to quickly open your PDFs in different viewers (Acrobat, Preview, Foxit, Chrome, Firefox, etc...) to ensure compatibility.\n- [**`web`**](apps/web/) - contains [tests](apps/web/) for `pdf-lib` in browser environments. These tests are a handy reference when trying to save/load PDFs, fonts, or images with `pdf-lib` in a browser environment.\n\n## Installation\n\n### NPM Module\n\nTo install the latest stable version:\n\n```bash\n# With npm\nnpm install --save pdf-lib\n\n# With yarn\nyarn add pdf-lib\n```\n\nThis assumes you're using [npm](https://www.npmjs.com/) or [yarn](https://yarnpkg.com/lang/en/) as your package manager.\n\n### UMD Module\n\nYou can also download `pdf-lib` as a UMD module from [unpkg](https://unpkg.com/#/). The UMD builds have been compiled to ES5, so they should work [in any modern browser](https://caniuse.com/#feat=es5). UMD builds are useful if you aren't using a package manager or module bundler. For example, you can use them directly in the `<script>` tag of an HTML page.\n\nThe following builds are available:\n\n- https://unpkg.com/pdf-lib/dist/pdf-lib.js\n- https://unpkg.com/pdf-lib/dist/pdf-lib.min.js\n\nWhen using a UMD build, you will have access to a global `window.PDFLib` variable. This variable contains all of the classes and functions exported by `pdf-lib`. For example:\n\n```javascript\n// NPM module\nimport { PDFDocument, rgb } from 'pdf-lib';\n\n// UMD module\nvar PDFDocument = PDFLib.PDFDocument;\nvar rgb = PDFLib.rgb;\n```\n\n## Fontkit Installation\n\n`pdf-lib` relies upon a sister module to support embedding custom fonts: [`@pdf-lib/fontkit`](https://www.npmjs.com/package/@pdf-lib/fontkit). You must add the `@pdf-lib/fontkit` module to your project and register it using `pdfDoc.registerFontkit(...)` before embedding custom fonts (see the [font embedding example](#embed-font-and-measure-text)). This module is not included by default because not all users need it, and it increases bundle size.\n\nInstalling this module is easy. Just like `pdf-lib` itself, `@pdf-lib/fontkit` can be installed with `npm`/`yarn` or as a UMD module.\n\n### Fontkit NPM Module\n\n```bash\n# With npm\nnpm install --save @pdf-lib/fontkit\n\n# With yarn\nyarn add @pdf-lib/fontkit\n```\n\nTo register the `fontkit` instance:\n\n```js\nimport { PDFDocument } from 'pdf-lib';\nimport fontkit from '@pdf-lib/fontkit';\n\nconst pdfDoc = await PDFDocument.create();\npdfDoc.registerFontkit(fontkit);\n```\n\n### Fontkit UMD Module\n\nThe following builds are available:\n\n- https://unpkg.com/@pdf-lib/fontkit/dist/fontkit.umd.js\n- https://unpkg.com/@pdf-lib/fontkit/dist/fontkit.umd.min.js\n\nWhen using a UMD build, you will have access to a global `window.fontkit` variable. To register the `fontkit` instance:\n\n```js\nvar pdfDoc = await PDFLib.PDFDocument.create();\npdfDoc.registerFontkit(fontkit);\n```\n\n## Encryption Handling\n\n`pdf-lib` does not currently support modification of encrypted documents. In general, it is not advised to use `pdf-lib` with encrypted documents. However, this is a feature that could be added to `pdf-lib`. Please [create an issue](https://github.com/Hopding/pdf-lib/issues/new) if you would find this feature helpful!\n\nWhen an encrypted document is passed to `PDFDocument.load(...)`, an error will be thrown:\n\n<!-- prettier-ignore -->\n```js\nimport { PDFDocument, EncryptedPDFError } from 'pdf-lib'\n\nconst encryptedPdfBytes = ...\n\n// Assignment fails. Throws an `EncryptedPDFError`.\nconst pdfDoc = PDFDocument.load(encryptedPdfBytes)\n```\n\nThis default behavior is usually what you want. It allows you to easily detect if a given document is encrypted, and it prevents you from trying to modify it. However, if you really want to load the document, you can use the `{ ignoreEncryption: true }` option:\n\n```js\nimport { PDFDocument } from 'pdf-lib'\n\nconst encryptedPdfBytes = ...\n\n// Assignment succeeds. Does not throw an error.\nconst pdfDoc = PDFDocument.load(encryptedPdfBytes, { ignoreEncryption: true })\n```\n\nNote that **using this option does not decrypt the document**. This means that any modifications you attempt to make on the returned `PDFDocument` may fail, or have unexpected results.\n\n## Prior Art\n\n- [`pdfkit`](https://github.com/devongovett/pdfkit) is a PDF generation library for Node and the Browser. This library was immensely helpful as a reference and existence proof when creating `pdf-lib`. `pdfkit`'s code for [font embedding](src/core/embedders/CustomFontEmbedder.ts#L17-L21), [PNG embedding](src/core/embedders/PngEmbedder.ts#L7-L11), and [JPG embedding](src/core/embedders/JpegEmbedder.ts#L25-L29) was especially useful.\n- [`pdf.js`](https://github.com/mozilla/pdf.js) is a PDF rendering library for the Browser. This library was helpful as a reference when writing `pdf-lib`'s parser. Some of the code for stream decoding was [ported directly to TypeScript](src/core/streams) for use in `pdf-lib`.\n- [`jspdf`](https://github.com/MrRio/jsPDF) is a PDF generation library for the browser.\n- [`pdfmake`](https://github.com/bpampuch/pdfmake) is a PDF generation library for the browser.\n- [`hummus`](https://github.com/galkahana/HummusJS) is a PDF generation and modification library for Node environments. `hummus` is a Node wrapper around a [C++ library](https://github.com/galkahana/PDF-Writer), so it doesn't work in many JavaScript environments - like the Browser or React Native.\n- [`react-native-pdf-lib`](https://github.com/Hopding/react-native-pdf-lib) is a PDF generation and modification library for React Native environments. `react-native-pdf-lib` is a wrapper around [C++](https://github.com/galkahana/PDF-Writer) and [Java](https://github.com/TomRoush/PdfBox-Android) libraries.\n- [`pdfassembler`](https://github.com/DevelopingMagic/pdfassembler) is a PDF generation and modification library for Node and the browser. It requires some knowledge about the logical structure of PDF documents to use.\n\n## License\n\n[MIT](LICENSE.md)\n","license":"MIT","private":false,"scripts":{"lint":"yarn lint:prettier && yarn lint:tslint:src && yarn lint:tslint:tests","test":"jest --config jest.json --runInBand","build":"yarn build:cjs && yarn build:es && yarn build:umd && yarn build:umd:min","clean":"rimraf build cjs dist es scratchpad/build coverage tsBuildInfo.json isolate*.log flamegraph.html out.pdf","testc":"jest --config jest.json --coverage && open coverage/index.html","testw":"jest --config jest.json --watch --notify","apps:web":"http-server -c-1 .","build:es":"ttsc --module ES2015 --outDir es","apps:node":"ttsc --build apps/node/tsconfig.json && node apps/node-build/index.js","build:cjs":"ttsc --module commonjs --outDir cjs","build:umd":"rollup --config rollup.config.js --file dist/pdf-lib.js","typecheck":"tsc --noEmit","apps:web:mac":"bash -c 'sleep 1 && open http://localhost:8080/apps/web/test1.html' & yarn apps:web","build:umd:min":"rollup --config rollup.config.js --file dist/pdf-lib.min.js --environment MINIFY","lint:prettier":"prettier --write './{src,tests}/**/*.{ts,js,json}' --loglevel error","scratchpad:run":"node scratchpad/build/scratchpad/index.js","lint:tslint:src":"tslint --project tsconfig.json --fix","scratchpad:flame":"rimraf isolate*.log && node --prof scratchpad/build/scratchpad/index.js && node --prof-process --preprocess -j isolate*.log | flamebearer","scratchpad:start":"ttsc --build scratchpad/tsconfig.json --watch","lint:tslint:tests":"tslint --project tests/tsconfig.json --fix"},"_npmUser":{"name":"hopding","email":"andrew.dillon.j@gmail.com"},"keywords":["pdf-lib","pdf","document","create","modify","creation","modification","edit","editing","typescript","javascript","library"],"repository":{"url":"git+https://github.com/Hopding/pdf-lib.git","type":"git"},"description":"Create and modify PDF files with JavaScript","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2019 Andrew Dillon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","maintainers":[{"name":"hopding","email":"andrew.dillon.j@gmail.com"}],"contributors":[{"url":"https://github.com/jerp","name":"jerp"},{"url":"https://github.com/gregbacchus","name":"Greg Bacchus"},{"url":"https://github.com/mlecoq","name":"Mickael Lecoq"}],"dependencies":{"pako":"^1.0.10","tslib":"^1.10.0","png-ts":"^0.0.3","@pdf-lib/standard-fonts":"^0.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.8.0","rimraf":"^2.6.3","rollup":"^1.16.3","tslint":"^5.18.0","ts-jest":"^24.0.2","prettier":"^1.18.2","typescript":"^3.5.2","@types/jest":"^24.0.15","@types/pako":"^1.0.1","flamebearer":"^1.1.3","http-server":"^0.11.1","ttypescript":"^1.5.7","@pdf-lib/fontkit":"^0.0.4","rollup-plugin-json":"^4.0.0","rollup-plugin-terser":"^5.0.0","rollup-plugin-commonjs":"^10.0.1","tslint-config-prettier":"^1.18.0","rollup-plugin-node-resolve":"^5.2.0","@zerollup/ts-transform-paths":"^1.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pdf-lib_1.0.0-beta.2_1562763306275_0.3304970920208119","host":"s3://npm-registry-packages"},"_id":"pdf-lib@1.0.0-beta.2","version":"1.0.0-beta.2"}