@adnsistemas/pdf-lib 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1586) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +1713 -0
  3. package/cjs/api/Embeddable.d.ts +8 -0
  4. package/cjs/api/Embeddable.d.ts.map +1 -0
  5. package/cjs/api/Embeddable.js +3 -0
  6. package/cjs/api/Embeddable.js.map +1 -0
  7. package/cjs/api/PDFDocument.d.ts +800 -0
  8. package/cjs/api/PDFDocument.d.ts.map +1 -0
  9. package/cjs/api/PDFDocument.js +1454 -0
  10. package/cjs/api/PDFDocument.js.map +1 -0
  11. package/cjs/api/PDFDocumentOptions.d.ts +43 -0
  12. package/cjs/api/PDFDocumentOptions.d.ts.map +1 -0
  13. package/cjs/api/PDFDocumentOptions.js +11 -0
  14. package/cjs/api/PDFDocumentOptions.js.map +1 -0
  15. package/cjs/api/PDFEmbeddedFile.d.ts +39 -0
  16. package/cjs/api/PDFEmbeddedFile.d.ts.map +1 -0
  17. package/cjs/api/PDFEmbeddedFile.js +84 -0
  18. package/cjs/api/PDFEmbeddedFile.js.map +1 -0
  19. package/cjs/api/PDFEmbeddedPage.d.ts +74 -0
  20. package/cjs/api/PDFEmbeddedPage.d.ts.map +1 -0
  21. package/cjs/api/PDFEmbeddedPage.js +95 -0
  22. package/cjs/api/PDFEmbeddedPage.js.map +1 -0
  23. package/cjs/api/PDFFont.d.ts +95 -0
  24. package/cjs/api/PDFFont.d.ts.map +1 -0
  25. package/cjs/api/PDFFont.js +143 -0
  26. package/cjs/api/PDFFont.js.map +1 -0
  27. package/cjs/api/PDFImage.d.ts +96 -0
  28. package/cjs/api/PDFImage.d.ts.map +1 -0
  29. package/cjs/api/PDFImage.js +132 -0
  30. package/cjs/api/PDFImage.js.map +1 -0
  31. package/cjs/api/PDFJavaScript.d.ts +39 -0
  32. package/cjs/api/PDFJavaScript.d.ts.map +1 -0
  33. package/cjs/api/PDFJavaScript.js +73 -0
  34. package/cjs/api/PDFJavaScript.js.map +1 -0
  35. package/cjs/api/PDFPage.d.ts +898 -0
  36. package/cjs/api/PDFPage.d.ts.map +1 -0
  37. package/cjs/api/PDFPage.js +1442 -0
  38. package/cjs/api/PDFPage.js.map +1 -0
  39. package/cjs/api/PDFPageOptions.d.ts +155 -0
  40. package/cjs/api/PDFPageOptions.d.ts.map +1 -0
  41. package/cjs/api/PDFPageOptions.js +19 -0
  42. package/cjs/api/PDFPageOptions.js.map +1 -0
  43. package/cjs/api/StandardFonts.d.ts +17 -0
  44. package/cjs/api/StandardFonts.d.ts.map +1 -0
  45. package/cjs/api/StandardFonts.js +21 -0
  46. package/cjs/api/StandardFonts.js.map +1 -0
  47. package/cjs/api/colors.d.ts +31 -0
  48. package/cjs/api/colors.d.ts.map +1 -0
  49. package/cjs/api/colors.js +59 -0
  50. package/cjs/api/colors.js.map +1 -0
  51. package/cjs/api/errors.d.ts +43 -0
  52. package/cjs/api/errors.d.ts.map +1 -0
  53. package/cjs/api/errors.js +168 -0
  54. package/cjs/api/errors.js.map +1 -0
  55. package/cjs/api/form/PDFButton.d.ts +138 -0
  56. package/cjs/api/form/PDFButton.d.ts.map +1 -0
  57. package/cjs/api/form/PDFButton.js +220 -0
  58. package/cjs/api/form/PDFButton.js.map +1 -0
  59. package/cjs/api/form/PDFCheckBox.d.ts +143 -0
  60. package/cjs/api/form/PDFCheckBox.d.ts.map +1 -0
  61. package/cjs/api/form/PDFCheckBox.js +236 -0
  62. package/cjs/api/form/PDFCheckBox.js.map +1 -0
  63. package/cjs/api/form/PDFDropdown.d.ts +403 -0
  64. package/cjs/api/form/PDFDropdown.d.ts.map +1 -0
  65. package/cjs/api/form/PDFDropdown.js +580 -0
  66. package/cjs/api/form/PDFDropdown.js.map +1 -0
  67. package/cjs/api/form/PDFField.d.ts +204 -0
  68. package/cjs/api/form/PDFField.d.ts.map +1 -0
  69. package/cjs/api/form/PDFField.js +384 -0
  70. package/cjs/api/form/PDFField.js.map +1 -0
  71. package/cjs/api/form/PDFForm.d.ts +412 -0
  72. package/cjs/api/form/PDFForm.d.ts.map +1 -0
  73. package/cjs/api/form/PDFForm.js +726 -0
  74. package/cjs/api/form/PDFForm.js.map +1 -0
  75. package/cjs/api/form/PDFOptionList.d.ts +336 -0
  76. package/cjs/api/form/PDFOptionList.d.ts.map +1 -0
  77. package/cjs/api/form/PDFOptionList.js +499 -0
  78. package/cjs/api/form/PDFOptionList.js.map +1 -0
  79. package/cjs/api/form/PDFRadioGroup.d.ts +253 -0
  80. package/cjs/api/form/PDFRadioGroup.d.ts.map +1 -0
  81. package/cjs/api/form/PDFRadioGroup.js +415 -0
  82. package/cjs/api/form/PDFRadioGroup.js.map +1 -0
  83. package/cjs/api/form/PDFSignature.d.ts +30 -0
  84. package/cjs/api/form/PDFSignature.d.ts.map +1 -0
  85. package/cjs/api/form/PDFSignature.js +43 -0
  86. package/cjs/api/form/PDFSignature.js.map +1 -0
  87. package/cjs/api/form/PDFTextField.d.ts +538 -0
  88. package/cjs/api/form/PDFTextField.d.ts.map +1 -0
  89. package/cjs/api/form/PDFTextField.js +739 -0
  90. package/cjs/api/form/PDFTextField.js.map +1 -0
  91. package/cjs/api/form/appearances.d.ts +42 -0
  92. package/cjs/api/form/appearances.d.ts.map +1 -0
  93. package/cjs/api/form/appearances.js +421 -0
  94. package/cjs/api/form/appearances.js.map +1 -0
  95. package/cjs/api/form/index.d.ts +11 -0
  96. package/cjs/api/form/index.d.ts.map +1 -0
  97. package/cjs/api/form/index.js +23 -0
  98. package/cjs/api/form/index.js.map +1 -0
  99. package/cjs/api/image/alignment.d.ts +6 -0
  100. package/cjs/api/image/alignment.d.ts.map +1 -0
  101. package/cjs/api/image/alignment.js +10 -0
  102. package/cjs/api/image/alignment.js.map +1 -0
  103. package/cjs/api/image/index.d.ts +2 -0
  104. package/cjs/api/image/index.d.ts.map +1 -0
  105. package/cjs/api/image/index.js +5 -0
  106. package/cjs/api/image/index.js.map +1 -0
  107. package/cjs/api/index.d.ts +22 -0
  108. package/cjs/api/index.d.ts.map +1 -0
  109. package/cjs/api/index.js +30 -0
  110. package/cjs/api/index.js.map +1 -0
  111. package/cjs/api/objects.d.ts +5 -0
  112. package/cjs/api/objects.d.ts.map +1 -0
  113. package/cjs/api/objects.js +14 -0
  114. package/cjs/api/objects.js.map +1 -0
  115. package/cjs/api/operations.d.ts +212 -0
  116. package/cjs/api/operations.d.ts.map +1 -0
  117. package/cjs/api/operations.js +488 -0
  118. package/cjs/api/operations.js.map +1 -0
  119. package/cjs/api/operators.d.ts +86 -0
  120. package/cjs/api/operators.d.ts.map +1 -0
  121. package/cjs/api/operators.js +231 -0
  122. package/cjs/api/operators.js.map +1 -0
  123. package/cjs/api/rotations.d.ts +39 -0
  124. package/cjs/api/rotations.d.ts.map +1 -0
  125. package/cjs/api/rotations.js +71 -0
  126. package/cjs/api/rotations.js.map +1 -0
  127. package/cjs/api/sizes.d.ts +53 -0
  128. package/cjs/api/sizes.d.ts.map +1 -0
  129. package/cjs/api/sizes.js +56 -0
  130. package/cjs/api/sizes.js.map +1 -0
  131. package/cjs/api/snapshot/DefaultDocumentSnapshot.d.ts +13 -0
  132. package/cjs/api/snapshot/DefaultDocumentSnapshot.d.ts.map +1 -0
  133. package/cjs/api/snapshot/DefaultDocumentSnapshot.js +28 -0
  134. package/cjs/api/snapshot/DefaultDocumentSnapshot.js.map +1 -0
  135. package/cjs/api/snapshot/DocumentSnapshot.d.ts +11 -0
  136. package/cjs/api/snapshot/DocumentSnapshot.d.ts.map +1 -0
  137. package/cjs/api/snapshot/DocumentSnapshot.js +3 -0
  138. package/cjs/api/snapshot/DocumentSnapshot.js.map +1 -0
  139. package/cjs/api/snapshot/IncrementalDocumentSnapshot.d.ts +16 -0
  140. package/cjs/api/snapshot/IncrementalDocumentSnapshot.d.ts.map +1 -0
  141. package/cjs/api/snapshot/IncrementalDocumentSnapshot.js +44 -0
  142. package/cjs/api/snapshot/IncrementalDocumentSnapshot.js.map +1 -0
  143. package/cjs/api/snapshot/index.d.ts +4 -0
  144. package/cjs/api/snapshot/index.d.ts.map +1 -0
  145. package/cjs/api/snapshot/index.js +7 -0
  146. package/cjs/api/snapshot/index.js.map +1 -0
  147. package/cjs/api/svgPath.d.ts +3 -0
  148. package/cjs/api/svgPath.d.ts.map +1 -0
  149. package/cjs/api/svgPath.js +380 -0
  150. package/cjs/api/svgPath.js.map +1 -0
  151. package/cjs/api/text/alignment.d.ts +6 -0
  152. package/cjs/api/text/alignment.d.ts.map +1 -0
  153. package/cjs/api/text/alignment.js +10 -0
  154. package/cjs/api/text/alignment.js.map +1 -0
  155. package/cjs/api/text/index.d.ts +3 -0
  156. package/cjs/api/text/index.d.ts.map +1 -0
  157. package/cjs/api/text/index.js +6 -0
  158. package/cjs/api/text/index.js.map +1 -0
  159. package/cjs/api/text/layout.d.ts +55 -0
  160. package/cjs/api/text/layout.d.ts.map +1 -0
  161. package/cjs/api/text/layout.js +212 -0
  162. package/cjs/api/text/layout.js.map +1 -0
  163. package/cjs/core/PDFContext.d.ts +93 -0
  164. package/cjs/core/PDFContext.d.ts.map +1 -0
  165. package/cjs/core/PDFContext.js +210 -0
  166. package/cjs/core/PDFContext.js.map +1 -0
  167. package/cjs/core/PDFObjectCopier.d.ts +38 -0
  168. package/cjs/core/PDFObjectCopier.d.ts.map +1 -0
  169. package/cjs/core/PDFObjectCopier.js +119 -0
  170. package/cjs/core/PDFObjectCopier.js.map +1 -0
  171. package/cjs/core/acroform/PDFAcroButton.d.ts +22 -0
  172. package/cjs/core/acroform/PDFAcroButton.d.ts.map +1 -0
  173. package/cjs/core/acroform/PDFAcroButton.js +96 -0
  174. package/cjs/core/acroform/PDFAcroButton.js.map +1 -0
  175. package/cjs/core/acroform/PDFAcroCheckBox.d.ts +14 -0
  176. package/cjs/core/acroform/PDFAcroCheckBox.d.ts.map +1 -0
  177. package/cjs/core/acroform/PDFAcroCheckBox.js +50 -0
  178. package/cjs/core/acroform/PDFAcroCheckBox.js.map +1 -0
  179. package/cjs/core/acroform/PDFAcroChoice.d.ts +21 -0
  180. package/cjs/core/acroform/PDFAcroChoice.d.ts.map +1 -0
  181. package/cjs/core/acroform/PDFAcroChoice.js +127 -0
  182. package/cjs/core/acroform/PDFAcroChoice.js.map +1 -0
  183. package/cjs/core/acroform/PDFAcroComboBox.d.ts +10 -0
  184. package/cjs/core/acroform/PDFAcroComboBox.d.ts.map +1 -0
  185. package/cjs/core/acroform/PDFAcroComboBox.js +26 -0
  186. package/cjs/core/acroform/PDFAcroComboBox.js.map +1 -0
  187. package/cjs/core/acroform/PDFAcroField.d.ts +37 -0
  188. package/cjs/core/acroform/PDFAcroField.d.ts.map +1 -0
  189. package/cjs/core/acroform/PDFAcroField.js +149 -0
  190. package/cjs/core/acroform/PDFAcroField.js.map +1 -0
  191. package/cjs/core/acroform/PDFAcroForm.d.ts +21 -0
  192. package/cjs/core/acroform/PDFAcroForm.d.ts.map +1 -0
  193. package/cjs/core/acroform/PDFAcroForm.js +78 -0
  194. package/cjs/core/acroform/PDFAcroForm.js.map +1 -0
  195. package/cjs/core/acroform/PDFAcroListBox.d.ts +10 -0
  196. package/cjs/core/acroform/PDFAcroListBox.d.ts.map +1 -0
  197. package/cjs/core/acroform/PDFAcroListBox.js +24 -0
  198. package/cjs/core/acroform/PDFAcroListBox.js.map +1 -0
  199. package/cjs/core/acroform/PDFAcroNonTerminal.d.ts +14 -0
  200. package/cjs/core/acroform/PDFAcroNonTerminal.d.ts.map +1 -0
  201. package/cjs/core/acroform/PDFAcroNonTerminal.js +34 -0
  202. package/cjs/core/acroform/PDFAcroNonTerminal.js.map +1 -0
  203. package/cjs/core/acroform/PDFAcroPushButton.d.ts +10 -0
  204. package/cjs/core/acroform/PDFAcroPushButton.d.ts.map +1 -0
  205. package/cjs/core/acroform/PDFAcroPushButton.js +26 -0
  206. package/cjs/core/acroform/PDFAcroPushButton.js.map +1 -0
  207. package/cjs/core/acroform/PDFAcroRadioButton.d.ts +14 -0
  208. package/cjs/core/acroform/PDFAcroRadioButton.d.ts.map +1 -0
  209. package/cjs/core/acroform/PDFAcroRadioButton.js +57 -0
  210. package/cjs/core/acroform/PDFAcroRadioButton.js.map +1 -0
  211. package/cjs/core/acroform/PDFAcroSignature.d.ts +8 -0
  212. package/cjs/core/acroform/PDFAcroSignature.d.ts.map +1 -0
  213. package/cjs/core/acroform/PDFAcroSignature.js +16 -0
  214. package/cjs/core/acroform/PDFAcroSignature.js.map +1 -0
  215. package/cjs/core/acroform/PDFAcroTerminal.d.ts +17 -0
  216. package/cjs/core/acroform/PDFAcroTerminal.d.ts.map +1 -0
  217. package/cjs/core/acroform/PDFAcroTerminal.js +70 -0
  218. package/cjs/core/acroform/PDFAcroTerminal.js.map +1 -0
  219. package/cjs/core/acroform/PDFAcroText.d.ts +23 -0
  220. package/cjs/core/acroform/PDFAcroText.d.ts.map +1 -0
  221. package/cjs/core/acroform/PDFAcroText.js +73 -0
  222. package/cjs/core/acroform/PDFAcroText.js.map +1 -0
  223. package/cjs/core/acroform/flags.d.ts +142 -0
  224. package/cjs/core/acroform/flags.d.ts.map +1 -0
  225. package/cjs/core/acroform/flags.js +150 -0
  226. package/cjs/core/acroform/flags.js.map +1 -0
  227. package/cjs/core/acroform/index.d.ts +16 -0
  228. package/cjs/core/acroform/index.d.ts.map +1 -0
  229. package/cjs/core/acroform/index.js +32 -0
  230. package/cjs/core/acroform/index.js.map +1 -0
  231. package/cjs/core/acroform/utils.d.ts +7 -0
  232. package/cjs/core/acroform/utils.d.ts.map +1 -0
  233. package/cjs/core/acroform/utils.js +127 -0
  234. package/cjs/core/acroform/utils.js.map +1 -0
  235. package/cjs/core/annotation/AppearanceCharacteristics.d.ts +34 -0
  236. package/cjs/core/annotation/AppearanceCharacteristics.d.ts.map +1 -0
  237. package/cjs/core/annotation/AppearanceCharacteristics.js +123 -0
  238. package/cjs/core/annotation/AppearanceCharacteristics.js.map +1 -0
  239. package/cjs/core/annotation/BorderStyle.d.ts +12 -0
  240. package/cjs/core/annotation/BorderStyle.d.ts.map +1 -0
  241. package/cjs/core/annotation/BorderStyle.js +29 -0
  242. package/cjs/core/annotation/BorderStyle.js.map +1 -0
  243. package/cjs/core/annotation/PDFAnnotation.d.ts +52 -0
  244. package/cjs/core/annotation/PDFAnnotation.d.ts.map +1 -0
  245. package/cjs/core/annotation/PDFAnnotation.js +123 -0
  246. package/cjs/core/annotation/PDFAnnotation.js.map +1 -0
  247. package/cjs/core/annotation/PDFWidgetAnnotation.d.ts +27 -0
  248. package/cjs/core/annotation/PDFWidgetAnnotation.d.ts.map +1 -0
  249. package/cjs/core/annotation/PDFWidgetAnnotation.js +110 -0
  250. package/cjs/core/annotation/PDFWidgetAnnotation.js.map +1 -0
  251. package/cjs/core/annotation/flags.d.ts +80 -0
  252. package/cjs/core/annotation/flags.d.ts.map +1 -0
  253. package/cjs/core/annotation/flags.js +85 -0
  254. package/cjs/core/annotation/flags.js.map +1 -0
  255. package/cjs/core/annotation/index.d.ts +5 -0
  256. package/cjs/core/annotation/index.d.ts.map +1 -0
  257. package/cjs/core/annotation/index.js +11 -0
  258. package/cjs/core/annotation/index.js.map +1 -0
  259. package/cjs/core/document/PDFCrossRefSection.d.ts +28 -0
  260. package/cjs/core/document/PDFCrossRefSection.d.ts.map +1 -0
  261. package/cjs/core/document/PDFCrossRefSection.js +124 -0
  262. package/cjs/core/document/PDFCrossRefSection.js.map +1 -0
  263. package/cjs/core/document/PDFHeader.d.ts +11 -0
  264. package/cjs/core/document/PDFHeader.d.ts.map +1 -0
  265. package/cjs/core/document/PDFHeader.js +42 -0
  266. package/cjs/core/document/PDFHeader.js.map +1 -0
  267. package/cjs/core/document/PDFTrailer.d.ts +10 -0
  268. package/cjs/core/document/PDFTrailer.d.ts.map +1 -0
  269. package/cjs/core/document/PDFTrailer.js +43 -0
  270. package/cjs/core/document/PDFTrailer.js.map +1 -0
  271. package/cjs/core/document/PDFTrailerDict.d.ts +11 -0
  272. package/cjs/core/document/PDFTrailerDict.d.ts.map +1 -0
  273. package/cjs/core/document/PDFTrailerDict.js +32 -0
  274. package/cjs/core/document/PDFTrailerDict.js.map +1 -0
  275. package/cjs/core/embedders/CMap.d.ts +4 -0
  276. package/cjs/core/embedders/CMap.d.ts.map +1 -0
  277. package/cjs/core/embedders/CMap.js +43 -0
  278. package/cjs/core/embedders/CMap.js.map +1 -0
  279. package/cjs/core/embedders/CustomFontEmbedder.d.ts +45 -0
  280. package/cjs/core/embedders/CustomFontEmbedder.d.ts.map +1 -0
  281. package/cjs/core/embedders/CustomFontEmbedder.js +240 -0
  282. package/cjs/core/embedders/CustomFontEmbedder.js.map +1 -0
  283. package/cjs/core/embedders/CustomFontSubsetEmbedder.d.ts +21 -0
  284. package/cjs/core/embedders/CustomFontSubsetEmbedder.d.ts.map +1 -0
  285. package/cjs/core/embedders/CustomFontSubsetEmbedder.js +68 -0
  286. package/cjs/core/embedders/CustomFontSubsetEmbedder.js.map +1 -0
  287. package/cjs/core/embedders/FileEmbedder.d.ts +34 -0
  288. package/cjs/core/embedders/FileEmbedder.d.ts.map +1 -0
  289. package/cjs/core/embedders/FileEmbedder.js +75 -0
  290. package/cjs/core/embedders/FileEmbedder.js.map +1 -0
  291. package/cjs/core/embedders/FontFlags.d.ts +14 -0
  292. package/cjs/core/embedders/FontFlags.d.ts.map +1 -0
  293. package/cjs/core/embedders/FontFlags.js +40 -0
  294. package/cjs/core/embedders/FontFlags.js.map +1 -0
  295. package/cjs/core/embedders/JavaScriptEmbedder.d.ts +11 -0
  296. package/cjs/core/embedders/JavaScriptEmbedder.d.ts.map +1 -0
  297. package/cjs/core/embedders/JavaScriptEmbedder.js +36 -0
  298. package/cjs/core/embedders/JavaScriptEmbedder.js.map +1 -0
  299. package/cjs/core/embedders/JpegEmbedder.d.ts +24 -0
  300. package/cjs/core/embedders/JpegEmbedder.d.ts.map +1 -0
  301. package/cjs/core/embedders/JpegEmbedder.js +107 -0
  302. package/cjs/core/embedders/JpegEmbedder.js.map +1 -0
  303. package/cjs/core/embedders/PDFPageEmbedder.d.ts +38 -0
  304. package/cjs/core/embedders/PDFPageEmbedder.d.ts.map +1 -0
  305. package/cjs/core/embedders/PDFPageEmbedder.js +91 -0
  306. package/cjs/core/embedders/PDFPageEmbedder.js.map +1 -0
  307. package/cjs/core/embedders/PngEmbedder.d.ts +20 -0
  308. package/cjs/core/embedders/PngEmbedder.d.ts.map +1 -0
  309. package/cjs/core/embedders/PngEmbedder.js +69 -0
  310. package/cjs/core/embedders/PngEmbedder.js.map +1 -0
  311. package/cjs/core/embedders/StandardFontEmbedder.d.ts +37 -0
  312. package/cjs/core/embedders/StandardFontEmbedder.d.ts.map +1 -0
  313. package/cjs/core/embedders/StandardFontEmbedder.js +98 -0
  314. package/cjs/core/embedders/StandardFontEmbedder.js.map +1 -0
  315. package/cjs/core/errors.d.ts +92 -0
  316. package/cjs/core/errors.d.ts.map +1 -0
  317. package/cjs/core/errors.js +323 -0
  318. package/cjs/core/errors.js.map +1 -0
  319. package/cjs/core/index.d.ts +48 -0
  320. package/cjs/core/index.d.ts.map +1 -0
  321. package/cjs/core/index.js +100 -0
  322. package/cjs/core/index.js.map +1 -0
  323. package/cjs/core/interactive/ViewerPreferences.d.ts +348 -0
  324. package/cjs/core/interactive/ViewerPreferences.d.ts.map +1 -0
  325. package/cjs/core/interactive/ViewerPreferences.js +511 -0
  326. package/cjs/core/interactive/ViewerPreferences.js.map +1 -0
  327. package/cjs/core/objects/PDFArray.d.ts +64 -0
  328. package/cjs/core/objects/PDFArray.d.ts.map +1 -0
  329. package/cjs/core/objects/PDFArray.js +117 -0
  330. package/cjs/core/objects/PDFArray.js.map +1 -0
  331. package/cjs/core/objects/PDFBool.d.ts +14 -0
  332. package/cjs/core/objects/PDFBool.d.ts.map +1 -0
  333. package/cjs/core/objects/PDFBool.js +52 -0
  334. package/cjs/core/objects/PDFBool.js.map +1 -0
  335. package/cjs/core/objects/PDFDict.d.ts +63 -0
  336. package/cjs/core/objects/PDFDict.d.ts.map +1 -0
  337. package/cjs/core/objects/PDFDict.js +143 -0
  338. package/cjs/core/objects/PDFDict.js.map +1 -0
  339. package/cjs/core/objects/PDFHexString.d.ts +17 -0
  340. package/cjs/core/objects/PDFHexString.d.ts.map +1 -0
  341. package/cjs/core/objects/PDFHexString.js +74 -0
  342. package/cjs/core/objects/PDFHexString.js.map +1 -0
  343. package/cjs/core/objects/PDFInvalidObject.d.ts +12 -0
  344. package/cjs/core/objects/PDFInvalidObject.d.ts.map +1 -0
  345. package/cjs/core/objects/PDFInvalidObject.js +32 -0
  346. package/cjs/core/objects/PDFInvalidObject.js.map +1 -0
  347. package/cjs/core/objects/PDFName.d.ts +42 -0
  348. package/cjs/core/objects/PDFName.d.ts.map +1 -0
  349. package/cjs/core/objects/PDFName.js +138 -0
  350. package/cjs/core/objects/PDFName.js.map +1 -0
  351. package/cjs/core/objects/PDFNull.d.ts +11 -0
  352. package/cjs/core/objects/PDFNull.d.ts.map +1 -0
  353. package/cjs/core/objects/PDFNull.js +33 -0
  354. package/cjs/core/objects/PDFNull.js.map +1 -0
  355. package/cjs/core/objects/PDFNumber.d.ts +16 -0
  356. package/cjs/core/objects/PDFNumber.d.ts.map +1 -0
  357. package/cjs/core/objects/PDFNumber.js +38 -0
  358. package/cjs/core/objects/PDFNumber.js.map +1 -0
  359. package/cjs/core/objects/PDFObject.d.ts +10 -0
  360. package/cjs/core/objects/PDFObject.d.ts.map +1 -0
  361. package/cjs/core/objects/PDFObject.js +25 -0
  362. package/cjs/core/objects/PDFObject.js.map +1 -0
  363. package/cjs/core/objects/PDFRawStream.d.ts +15 -0
  364. package/cjs/core/objects/PDFRawStream.d.ts.map +1 -0
  365. package/cjs/core/objects/PDFRawStream.js +34 -0
  366. package/cjs/core/objects/PDFRawStream.js.map +1 -0
  367. package/cjs/core/objects/PDFRef.d.ts +14 -0
  368. package/cjs/core/objects/PDFRef.d.ts.map +1 -0
  369. package/cjs/core/objects/PDFRef.js +47 -0
  370. package/cjs/core/objects/PDFRef.js.map +1 -0
  371. package/cjs/core/objects/PDFStream.d.ts +17 -0
  372. package/cjs/core/objects/PDFStream.d.ts.map +1 -0
  373. package/cjs/core/objects/PDFStream.js +75 -0
  374. package/cjs/core/objects/PDFStream.js.map +1 -0
  375. package/cjs/core/objects/PDFString.d.ts +17 -0
  376. package/cjs/core/objects/PDFString.d.ts.map +1 -0
  377. package/cjs/core/objects/PDFString.js +116 -0
  378. package/cjs/core/objects/PDFString.js.map +1 -0
  379. package/cjs/core/operators/PDFOperator.d.ts +20 -0
  380. package/cjs/core/operators/PDFOperator.d.ts.map +1 -0
  381. package/cjs/core/operators/PDFOperator.js +58 -0
  382. package/cjs/core/operators/PDFOperator.js.map +1 -0
  383. package/cjs/core/operators/PDFOperatorNames.d.ts +77 -0
  384. package/cjs/core/operators/PDFOperatorNames.d.ts.map +1 -0
  385. package/cjs/core/operators/PDFOperatorNames.js +88 -0
  386. package/cjs/core/operators/PDFOperatorNames.js.map +1 -0
  387. package/cjs/core/parser/BaseParser.d.ts +15 -0
  388. package/cjs/core/parser/BaseParser.d.ts.map +1 -0
  389. package/cjs/core/parser/BaseParser.js +110 -0
  390. package/cjs/core/parser/BaseParser.js.map +1 -0
  391. package/cjs/core/parser/ByteStream.d.ts +27 -0
  392. package/cjs/core/parser/ByteStream.d.ts.map +1 -0
  393. package/cjs/core/parser/ByteStream.js +64 -0
  394. package/cjs/core/parser/ByteStream.js.map +1 -0
  395. package/cjs/core/parser/PDFObjectParser.d.ts +30 -0
  396. package/cjs/core/parser/PDFObjectParser.d.ts.map +1 -0
  397. package/cjs/core/parser/PDFObjectParser.js +233 -0
  398. package/cjs/core/parser/PDFObjectParser.js.map +1 -0
  399. package/cjs/core/parser/PDFObjectStreamParser.d.ts +14 -0
  400. package/cjs/core/parser/PDFObjectStreamParser.d.ts.map +1 -0
  401. package/cjs/core/parser/PDFObjectStreamParser.js +70 -0
  402. package/cjs/core/parser/PDFObjectStreamParser.js.map +1 -0
  403. package/cjs/core/parser/PDFParser.d.ts +46 -0
  404. package/cjs/core/parser/PDFParser.d.ts.map +1 -0
  405. package/cjs/core/parser/PDFParser.js +362 -0
  406. package/cjs/core/parser/PDFParser.js.map +1 -0
  407. package/cjs/core/parser/PDFXRefStreamParser.d.ts +22 -0
  408. package/cjs/core/parser/PDFXRefStreamParser.d.ts.map +1 -0
  409. package/cjs/core/parser/PDFXRefStreamParser.js +93 -0
  410. package/cjs/core/parser/PDFXRefStreamParser.js.map +1 -0
  411. package/cjs/core/streams/Ascii85Stream.d.ts +10 -0
  412. package/cjs/core/streams/Ascii85Stream.d.ts.map +1 -0
  413. package/cjs/core/streams/Ascii85Stream.js +87 -0
  414. package/cjs/core/streams/Ascii85Stream.js.map +1 -0
  415. package/cjs/core/streams/AsciiHexStream.d.ts +10 -0
  416. package/cjs/core/streams/AsciiHexStream.d.ts.map +1 -0
  417. package/cjs/core/streams/AsciiHexStream.js +75 -0
  418. package/cjs/core/streams/AsciiHexStream.js.map +1 -0
  419. package/cjs/core/streams/DecodeStream.d.ts +27 -0
  420. package/cjs/core/streams/DecodeStream.d.ts.map +1 -0
  421. package/cjs/core/streams/DecodeStream.js +149 -0
  422. package/cjs/core/streams/DecodeStream.js.map +1 -0
  423. package/cjs/core/streams/FlateStream.d.ts +14 -0
  424. package/cjs/core/streams/FlateStream.d.ts.map +1 -0
  425. package/cjs/core/streams/FlateStream.js +371 -0
  426. package/cjs/core/streams/FlateStream.js.map +1 -0
  427. package/cjs/core/streams/LZWStream.d.ts +13 -0
  428. package/cjs/core/streams/LZWStream.d.ts.map +1 -0
  429. package/cjs/core/streams/LZWStream.js +137 -0
  430. package/cjs/core/streams/LZWStream.js.map +1 -0
  431. package/cjs/core/streams/RunLengthStream.d.ts +9 -0
  432. package/cjs/core/streams/RunLengthStream.d.ts.map +1 -0
  433. package/cjs/core/streams/RunLengthStream.js +55 -0
  434. package/cjs/core/streams/RunLengthStream.js.map +1 -0
  435. package/cjs/core/streams/Stream.d.ts +35 -0
  436. package/cjs/core/streams/Stream.d.ts.map +1 -0
  437. package/cjs/core/streams/Stream.js +106 -0
  438. package/cjs/core/streams/Stream.js.map +1 -0
  439. package/cjs/core/streams/decode.d.ts +4 -0
  440. package/cjs/core/streams/decode.d.ts.map +1 -0
  441. package/cjs/core/streams/decode.js +59 -0
  442. package/cjs/core/streams/decode.js.map +1 -0
  443. package/cjs/core/structures/PDFCatalog.d.ts +28 -0
  444. package/cjs/core/structures/PDFCatalog.d.ts.map +1 -0
  445. package/cjs/core/structures/PDFCatalog.js +79 -0
  446. package/cjs/core/structures/PDFCatalog.js.map +1 -0
  447. package/cjs/core/structures/PDFContentStream.d.ts +16 -0
  448. package/cjs/core/structures/PDFContentStream.d.ts.map +1 -0
  449. package/cjs/core/structures/PDFContentStream.js +60 -0
  450. package/cjs/core/structures/PDFContentStream.js.map +1 -0
  451. package/cjs/core/structures/PDFCrossRefStream.d.ts +54 -0
  452. package/cjs/core/structures/PDFCrossRefStream.d.ts.map +1 -0
  453. package/cjs/core/structures/PDFCrossRefStream.js +187 -0
  454. package/cjs/core/structures/PDFCrossRefStream.js.map +1 -0
  455. package/cjs/core/structures/PDFFlateStream.d.ts +14 -0
  456. package/cjs/core/structures/PDFFlateStream.d.ts.map +1 -0
  457. package/cjs/core/structures/PDFFlateStream.js +35 -0
  458. package/cjs/core/structures/PDFFlateStream.js.map +1 -0
  459. package/cjs/core/structures/PDFObjectStream.d.ts +21 -0
  460. package/cjs/core/structures/PDFObjectStream.d.ts.map +1 -0
  461. package/cjs/core/structures/PDFObjectStream.js +77 -0
  462. package/cjs/core/structures/PDFObjectStream.js.map +1 -0
  463. package/cjs/core/structures/PDFPageLeaf.d.ts +55 -0
  464. package/cjs/core/structures/PDFPageLeaf.d.ts.map +1 -0
  465. package/cjs/core/structures/PDFPageLeaf.js +208 -0
  466. package/cjs/core/structures/PDFPageLeaf.js.map +1 -0
  467. package/cjs/core/structures/PDFPageTree.d.ts +42 -0
  468. package/cjs/core/structures/PDFPageTree.d.ts.map +1 -0
  469. package/cjs/core/structures/PDFPageTree.js +177 -0
  470. package/cjs/core/structures/PDFPageTree.js.map +1 -0
  471. package/cjs/core/syntax/CharCodes.d.ts +62 -0
  472. package/cjs/core/syntax/CharCodes.d.ts.map +1 -0
  473. package/cjs/core/syntax/CharCodes.js +65 -0
  474. package/cjs/core/syntax/CharCodes.js.map +1 -0
  475. package/cjs/core/syntax/Delimiters.d.ts +2 -0
  476. package/cjs/core/syntax/Delimiters.d.ts.map +1 -0
  477. package/cjs/core/syntax/Delimiters.js +17 -0
  478. package/cjs/core/syntax/Delimiters.js.map +1 -0
  479. package/cjs/core/syntax/Irregular.d.ts +2 -0
  480. package/cjs/core/syntax/Irregular.d.ts.map +1 -0
  481. package/cjs/core/syntax/Irregular.js +13 -0
  482. package/cjs/core/syntax/Irregular.js.map +1 -0
  483. package/cjs/core/syntax/Keywords.d.ts +23 -0
  484. package/cjs/core/syntax/Keywords.d.ts.map +1 -0
  485. package/cjs/core/syntax/Keywords.js +84 -0
  486. package/cjs/core/syntax/Keywords.js.map +1 -0
  487. package/cjs/core/syntax/Numeric.d.ts +4 -0
  488. package/cjs/core/syntax/Numeric.d.ts.map +1 -0
  489. package/cjs/core/syntax/Numeric.js +25 -0
  490. package/cjs/core/syntax/Numeric.js.map +1 -0
  491. package/cjs/core/syntax/Whitespace.d.ts +2 -0
  492. package/cjs/core/syntax/Whitespace.d.ts.map +1 -0
  493. package/cjs/core/syntax/Whitespace.js +13 -0
  494. package/cjs/core/syntax/Whitespace.js.map +1 -0
  495. package/cjs/core/writers/PDFStreamWriter.d.ts +22 -0
  496. package/cjs/core/writers/PDFStreamWriter.d.ts.map +1 -0
  497. package/cjs/core/writers/PDFStreamWriter.js +133 -0
  498. package/cjs/core/writers/PDFStreamWriter.js.map +1 -0
  499. package/cjs/core/writers/PDFWriter.d.ts +33 -0
  500. package/cjs/core/writers/PDFWriter.d.ts.map +1 -0
  501. package/cjs/core/writers/PDFWriter.js +164 -0
  502. package/cjs/core/writers/PDFWriter.js.map +1 -0
  503. package/cjs/index.d.ts +5 -0
  504. package/cjs/index.d.ts.map +1 -0
  505. package/cjs/index.js +8 -0
  506. package/cjs/index.js.map +1 -0
  507. package/cjs/types/fontkit.d.ts +582 -0
  508. package/cjs/types/fontkit.d.ts.map +1 -0
  509. package/cjs/types/fontkit.js +3 -0
  510. package/cjs/types/fontkit.js.map +1 -0
  511. package/cjs/types/index.d.ts +2 -0
  512. package/cjs/types/index.d.ts.map +1 -0
  513. package/cjs/types/index.js +3 -0
  514. package/cjs/types/index.js.map +1 -0
  515. package/cjs/types/matrix.d.ts +22 -0
  516. package/cjs/types/matrix.d.ts.map +1 -0
  517. package/cjs/types/matrix.js +5 -0
  518. package/cjs/types/matrix.js.map +1 -0
  519. package/cjs/utils/Cache.d.ts +11 -0
  520. package/cjs/utils/Cache.d.ts.map +1 -0
  521. package/cjs/utils/Cache.js +23 -0
  522. package/cjs/utils/Cache.js.map +1 -0
  523. package/cjs/utils/arrays.d.ts +16 -0
  524. package/cjs/utils/arrays.d.ts.map +1 -0
  525. package/cjs/utils/arrays.js +132 -0
  526. package/cjs/utils/arrays.js.map +1 -0
  527. package/cjs/utils/async.d.ts +6 -0
  528. package/cjs/utils/async.d.ts.map +1 -0
  529. package/cjs/utils/async.js +13 -0
  530. package/cjs/utils/async.js.map +1 -0
  531. package/cjs/utils/base64.d.ts +11 -0
  532. package/cjs/utils/base64.d.ts.map +1 -0
  533. package/cjs/utils/base64.js +87 -0
  534. package/cjs/utils/base64.js.map +1 -0
  535. package/cjs/utils/errors.d.ts +2 -0
  536. package/cjs/utils/errors.d.ts.map +1 -0
  537. package/cjs/utils/errors.js +7 -0
  538. package/cjs/utils/errors.js.map +1 -0
  539. package/cjs/utils/index.d.ts +12 -0
  540. package/cjs/utils/index.d.ts.map +1 -0
  541. package/cjs/utils/index.js +16 -0
  542. package/cjs/utils/index.js.map +1 -0
  543. package/cjs/utils/numbers.d.ts +24 -0
  544. package/cjs/utils/numbers.d.ts.map +1 -0
  545. package/cjs/utils/numbers.js +57 -0
  546. package/cjs/utils/numbers.js.map +1 -0
  547. package/cjs/utils/objects.d.ts +16 -0
  548. package/cjs/utils/objects.d.ts.map +1 -0
  549. package/cjs/utils/objects.js +11 -0
  550. package/cjs/utils/objects.js.map +1 -0
  551. package/cjs/utils/pdfDocEncoding.d.ts +8 -0
  552. package/cjs/utils/pdfDocEncoding.d.ts.map +1 -0
  553. package/cjs/utils/pdfDocEncoding.js +69 -0
  554. package/cjs/utils/pdfDocEncoding.js.map +1 -0
  555. package/cjs/utils/png.d.ts +18 -0
  556. package/cjs/utils/png.d.ts.map +1 -0
  557. package/cjs/utils/png.js +63 -0
  558. package/cjs/utils/png.js.map +1 -0
  559. package/cjs/utils/rng.d.ts +14 -0
  560. package/cjs/utils/rng.d.ts.map +1 -0
  561. package/cjs/utils/rng.js +23 -0
  562. package/cjs/utils/rng.js.map +1 -0
  563. package/cjs/utils/strings.d.ts +25 -0
  564. package/cjs/utils/strings.d.ts.map +1 -0
  565. package/cjs/utils/strings.js +141 -0
  566. package/cjs/utils/strings.js.map +1 -0
  567. package/cjs/utils/unicode.d.ts +187 -0
  568. package/cjs/utils/unicode.d.ts.map +1 -0
  569. package/cjs/utils/unicode.js +370 -0
  570. package/cjs/utils/unicode.js.map +1 -0
  571. package/cjs/utils/validators.d.ts +27 -0
  572. package/cjs/utils/validators.d.ts.map +1 -0
  573. package/cjs/utils/validators.js +183 -0
  574. package/cjs/utils/validators.js.map +1 -0
  575. package/dist/pdf-lib.esm.js +39613 -0
  576. package/dist/pdf-lib.esm.js.map +1 -0
  577. package/dist/pdf-lib.esm.min.js +16 -0
  578. package/dist/pdf-lib.esm.min.js.map +1 -0
  579. package/dist/pdf-lib.js +39886 -0
  580. package/dist/pdf-lib.js.map +1 -0
  581. package/dist/pdf-lib.min.js +16 -0
  582. package/dist/pdf-lib.min.js.map +1 -0
  583. package/es/api/Embeddable.d.ts +8 -0
  584. package/es/api/Embeddable.d.ts.map +1 -0
  585. package/es/api/Embeddable.js +1 -0
  586. package/es/api/Embeddable.js.map +1 -0
  587. package/es/api/PDFDocument.d.ts +800 -0
  588. package/es/api/PDFDocument.d.ts.map +1 -0
  589. package/es/api/PDFDocument.js +1452 -0
  590. package/es/api/PDFDocument.js.map +1 -0
  591. package/es/api/PDFDocumentOptions.d.ts +43 -0
  592. package/es/api/PDFDocumentOptions.d.ts.map +1 -0
  593. package/es/api/PDFDocumentOptions.js +8 -0
  594. package/es/api/PDFDocumentOptions.js.map +1 -0
  595. package/es/api/PDFEmbeddedFile.d.ts +39 -0
  596. package/es/api/PDFEmbeddedFile.d.ts.map +1 -0
  597. package/es/api/PDFEmbeddedFile.js +82 -0
  598. package/es/api/PDFEmbeddedFile.js.map +1 -0
  599. package/es/api/PDFEmbeddedPage.d.ts +74 -0
  600. package/es/api/PDFEmbeddedPage.d.ts.map +1 -0
  601. package/es/api/PDFEmbeddedPage.js +93 -0
  602. package/es/api/PDFEmbeddedPage.js.map +1 -0
  603. package/es/api/PDFFont.d.ts +95 -0
  604. package/es/api/PDFFont.d.ts.map +1 -0
  605. package/es/api/PDFFont.js +141 -0
  606. package/es/api/PDFFont.js.map +1 -0
  607. package/es/api/PDFImage.d.ts +96 -0
  608. package/es/api/PDFImage.d.ts.map +1 -0
  609. package/es/api/PDFImage.js +130 -0
  610. package/es/api/PDFImage.js.map +1 -0
  611. package/es/api/PDFJavaScript.d.ts +39 -0
  612. package/es/api/PDFJavaScript.d.ts.map +1 -0
  613. package/es/api/PDFJavaScript.js +71 -0
  614. package/es/api/PDFJavaScript.js.map +1 -0
  615. package/es/api/PDFPage.d.ts +898 -0
  616. package/es/api/PDFPage.d.ts.map +1 -0
  617. package/es/api/PDFPage.js +1440 -0
  618. package/es/api/PDFPage.js.map +1 -0
  619. package/es/api/PDFPageOptions.d.ts +155 -0
  620. package/es/api/PDFPageOptions.d.ts.map +1 -0
  621. package/es/api/PDFPageOptions.js +16 -0
  622. package/es/api/PDFPageOptions.js.map +1 -0
  623. package/es/api/StandardFonts.d.ts +17 -0
  624. package/es/api/StandardFonts.d.ts.map +1 -0
  625. package/es/api/StandardFonts.js +18 -0
  626. package/es/api/StandardFonts.js.map +1 -0
  627. package/es/api/colors.d.ts +31 -0
  628. package/es/api/colors.d.ts.map +1 -0
  629. package/es/api/colors.js +56 -0
  630. package/es/api/colors.js.map +1 -0
  631. package/es/api/errors.d.ts +43 -0
  632. package/es/api/errors.d.ts.map +1 -0
  633. package/es/api/errors.js +165 -0
  634. package/es/api/errors.js.map +1 -0
  635. package/es/api/form/PDFButton.d.ts +138 -0
  636. package/es/api/form/PDFButton.d.ts.map +1 -0
  637. package/es/api/form/PDFButton.js +218 -0
  638. package/es/api/form/PDFButton.js.map +1 -0
  639. package/es/api/form/PDFCheckBox.d.ts +143 -0
  640. package/es/api/form/PDFCheckBox.d.ts.map +1 -0
  641. package/es/api/form/PDFCheckBox.js +234 -0
  642. package/es/api/form/PDFCheckBox.js.map +1 -0
  643. package/es/api/form/PDFDropdown.d.ts +403 -0
  644. package/es/api/form/PDFDropdown.d.ts.map +1 -0
  645. package/es/api/form/PDFDropdown.js +578 -0
  646. package/es/api/form/PDFDropdown.js.map +1 -0
  647. package/es/api/form/PDFField.d.ts +204 -0
  648. package/es/api/form/PDFField.d.ts.map +1 -0
  649. package/es/api/form/PDFField.js +381 -0
  650. package/es/api/form/PDFField.js.map +1 -0
  651. package/es/api/form/PDFForm.d.ts +412 -0
  652. package/es/api/form/PDFForm.d.ts.map +1 -0
  653. package/es/api/form/PDFForm.js +724 -0
  654. package/es/api/form/PDFForm.js.map +1 -0
  655. package/es/api/form/PDFOptionList.d.ts +336 -0
  656. package/es/api/form/PDFOptionList.d.ts.map +1 -0
  657. package/es/api/form/PDFOptionList.js +497 -0
  658. package/es/api/form/PDFOptionList.js.map +1 -0
  659. package/es/api/form/PDFRadioGroup.d.ts +253 -0
  660. package/es/api/form/PDFRadioGroup.d.ts.map +1 -0
  661. package/es/api/form/PDFRadioGroup.js +413 -0
  662. package/es/api/form/PDFRadioGroup.js.map +1 -0
  663. package/es/api/form/PDFSignature.d.ts +30 -0
  664. package/es/api/form/PDFSignature.d.ts.map +1 -0
  665. package/es/api/form/PDFSignature.js +41 -0
  666. package/es/api/form/PDFSignature.js.map +1 -0
  667. package/es/api/form/PDFTextField.d.ts +538 -0
  668. package/es/api/form/PDFTextField.d.ts.map +1 -0
  669. package/es/api/form/PDFTextField.js +737 -0
  670. package/es/api/form/PDFTextField.js.map +1 -0
  671. package/es/api/form/appearances.d.ts +42 -0
  672. package/es/api/form/appearances.d.ts.map +1 -0
  673. package/es/api/form/appearances.js +418 -0
  674. package/es/api/form/appearances.js.map +1 -0
  675. package/es/api/form/index.d.ts +11 -0
  676. package/es/api/form/index.d.ts.map +1 -0
  677. package/es/api/form/index.js +11 -0
  678. package/es/api/form/index.js.map +1 -0
  679. package/es/api/image/alignment.d.ts +6 -0
  680. package/es/api/image/alignment.d.ts.map +1 -0
  681. package/es/api/image/alignment.js +7 -0
  682. package/es/api/image/alignment.js.map +1 -0
  683. package/es/api/image/index.d.ts +2 -0
  684. package/es/api/image/index.d.ts.map +1 -0
  685. package/es/api/image/index.js +2 -0
  686. package/es/api/image/index.js.map +1 -0
  687. package/es/api/index.d.ts +22 -0
  688. package/es/api/index.d.ts.map +1 -0
  689. package/es/api/index.js +21 -0
  690. package/es/api/index.js.map +1 -0
  691. package/es/api/objects.d.ts +5 -0
  692. package/es/api/objects.d.ts.map +1 -0
  693. package/es/api/objects.js +11 -0
  694. package/es/api/objects.js.map +1 -0
  695. package/es/api/operations.d.ts +212 -0
  696. package/es/api/operations.d.ts.map +1 -0
  697. package/es/api/operations.js +485 -0
  698. package/es/api/operations.js.map +1 -0
  699. package/es/api/operators.d.ts +86 -0
  700. package/es/api/operators.d.ts.map +1 -0
  701. package/es/api/operators.js +228 -0
  702. package/es/api/operators.js.map +1 -0
  703. package/es/api/rotations.d.ts +39 -0
  704. package/es/api/rotations.d.ts.map +1 -0
  705. package/es/api/rotations.js +68 -0
  706. package/es/api/rotations.js.map +1 -0
  707. package/es/api/sizes.d.ts +53 -0
  708. package/es/api/sizes.d.ts.map +1 -0
  709. package/es/api/sizes.js +53 -0
  710. package/es/api/sizes.js.map +1 -0
  711. package/es/api/snapshot/DefaultDocumentSnapshot.d.ts +13 -0
  712. package/es/api/snapshot/DefaultDocumentSnapshot.d.ts.map +1 -0
  713. package/es/api/snapshot/DefaultDocumentSnapshot.js +25 -0
  714. package/es/api/snapshot/DefaultDocumentSnapshot.js.map +1 -0
  715. package/es/api/snapshot/DocumentSnapshot.d.ts +11 -0
  716. package/es/api/snapshot/DocumentSnapshot.d.ts.map +1 -0
  717. package/es/api/snapshot/DocumentSnapshot.js +1 -0
  718. package/es/api/snapshot/DocumentSnapshot.js.map +1 -0
  719. package/es/api/snapshot/IncrementalDocumentSnapshot.d.ts +16 -0
  720. package/es/api/snapshot/IncrementalDocumentSnapshot.d.ts.map +1 -0
  721. package/es/api/snapshot/IncrementalDocumentSnapshot.js +41 -0
  722. package/es/api/snapshot/IncrementalDocumentSnapshot.js.map +1 -0
  723. package/es/api/snapshot/index.d.ts +4 -0
  724. package/es/api/snapshot/index.d.ts.map +1 -0
  725. package/es/api/snapshot/index.js +4 -0
  726. package/es/api/snapshot/index.js.map +1 -0
  727. package/es/api/svgPath.d.ts +3 -0
  728. package/es/api/svgPath.d.ts.map +1 -0
  729. package/es/api/svgPath.js +377 -0
  730. package/es/api/svgPath.js.map +1 -0
  731. package/es/api/text/alignment.d.ts +6 -0
  732. package/es/api/text/alignment.d.ts.map +1 -0
  733. package/es/api/text/alignment.js +7 -0
  734. package/es/api/text/alignment.js.map +1 -0
  735. package/es/api/text/index.d.ts +3 -0
  736. package/es/api/text/index.d.ts.map +1 -0
  737. package/es/api/text/index.js +3 -0
  738. package/es/api/text/index.js.map +1 -0
  739. package/es/api/text/layout.d.ts +55 -0
  740. package/es/api/text/layout.d.ts.map +1 -0
  741. package/es/api/text/layout.js +209 -0
  742. package/es/api/text/layout.js.map +1 -0
  743. package/es/core/PDFContext.d.ts +93 -0
  744. package/es/core/PDFContext.d.ts.map +1 -0
  745. package/es/core/PDFContext.js +208 -0
  746. package/es/core/PDFContext.js.map +1 -0
  747. package/es/core/PDFObjectCopier.d.ts +38 -0
  748. package/es/core/PDFObjectCopier.d.ts.map +1 -0
  749. package/es/core/PDFObjectCopier.js +116 -0
  750. package/es/core/PDFObjectCopier.js.map +1 -0
  751. package/es/core/acroform/PDFAcroButton.d.ts +22 -0
  752. package/es/core/acroform/PDFAcroButton.d.ts.map +1 -0
  753. package/es/core/acroform/PDFAcroButton.js +94 -0
  754. package/es/core/acroform/PDFAcroButton.js.map +1 -0
  755. package/es/core/acroform/PDFAcroCheckBox.d.ts +14 -0
  756. package/es/core/acroform/PDFAcroCheckBox.d.ts.map +1 -0
  757. package/es/core/acroform/PDFAcroCheckBox.js +48 -0
  758. package/es/core/acroform/PDFAcroCheckBox.js.map +1 -0
  759. package/es/core/acroform/PDFAcroChoice.d.ts +21 -0
  760. package/es/core/acroform/PDFAcroChoice.d.ts.map +1 -0
  761. package/es/core/acroform/PDFAcroChoice.js +125 -0
  762. package/es/core/acroform/PDFAcroChoice.js.map +1 -0
  763. package/es/core/acroform/PDFAcroComboBox.d.ts +10 -0
  764. package/es/core/acroform/PDFAcroComboBox.d.ts.map +1 -0
  765. package/es/core/acroform/PDFAcroComboBox.js +24 -0
  766. package/es/core/acroform/PDFAcroComboBox.js.map +1 -0
  767. package/es/core/acroform/PDFAcroField.d.ts +37 -0
  768. package/es/core/acroform/PDFAcroField.d.ts.map +1 -0
  769. package/es/core/acroform/PDFAcroField.js +146 -0
  770. package/es/core/acroform/PDFAcroField.js.map +1 -0
  771. package/es/core/acroform/PDFAcroForm.d.ts +21 -0
  772. package/es/core/acroform/PDFAcroForm.d.ts.map +1 -0
  773. package/es/core/acroform/PDFAcroForm.js +75 -0
  774. package/es/core/acroform/PDFAcroForm.js.map +1 -0
  775. package/es/core/acroform/PDFAcroListBox.d.ts +10 -0
  776. package/es/core/acroform/PDFAcroListBox.d.ts.map +1 -0
  777. package/es/core/acroform/PDFAcroListBox.js +22 -0
  778. package/es/core/acroform/PDFAcroListBox.js.map +1 -0
  779. package/es/core/acroform/PDFAcroNonTerminal.d.ts +14 -0
  780. package/es/core/acroform/PDFAcroNonTerminal.d.ts.map +1 -0
  781. package/es/core/acroform/PDFAcroNonTerminal.js +32 -0
  782. package/es/core/acroform/PDFAcroNonTerminal.js.map +1 -0
  783. package/es/core/acroform/PDFAcroPushButton.d.ts +10 -0
  784. package/es/core/acroform/PDFAcroPushButton.d.ts.map +1 -0
  785. package/es/core/acroform/PDFAcroPushButton.js +24 -0
  786. package/es/core/acroform/PDFAcroPushButton.js.map +1 -0
  787. package/es/core/acroform/PDFAcroRadioButton.d.ts +14 -0
  788. package/es/core/acroform/PDFAcroRadioButton.d.ts.map +1 -0
  789. package/es/core/acroform/PDFAcroRadioButton.js +55 -0
  790. package/es/core/acroform/PDFAcroRadioButton.js.map +1 -0
  791. package/es/core/acroform/PDFAcroSignature.d.ts +8 -0
  792. package/es/core/acroform/PDFAcroSignature.d.ts.map +1 -0
  793. package/es/core/acroform/PDFAcroSignature.js +14 -0
  794. package/es/core/acroform/PDFAcroSignature.js.map +1 -0
  795. package/es/core/acroform/PDFAcroTerminal.d.ts +17 -0
  796. package/es/core/acroform/PDFAcroTerminal.d.ts.map +1 -0
  797. package/es/core/acroform/PDFAcroTerminal.js +68 -0
  798. package/es/core/acroform/PDFAcroTerminal.js.map +1 -0
  799. package/es/core/acroform/PDFAcroText.d.ts +23 -0
  800. package/es/core/acroform/PDFAcroText.d.ts.map +1 -0
  801. package/es/core/acroform/PDFAcroText.js +71 -0
  802. package/es/core/acroform/PDFAcroText.js.map +1 -0
  803. package/es/core/acroform/flags.d.ts +142 -0
  804. package/es/core/acroform/flags.d.ts.map +1 -0
  805. package/es/core/acroform/flags.js +147 -0
  806. package/es/core/acroform/flags.js.map +1 -0
  807. package/es/core/acroform/index.d.ts +16 -0
  808. package/es/core/acroform/index.d.ts.map +1 -0
  809. package/es/core/acroform/index.js +16 -0
  810. package/es/core/acroform/index.js.map +1 -0
  811. package/es/core/acroform/utils.d.ts +7 -0
  812. package/es/core/acroform/utils.d.ts.map +1 -0
  813. package/es/core/acroform/utils.js +123 -0
  814. package/es/core/acroform/utils.js.map +1 -0
  815. package/es/core/annotation/AppearanceCharacteristics.d.ts +34 -0
  816. package/es/core/annotation/AppearanceCharacteristics.d.ts.map +1 -0
  817. package/es/core/annotation/AppearanceCharacteristics.js +120 -0
  818. package/es/core/annotation/AppearanceCharacteristics.js.map +1 -0
  819. package/es/core/annotation/BorderStyle.d.ts +12 -0
  820. package/es/core/annotation/BorderStyle.d.ts.map +1 -0
  821. package/es/core/annotation/BorderStyle.js +26 -0
  822. package/es/core/annotation/BorderStyle.js.map +1 -0
  823. package/es/core/annotation/PDFAnnotation.d.ts +52 -0
  824. package/es/core/annotation/PDFAnnotation.d.ts.map +1 -0
  825. package/es/core/annotation/PDFAnnotation.js +120 -0
  826. package/es/core/annotation/PDFAnnotation.js.map +1 -0
  827. package/es/core/annotation/PDFWidgetAnnotation.d.ts +27 -0
  828. package/es/core/annotation/PDFWidgetAnnotation.d.ts.map +1 -0
  829. package/es/core/annotation/PDFWidgetAnnotation.js +108 -0
  830. package/es/core/annotation/PDFWidgetAnnotation.js.map +1 -0
  831. package/es/core/annotation/flags.d.ts +80 -0
  832. package/es/core/annotation/flags.d.ts.map +1 -0
  833. package/es/core/annotation/flags.js +82 -0
  834. package/es/core/annotation/flags.js.map +1 -0
  835. package/es/core/annotation/index.d.ts +5 -0
  836. package/es/core/annotation/index.d.ts.map +1 -0
  837. package/es/core/annotation/index.js +5 -0
  838. package/es/core/annotation/index.js.map +1 -0
  839. package/es/core/document/PDFCrossRefSection.d.ts +28 -0
  840. package/es/core/document/PDFCrossRefSection.d.ts.map +1 -0
  841. package/es/core/document/PDFCrossRefSection.js +121 -0
  842. package/es/core/document/PDFCrossRefSection.js.map +1 -0
  843. package/es/core/document/PDFHeader.d.ts +11 -0
  844. package/es/core/document/PDFHeader.d.ts.map +1 -0
  845. package/es/core/document/PDFHeader.js +39 -0
  846. package/es/core/document/PDFHeader.js.map +1 -0
  847. package/es/core/document/PDFTrailer.d.ts +10 -0
  848. package/es/core/document/PDFTrailer.d.ts.map +1 -0
  849. package/es/core/document/PDFTrailer.js +40 -0
  850. package/es/core/document/PDFTrailer.js.map +1 -0
  851. package/es/core/document/PDFTrailerDict.d.ts +11 -0
  852. package/es/core/document/PDFTrailerDict.d.ts.map +1 -0
  853. package/es/core/document/PDFTrailerDict.js +29 -0
  854. package/es/core/document/PDFTrailerDict.js.map +1 -0
  855. package/es/core/embedders/CMap.d.ts +4 -0
  856. package/es/core/embedders/CMap.d.ts.map +1 -0
  857. package/es/core/embedders/CMap.js +40 -0
  858. package/es/core/embedders/CMap.js.map +1 -0
  859. package/es/core/embedders/CustomFontEmbedder.d.ts +45 -0
  860. package/es/core/embedders/CustomFontEmbedder.d.ts.map +1 -0
  861. package/es/core/embedders/CustomFontEmbedder.js +238 -0
  862. package/es/core/embedders/CustomFontEmbedder.js.map +1 -0
  863. package/es/core/embedders/CustomFontSubsetEmbedder.d.ts +21 -0
  864. package/es/core/embedders/CustomFontSubsetEmbedder.d.ts.map +1 -0
  865. package/es/core/embedders/CustomFontSubsetEmbedder.js +66 -0
  866. package/es/core/embedders/CustomFontSubsetEmbedder.js.map +1 -0
  867. package/es/core/embedders/FileEmbedder.d.ts +34 -0
  868. package/es/core/embedders/FileEmbedder.d.ts.map +1 -0
  869. package/es/core/embedders/FileEmbedder.js +72 -0
  870. package/es/core/embedders/FileEmbedder.js.map +1 -0
  871. package/es/core/embedders/FontFlags.d.ts +14 -0
  872. package/es/core/embedders/FontFlags.d.ts.map +1 -0
  873. package/es/core/embedders/FontFlags.js +37 -0
  874. package/es/core/embedders/FontFlags.js.map +1 -0
  875. package/es/core/embedders/JavaScriptEmbedder.d.ts +11 -0
  876. package/es/core/embedders/JavaScriptEmbedder.d.ts.map +1 -0
  877. package/es/core/embedders/JavaScriptEmbedder.js +34 -0
  878. package/es/core/embedders/JavaScriptEmbedder.js.map +1 -0
  879. package/es/core/embedders/JpegEmbedder.d.ts +24 -0
  880. package/es/core/embedders/JpegEmbedder.d.ts.map +1 -0
  881. package/es/core/embedders/JpegEmbedder.js +105 -0
  882. package/es/core/embedders/JpegEmbedder.js.map +1 -0
  883. package/es/core/embedders/PDFPageEmbedder.d.ts +38 -0
  884. package/es/core/embedders/PDFPageEmbedder.d.ts.map +1 -0
  885. package/es/core/embedders/PDFPageEmbedder.js +89 -0
  886. package/es/core/embedders/PDFPageEmbedder.js.map +1 -0
  887. package/es/core/embedders/PngEmbedder.d.ts +20 -0
  888. package/es/core/embedders/PngEmbedder.d.ts.map +1 -0
  889. package/es/core/embedders/PngEmbedder.js +67 -0
  890. package/es/core/embedders/PngEmbedder.js.map +1 -0
  891. package/es/core/embedders/StandardFontEmbedder.d.ts +37 -0
  892. package/es/core/embedders/StandardFontEmbedder.d.ts.map +1 -0
  893. package/es/core/embedders/StandardFontEmbedder.js +95 -0
  894. package/es/core/embedders/StandardFontEmbedder.js.map +1 -0
  895. package/es/core/errors.d.ts +92 -0
  896. package/es/core/errors.d.ts.map +1 -0
  897. package/es/core/errors.js +320 -0
  898. package/es/core/errors.js.map +1 -0
  899. package/es/core/index.d.ts +48 -0
  900. package/es/core/index.d.ts.map +1 -0
  901. package/es/core/index.js +48 -0
  902. package/es/core/index.js.map +1 -0
  903. package/es/core/interactive/ViewerPreferences.d.ts +348 -0
  904. package/es/core/interactive/ViewerPreferences.d.ts.map +1 -0
  905. package/es/core/interactive/ViewerPreferences.js +507 -0
  906. package/es/core/interactive/ViewerPreferences.js.map +1 -0
  907. package/es/core/objects/PDFArray.d.ts +64 -0
  908. package/es/core/objects/PDFArray.d.ts.map +1 -0
  909. package/es/core/objects/PDFArray.js +115 -0
  910. package/es/core/objects/PDFArray.js.map +1 -0
  911. package/es/core/objects/PDFBool.d.ts +14 -0
  912. package/es/core/objects/PDFBool.d.ts.map +1 -0
  913. package/es/core/objects/PDFBool.js +50 -0
  914. package/es/core/objects/PDFBool.js.map +1 -0
  915. package/es/core/objects/PDFDict.d.ts +63 -0
  916. package/es/core/objects/PDFDict.d.ts.map +1 -0
  917. package/es/core/objects/PDFDict.js +141 -0
  918. package/es/core/objects/PDFDict.js.map +1 -0
  919. package/es/core/objects/PDFHexString.d.ts +17 -0
  920. package/es/core/objects/PDFHexString.d.ts.map +1 -0
  921. package/es/core/objects/PDFHexString.js +72 -0
  922. package/es/core/objects/PDFHexString.js.map +1 -0
  923. package/es/core/objects/PDFInvalidObject.d.ts +12 -0
  924. package/es/core/objects/PDFInvalidObject.d.ts.map +1 -0
  925. package/es/core/objects/PDFInvalidObject.js +30 -0
  926. package/es/core/objects/PDFInvalidObject.js.map +1 -0
  927. package/es/core/objects/PDFName.d.ts +42 -0
  928. package/es/core/objects/PDFName.d.ts.map +1 -0
  929. package/es/core/objects/PDFName.js +136 -0
  930. package/es/core/objects/PDFName.js.map +1 -0
  931. package/es/core/objects/PDFNull.d.ts +11 -0
  932. package/es/core/objects/PDFNull.d.ts.map +1 -0
  933. package/es/core/objects/PDFNull.js +31 -0
  934. package/es/core/objects/PDFNull.js.map +1 -0
  935. package/es/core/objects/PDFNumber.d.ts +16 -0
  936. package/es/core/objects/PDFNumber.d.ts.map +1 -0
  937. package/es/core/objects/PDFNumber.js +36 -0
  938. package/es/core/objects/PDFNumber.js.map +1 -0
  939. package/es/core/objects/PDFObject.d.ts +10 -0
  940. package/es/core/objects/PDFObject.d.ts.map +1 -0
  941. package/es/core/objects/PDFObject.js +23 -0
  942. package/es/core/objects/PDFObject.js.map +1 -0
  943. package/es/core/objects/PDFRawStream.d.ts +15 -0
  944. package/es/core/objects/PDFRawStream.d.ts.map +1 -0
  945. package/es/core/objects/PDFRawStream.js +32 -0
  946. package/es/core/objects/PDFRawStream.js.map +1 -0
  947. package/es/core/objects/PDFRef.d.ts +14 -0
  948. package/es/core/objects/PDFRef.d.ts.map +1 -0
  949. package/es/core/objects/PDFRef.js +45 -0
  950. package/es/core/objects/PDFRef.js.map +1 -0
  951. package/es/core/objects/PDFStream.d.ts +17 -0
  952. package/es/core/objects/PDFStream.d.ts.map +1 -0
  953. package/es/core/objects/PDFStream.js +73 -0
  954. package/es/core/objects/PDFStream.js.map +1 -0
  955. package/es/core/objects/PDFString.d.ts +17 -0
  956. package/es/core/objects/PDFString.d.ts.map +1 -0
  957. package/es/core/objects/PDFString.js +114 -0
  958. package/es/core/objects/PDFString.js.map +1 -0
  959. package/es/core/operators/PDFOperator.d.ts +20 -0
  960. package/es/core/operators/PDFOperator.d.ts.map +1 -0
  961. package/es/core/operators/PDFOperator.js +55 -0
  962. package/es/core/operators/PDFOperator.js.map +1 -0
  963. package/es/core/operators/PDFOperatorNames.d.ts +77 -0
  964. package/es/core/operators/PDFOperatorNames.d.ts.map +1 -0
  965. package/es/core/operators/PDFOperatorNames.js +86 -0
  966. package/es/core/operators/PDFOperatorNames.js.map +1 -0
  967. package/es/core/parser/BaseParser.d.ts +15 -0
  968. package/es/core/parser/BaseParser.d.ts.map +1 -0
  969. package/es/core/parser/BaseParser.js +107 -0
  970. package/es/core/parser/BaseParser.js.map +1 -0
  971. package/es/core/parser/ByteStream.d.ts +27 -0
  972. package/es/core/parser/ByteStream.d.ts.map +1 -0
  973. package/es/core/parser/ByteStream.js +61 -0
  974. package/es/core/parser/ByteStream.js.map +1 -0
  975. package/es/core/parser/PDFObjectParser.d.ts +30 -0
  976. package/es/core/parser/PDFObjectParser.d.ts.map +1 -0
  977. package/es/core/parser/PDFObjectParser.js +231 -0
  978. package/es/core/parser/PDFObjectParser.js.map +1 -0
  979. package/es/core/parser/PDFObjectStreamParser.d.ts +14 -0
  980. package/es/core/parser/PDFObjectStreamParser.d.ts.map +1 -0
  981. package/es/core/parser/PDFObjectStreamParser.js +68 -0
  982. package/es/core/parser/PDFObjectStreamParser.js.map +1 -0
  983. package/es/core/parser/PDFParser.d.ts +46 -0
  984. package/es/core/parser/PDFParser.d.ts.map +1 -0
  985. package/es/core/parser/PDFParser.js +360 -0
  986. package/es/core/parser/PDFParser.js.map +1 -0
  987. package/es/core/parser/PDFXRefStreamParser.d.ts +22 -0
  988. package/es/core/parser/PDFXRefStreamParser.d.ts.map +1 -0
  989. package/es/core/parser/PDFXRefStreamParser.js +90 -0
  990. package/es/core/parser/PDFXRefStreamParser.js.map +1 -0
  991. package/es/core/streams/Ascii85Stream.d.ts +10 -0
  992. package/es/core/streams/Ascii85Stream.d.ts.map +1 -0
  993. package/es/core/streams/Ascii85Stream.js +85 -0
  994. package/es/core/streams/Ascii85Stream.js.map +1 -0
  995. package/es/core/streams/AsciiHexStream.d.ts +10 -0
  996. package/es/core/streams/AsciiHexStream.d.ts.map +1 -0
  997. package/es/core/streams/AsciiHexStream.js +73 -0
  998. package/es/core/streams/AsciiHexStream.js.map +1 -0
  999. package/es/core/streams/DecodeStream.d.ts +27 -0
  1000. package/es/core/streams/DecodeStream.d.ts.map +1 -0
  1001. package/es/core/streams/DecodeStream.js +146 -0
  1002. package/es/core/streams/DecodeStream.js.map +1 -0
  1003. package/es/core/streams/FlateStream.d.ts +14 -0
  1004. package/es/core/streams/FlateStream.d.ts.map +1 -0
  1005. package/es/core/streams/FlateStream.js +369 -0
  1006. package/es/core/streams/FlateStream.js.map +1 -0
  1007. package/es/core/streams/LZWStream.d.ts +13 -0
  1008. package/es/core/streams/LZWStream.d.ts.map +1 -0
  1009. package/es/core/streams/LZWStream.js +135 -0
  1010. package/es/core/streams/LZWStream.js.map +1 -0
  1011. package/es/core/streams/RunLengthStream.d.ts +9 -0
  1012. package/es/core/streams/RunLengthStream.d.ts.map +1 -0
  1013. package/es/core/streams/RunLengthStream.js +53 -0
  1014. package/es/core/streams/RunLengthStream.js.map +1 -0
  1015. package/es/core/streams/Stream.d.ts +35 -0
  1016. package/es/core/streams/Stream.d.ts.map +1 -0
  1017. package/es/core/streams/Stream.js +104 -0
  1018. package/es/core/streams/Stream.js.map +1 -0
  1019. package/es/core/streams/decode.d.ts +4 -0
  1020. package/es/core/streams/decode.d.ts.map +1 -0
  1021. package/es/core/streams/decode.js +55 -0
  1022. package/es/core/streams/decode.js.map +1 -0
  1023. package/es/core/structures/PDFCatalog.d.ts +28 -0
  1024. package/es/core/structures/PDFCatalog.d.ts.map +1 -0
  1025. package/es/core/structures/PDFCatalog.js +77 -0
  1026. package/es/core/structures/PDFCatalog.js.map +1 -0
  1027. package/es/core/structures/PDFContentStream.d.ts +16 -0
  1028. package/es/core/structures/PDFContentStream.d.ts.map +1 -0
  1029. package/es/core/structures/PDFContentStream.js +58 -0
  1030. package/es/core/structures/PDFContentStream.js.map +1 -0
  1031. package/es/core/structures/PDFCrossRefStream.d.ts +54 -0
  1032. package/es/core/structures/PDFCrossRefStream.d.ts.map +1 -0
  1033. package/es/core/structures/PDFCrossRefStream.js +184 -0
  1034. package/es/core/structures/PDFCrossRefStream.js.map +1 -0
  1035. package/es/core/structures/PDFFlateStream.d.ts +14 -0
  1036. package/es/core/structures/PDFFlateStream.d.ts.map +1 -0
  1037. package/es/core/structures/PDFFlateStream.js +33 -0
  1038. package/es/core/structures/PDFFlateStream.js.map +1 -0
  1039. package/es/core/structures/PDFObjectStream.d.ts +21 -0
  1040. package/es/core/structures/PDFObjectStream.d.ts.map +1 -0
  1041. package/es/core/structures/PDFObjectStream.js +75 -0
  1042. package/es/core/structures/PDFObjectStream.js.map +1 -0
  1043. package/es/core/structures/PDFPageLeaf.d.ts +55 -0
  1044. package/es/core/structures/PDFPageLeaf.d.ts.map +1 -0
  1045. package/es/core/structures/PDFPageLeaf.js +206 -0
  1046. package/es/core/structures/PDFPageLeaf.js.map +1 -0
  1047. package/es/core/structures/PDFPageTree.d.ts +42 -0
  1048. package/es/core/structures/PDFPageTree.d.ts.map +1 -0
  1049. package/es/core/structures/PDFPageTree.js +175 -0
  1050. package/es/core/structures/PDFPageTree.js.map +1 -0
  1051. package/es/core/syntax/CharCodes.d.ts +62 -0
  1052. package/es/core/syntax/CharCodes.d.ts.map +1 -0
  1053. package/es/core/syntax/CharCodes.js +63 -0
  1054. package/es/core/syntax/CharCodes.js.map +1 -0
  1055. package/es/core/syntax/Delimiters.d.ts +2 -0
  1056. package/es/core/syntax/Delimiters.d.ts.map +1 -0
  1057. package/es/core/syntax/Delimiters.js +13 -0
  1058. package/es/core/syntax/Delimiters.js.map +1 -0
  1059. package/es/core/syntax/Irregular.d.ts +2 -0
  1060. package/es/core/syntax/Irregular.d.ts.map +1 -0
  1061. package/es/core/syntax/Irregular.js +9 -0
  1062. package/es/core/syntax/Irregular.js.map +1 -0
  1063. package/es/core/syntax/Keywords.d.ts +23 -0
  1064. package/es/core/syntax/Keywords.d.ts.map +1 -0
  1065. package/es/core/syntax/Keywords.js +81 -0
  1066. package/es/core/syntax/Keywords.js.map +1 -0
  1067. package/es/core/syntax/Numeric.d.ts +4 -0
  1068. package/es/core/syntax/Numeric.d.ts.map +1 -0
  1069. package/es/core/syntax/Numeric.js +21 -0
  1070. package/es/core/syntax/Numeric.js.map +1 -0
  1071. package/es/core/syntax/Whitespace.d.ts +2 -0
  1072. package/es/core/syntax/Whitespace.d.ts.map +1 -0
  1073. package/es/core/syntax/Whitespace.js +9 -0
  1074. package/es/core/syntax/Whitespace.js.map +1 -0
  1075. package/es/core/writers/PDFStreamWriter.d.ts +22 -0
  1076. package/es/core/writers/PDFStreamWriter.d.ts.map +1 -0
  1077. package/es/core/writers/PDFStreamWriter.js +131 -0
  1078. package/es/core/writers/PDFStreamWriter.js.map +1 -0
  1079. package/es/core/writers/PDFWriter.d.ts +33 -0
  1080. package/es/core/writers/PDFWriter.d.ts.map +1 -0
  1081. package/es/core/writers/PDFWriter.js +162 -0
  1082. package/es/core/writers/PDFWriter.js.map +1 -0
  1083. package/es/index.d.ts +5 -0
  1084. package/es/index.d.ts.map +1 -0
  1085. package/es/index.js +5 -0
  1086. package/es/index.js.map +1 -0
  1087. package/es/types/fontkit.d.ts +582 -0
  1088. package/es/types/fontkit.d.ts.map +1 -0
  1089. package/es/types/fontkit.js +1 -0
  1090. package/es/types/fontkit.js.map +1 -0
  1091. package/es/types/index.d.ts +2 -0
  1092. package/es/types/index.d.ts.map +1 -0
  1093. package/es/types/index.js +1 -0
  1094. package/es/types/index.js.map +1 -0
  1095. package/es/types/matrix.d.ts +22 -0
  1096. package/es/types/matrix.d.ts.map +1 -0
  1097. package/es/types/matrix.js +2 -0
  1098. package/es/types/matrix.js.map +1 -0
  1099. package/es/utils/Cache.d.ts +11 -0
  1100. package/es/utils/Cache.d.ts.map +1 -0
  1101. package/es/utils/Cache.js +21 -0
  1102. package/es/utils/Cache.js.map +1 -0
  1103. package/es/utils/arrays.d.ts +16 -0
  1104. package/es/utils/arrays.d.ts.map +1 -0
  1105. package/es/utils/arrays.js +129 -0
  1106. package/es/utils/arrays.js.map +1 -0
  1107. package/es/utils/async.d.ts +6 -0
  1108. package/es/utils/async.d.ts.map +1 -0
  1109. package/es/utils/async.js +10 -0
  1110. package/es/utils/async.js.map +1 -0
  1111. package/es/utils/base64.d.ts +11 -0
  1112. package/es/utils/base64.d.ts.map +1 -0
  1113. package/es/utils/base64.js +84 -0
  1114. package/es/utils/base64.js.map +1 -0
  1115. package/es/utils/errors.d.ts +2 -0
  1116. package/es/utils/errors.d.ts.map +1 -0
  1117. package/es/utils/errors.js +4 -0
  1118. package/es/utils/errors.js.map +1 -0
  1119. package/es/utils/index.d.ts +12 -0
  1120. package/es/utils/index.d.ts.map +1 -0
  1121. package/es/utils/index.js +12 -0
  1122. package/es/utils/index.js.map +1 -0
  1123. package/es/utils/numbers.d.ts +24 -0
  1124. package/es/utils/numbers.d.ts.map +1 -0
  1125. package/es/utils/numbers.js +54 -0
  1126. package/es/utils/numbers.js.map +1 -0
  1127. package/es/utils/objects.d.ts +16 -0
  1128. package/es/utils/objects.d.ts.map +1 -0
  1129. package/es/utils/objects.js +8 -0
  1130. package/es/utils/objects.js.map +1 -0
  1131. package/es/utils/pdfDocEncoding.d.ts +8 -0
  1132. package/es/utils/pdfDocEncoding.d.ts.map +1 -0
  1133. package/es/utils/pdfDocEncoding.js +66 -0
  1134. package/es/utils/pdfDocEncoding.js.map +1 -0
  1135. package/es/utils/png.d.ts +18 -0
  1136. package/es/utils/png.d.ts.map +1 -0
  1137. package/es/utils/png.js +59 -0
  1138. package/es/utils/png.js.map +1 -0
  1139. package/es/utils/rng.d.ts +14 -0
  1140. package/es/utils/rng.d.ts.map +1 -0
  1141. package/es/utils/rng.js +20 -0
  1142. package/es/utils/rng.js.map +1 -0
  1143. package/es/utils/strings.d.ts +25 -0
  1144. package/es/utils/strings.d.ts.map +1 -0
  1145. package/es/utils/strings.js +138 -0
  1146. package/es/utils/strings.js.map +1 -0
  1147. package/es/utils/unicode.d.ts +187 -0
  1148. package/es/utils/unicode.d.ts.map +1 -0
  1149. package/es/utils/unicode.js +367 -0
  1150. package/es/utils/unicode.js.map +1 -0
  1151. package/es/utils/validators.d.ts +27 -0
  1152. package/es/utils/validators.d.ts.map +1 -0
  1153. package/es/utils/validators.js +180 -0
  1154. package/es/utils/validators.js.map +1 -0
  1155. package/package.json +144 -0
  1156. package/src/api/Embeddable.ts +7 -0
  1157. package/src/api/PDFDocument.ts +1495 -0
  1158. package/src/api/PDFDocumentOptions.ts +50 -0
  1159. package/src/api/PDFEmbeddedFile.ts +90 -0
  1160. package/src/api/PDFEmbeddedPage.ts +104 -0
  1161. package/src/api/PDFFont.ts +154 -0
  1162. package/src/api/PDFImage.ts +143 -0
  1163. package/src/api/PDFJavaScript.ts +82 -0
  1164. package/src/api/PDFPage.ts +1621 -0
  1165. package/src/api/PDFPageOptions.ts +158 -0
  1166. package/src/api/StandardFonts.ts +16 -0
  1167. package/src/api/colors.ts +104 -0
  1168. package/src/api/errors.ts +111 -0
  1169. package/src/api/form/PDFButton.ts +267 -0
  1170. package/src/api/form/PDFCheckBox.ts +262 -0
  1171. package/src/api/form/PDFDropdown.ts +652 -0
  1172. package/src/api/form/PDFField.ts +521 -0
  1173. package/src/api/form/PDFForm.ts +852 -0
  1174. package/src/api/form/PDFOptionList.ts +571 -0
  1175. package/src/api/form/PDFRadioGroup.ts +471 -0
  1176. package/src/api/form/PDFSignature.ts +53 -0
  1177. package/src/api/form/PDFTextField.ts +826 -0
  1178. package/src/api/form/appearances.ts +665 -0
  1179. package/src/api/form/index.ts +10 -0
  1180. package/src/api/image/alignment.ts +5 -0
  1181. package/src/api/image/index.ts +1 -0
  1182. package/src/api/index.ts +21 -0
  1183. package/src/api/objects.ts +10 -0
  1184. package/src/api/operations.ts +800 -0
  1185. package/src/api/operators.ts +360 -0
  1186. package/src/api/rotations.ts +87 -0
  1187. package/src/api/sizes.ts +52 -0
  1188. package/src/api/snapshot/DefaultDocumentSnapshot.ts +29 -0
  1189. package/src/api/snapshot/DocumentSnapshot.ts +14 -0
  1190. package/src/api/snapshot/IncrementalDocumentSnapshot.ts +59 -0
  1191. package/src/api/snapshot/index.ts +3 -0
  1192. package/src/api/svgPath.ts +489 -0
  1193. package/src/api/text/alignment.ts +5 -0
  1194. package/src/api/text/index.ts +2 -0
  1195. package/src/api/text/layout.ts +343 -0
  1196. package/src/core/PDFContext.ts +316 -0
  1197. package/src/core/PDFObjectCopier.ts +143 -0
  1198. package/src/core/acroform/PDFAcroButton.ts +114 -0
  1199. package/src/core/acroform/PDFAcroCheckBox.ts +49 -0
  1200. package/src/core/acroform/PDFAcroChoice.ts +153 -0
  1201. package/src/core/acroform/PDFAcroComboBox.ts +22 -0
  1202. package/src/core/acroform/PDFAcroField.ts +167 -0
  1203. package/src/core/acroform/PDFAcroForm.ts +102 -0
  1204. package/src/core/acroform/PDFAcroListBox.ts +20 -0
  1205. package/src/core/acroform/PDFAcroNonTerminal.ts +34 -0
  1206. package/src/core/acroform/PDFAcroPushButton.ts +22 -0
  1207. package/src/core/acroform/PDFAcroRadioButton.ts +58 -0
  1208. package/src/core/acroform/PDFAcroSignature.ts +10 -0
  1209. package/src/core/acroform/PDFAcroTerminal.ts +71 -0
  1210. package/src/core/acroform/PDFAcroText.ts +76 -0
  1211. package/src/core/acroform/flags.ts +162 -0
  1212. package/src/core/acroform/index.ts +15 -0
  1213. package/src/core/acroform/utils.ts +135 -0
  1214. package/src/core/annotation/AppearanceCharacteristics.ts +133 -0
  1215. package/src/core/annotation/BorderStyle.ts +31 -0
  1216. package/src/core/annotation/PDFAnnotation.ts +148 -0
  1217. package/src/core/annotation/PDFWidgetAnnotation.ts +112 -0
  1218. package/src/core/annotation/flags.ts +90 -0
  1219. package/src/core/annotation/index.ts +4 -0
  1220. package/src/core/document/PDFCrossRefSection.ts +173 -0
  1221. package/src/core/document/PDFHeader.ts +49 -0
  1222. package/src/core/document/PDFTrailer.ts +49 -0
  1223. package/src/core/document/PDFTrailerDict.ts +39 -0
  1224. package/src/core/embedders/CMap.ts +70 -0
  1225. package/src/core/embedders/CustomFontEmbedder.ts +249 -0
  1226. package/src/core/embedders/CustomFontSubsetEmbedder.ts +84 -0
  1227. package/src/core/embedders/FileEmbedder.ts +95 -0
  1228. package/src/core/embedders/FontFlags.ts +45 -0
  1229. package/src/core/embedders/JavaScriptEmbedder.ts +34 -0
  1230. package/src/core/embedders/JpegEmbedder.ts +127 -0
  1231. package/src/core/embedders/PDFPageEmbedder.ts +141 -0
  1232. package/src/core/embedders/PngEmbedder.ts +69 -0
  1233. package/src/core/embedders/StandardFontEmbedder.ts +130 -0
  1234. package/src/core/errors.ts +221 -0
  1235. package/src/core/index.ts +69 -0
  1236. package/src/core/interactive/ViewerPreferences.ts +579 -0
  1237. package/src/core/objects/PDFArray.ts +185 -0
  1238. package/src/core/objects/PDFBool.ts +53 -0
  1239. package/src/core/objects/PDFDict.ts +232 -0
  1240. package/src/core/objects/PDFHexString.ts +94 -0
  1241. package/src/core/objects/PDFInvalidObject.ts +34 -0
  1242. package/src/core/objects/PDFName.ts +159 -0
  1243. package/src/core/objects/PDFNull.ts +30 -0
  1244. package/src/core/objects/PDFNumber.ts +44 -0
  1245. package/src/core/objects/PDFObject.ts +28 -0
  1246. package/src/core/objects/PDFRawStream.ts +38 -0
  1247. package/src/core/objects/PDFRef.ts +55 -0
  1248. package/src/core/objects/PDFStream.ts +93 -0
  1249. package/src/core/objects/PDFString.ts +118 -0
  1250. package/src/core/operators/PDFOperator.ts +79 -0
  1251. package/src/core/operators/PDFOperatorNames.ts +92 -0
  1252. package/src/core/parser/BaseParser.ts +119 -0
  1253. package/src/core/parser/ByteStream.ts +76 -0
  1254. package/src/core/parser/PDFObjectParser.ts +274 -0
  1255. package/src/core/parser/PDFObjectStreamParser.ts +67 -0
  1256. package/src/core/parser/PDFParser.ts +377 -0
  1257. package/src/core/parser/PDFXRefStreamParser.ts +131 -0
  1258. package/src/core/streams/Ascii85Stream.ts +98 -0
  1259. package/src/core/streams/AsciiHexStream.ts +77 -0
  1260. package/src/core/streams/DecodeStream.ts +170 -0
  1261. package/src/core/streams/FlateStream.ts +407 -0
  1262. package/src/core/streams/LZWStream.ts +164 -0
  1263. package/src/core/streams/RunLengthStream.ts +55 -0
  1264. package/src/core/streams/Stream.ts +132 -0
  1265. package/src/core/streams/decode.ts +73 -0
  1266. package/src/core/structures/PDFCatalog.ts +85 -0
  1267. package/src/core/structures/PDFContentStream.ts +58 -0
  1268. package/src/core/structures/PDFCrossRefStream.ts +246 -0
  1269. package/src/core/structures/PDFFlateStream.ts +43 -0
  1270. package/src/core/structures/PDFObjectStream.ts +101 -0
  1271. package/src/core/structures/PDFPageLeaf.ts +265 -0
  1272. package/src/core/structures/PDFPageTree.ts +195 -0
  1273. package/src/core/syntax/CharCodes.ts +62 -0
  1274. package/src/core/syntax/Delimiters.ts +14 -0
  1275. package/src/core/syntax/Irregular.ts +10 -0
  1276. package/src/core/syntax/Keywords.ts +83 -0
  1277. package/src/core/syntax/Numeric.ts +26 -0
  1278. package/src/core/syntax/Whitespace.ts +10 -0
  1279. package/src/core/writers/PDFStreamWriter.ts +158 -0
  1280. package/src/core/writers/PDFWriter.ts +194 -0
  1281. package/src/index.ts +4 -0
  1282. package/src/types/fontkit.ts +640 -0
  1283. package/src/types/index.ts +1 -0
  1284. package/src/types/matrix.ts +29 -0
  1285. package/src/utils/Cache.ts +26 -0
  1286. package/src/utils/arrays.ts +146 -0
  1287. package/src/utils/async.ts +8 -0
  1288. package/src/utils/base64.ts +99 -0
  1289. package/src/utils/errors.ts +3 -0
  1290. package/src/utils/index.ts +11 -0
  1291. package/src/utils/numbers.ts +55 -0
  1292. package/src/utils/objects.ts +13 -0
  1293. package/src/utils/pdfDocEncoding.ts +69 -0
  1294. package/src/utils/png.ts +70 -0
  1295. package/src/utils/rng.ts +21 -0
  1296. package/src/utils/strings.ts +182 -0
  1297. package/src/utils/unicode.ts +386 -0
  1298. package/src/utils/validators.ts +228 -0
  1299. package/ts3.4/apps/deno/dummy.d.ts +20 -0
  1300. package/ts3.4/cjs/api/Embeddable.d.ts +8 -0
  1301. package/ts3.4/cjs/api/PDFDocument.d.ts +800 -0
  1302. package/ts3.4/cjs/api/PDFDocumentOptions.d.ts +43 -0
  1303. package/ts3.4/cjs/api/PDFEmbeddedFile.d.ts +39 -0
  1304. package/ts3.4/cjs/api/PDFEmbeddedPage.d.ts +74 -0
  1305. package/ts3.4/cjs/api/PDFFont.d.ts +95 -0
  1306. package/ts3.4/cjs/api/PDFImage.d.ts +96 -0
  1307. package/ts3.4/cjs/api/PDFJavaScript.d.ts +39 -0
  1308. package/ts3.4/cjs/api/PDFPage.d.ts +898 -0
  1309. package/ts3.4/cjs/api/PDFPageOptions.d.ts +155 -0
  1310. package/ts3.4/cjs/api/StandardFonts.d.ts +17 -0
  1311. package/ts3.4/cjs/api/colors.d.ts +31 -0
  1312. package/ts3.4/cjs/api/errors.d.ts +43 -0
  1313. package/ts3.4/cjs/api/form/PDFButton.d.ts +138 -0
  1314. package/ts3.4/cjs/api/form/PDFCheckBox.d.ts +143 -0
  1315. package/ts3.4/cjs/api/form/PDFDropdown.d.ts +403 -0
  1316. package/ts3.4/cjs/api/form/PDFField.d.ts +204 -0
  1317. package/ts3.4/cjs/api/form/PDFForm.d.ts +412 -0
  1318. package/ts3.4/cjs/api/form/PDFOptionList.d.ts +336 -0
  1319. package/ts3.4/cjs/api/form/PDFRadioGroup.d.ts +253 -0
  1320. package/ts3.4/cjs/api/form/PDFSignature.d.ts +30 -0
  1321. package/ts3.4/cjs/api/form/PDFTextField.d.ts +538 -0
  1322. package/ts3.4/cjs/api/form/appearances.d.ts +42 -0
  1323. package/ts3.4/cjs/api/form/index.d.ts +11 -0
  1324. package/ts3.4/cjs/api/image/alignment.d.ts +6 -0
  1325. package/ts3.4/cjs/api/image/index.d.ts +2 -0
  1326. package/ts3.4/cjs/api/index.d.ts +22 -0
  1327. package/ts3.4/cjs/api/objects.d.ts +5 -0
  1328. package/ts3.4/cjs/api/operations.d.ts +212 -0
  1329. package/ts3.4/cjs/api/operators.d.ts +86 -0
  1330. package/ts3.4/cjs/api/rotations.d.ts +39 -0
  1331. package/ts3.4/cjs/api/sizes.d.ts +53 -0
  1332. package/ts3.4/cjs/api/snapshot/DefaultDocumentSnapshot.d.ts +13 -0
  1333. package/ts3.4/cjs/api/snapshot/DocumentSnapshot.d.ts +11 -0
  1334. package/ts3.4/cjs/api/snapshot/IncrementalDocumentSnapshot.d.ts +16 -0
  1335. package/ts3.4/cjs/api/snapshot/index.d.ts +4 -0
  1336. package/ts3.4/cjs/api/svgPath.d.ts +3 -0
  1337. package/ts3.4/cjs/api/text/alignment.d.ts +6 -0
  1338. package/ts3.4/cjs/api/text/index.d.ts +3 -0
  1339. package/ts3.4/cjs/api/text/layout.d.ts +55 -0
  1340. package/ts3.4/cjs/core/PDFContext.d.ts +93 -0
  1341. package/ts3.4/cjs/core/PDFObjectCopier.d.ts +38 -0
  1342. package/ts3.4/cjs/core/acroform/PDFAcroButton.d.ts +22 -0
  1343. package/ts3.4/cjs/core/acroform/PDFAcroCheckBox.d.ts +14 -0
  1344. package/ts3.4/cjs/core/acroform/PDFAcroChoice.d.ts +21 -0
  1345. package/ts3.4/cjs/core/acroform/PDFAcroComboBox.d.ts +10 -0
  1346. package/ts3.4/cjs/core/acroform/PDFAcroField.d.ts +37 -0
  1347. package/ts3.4/cjs/core/acroform/PDFAcroForm.d.ts +21 -0
  1348. package/ts3.4/cjs/core/acroform/PDFAcroListBox.d.ts +10 -0
  1349. package/ts3.4/cjs/core/acroform/PDFAcroNonTerminal.d.ts +14 -0
  1350. package/ts3.4/cjs/core/acroform/PDFAcroPushButton.d.ts +10 -0
  1351. package/ts3.4/cjs/core/acroform/PDFAcroRadioButton.d.ts +14 -0
  1352. package/ts3.4/cjs/core/acroform/PDFAcroSignature.d.ts +8 -0
  1353. package/ts3.4/cjs/core/acroform/PDFAcroTerminal.d.ts +17 -0
  1354. package/ts3.4/cjs/core/acroform/PDFAcroText.d.ts +23 -0
  1355. package/ts3.4/cjs/core/acroform/flags.d.ts +142 -0
  1356. package/ts3.4/cjs/core/acroform/index.d.ts +16 -0
  1357. package/ts3.4/cjs/core/acroform/utils.d.ts +7 -0
  1358. package/ts3.4/cjs/core/annotation/AppearanceCharacteristics.d.ts +34 -0
  1359. package/ts3.4/cjs/core/annotation/BorderStyle.d.ts +12 -0
  1360. package/ts3.4/cjs/core/annotation/PDFAnnotation.d.ts +52 -0
  1361. package/ts3.4/cjs/core/annotation/PDFWidgetAnnotation.d.ts +27 -0
  1362. package/ts3.4/cjs/core/annotation/flags.d.ts +80 -0
  1363. package/ts3.4/cjs/core/annotation/index.d.ts +5 -0
  1364. package/ts3.4/cjs/core/document/PDFCrossRefSection.d.ts +28 -0
  1365. package/ts3.4/cjs/core/document/PDFHeader.d.ts +11 -0
  1366. package/ts3.4/cjs/core/document/PDFTrailer.d.ts +10 -0
  1367. package/ts3.4/cjs/core/document/PDFTrailerDict.d.ts +11 -0
  1368. package/ts3.4/cjs/core/embedders/CMap.d.ts +4 -0
  1369. package/ts3.4/cjs/core/embedders/CustomFontEmbedder.d.ts +45 -0
  1370. package/ts3.4/cjs/core/embedders/CustomFontSubsetEmbedder.d.ts +21 -0
  1371. package/ts3.4/cjs/core/embedders/FileEmbedder.d.ts +34 -0
  1372. package/ts3.4/cjs/core/embedders/FontFlags.d.ts +14 -0
  1373. package/ts3.4/cjs/core/embedders/JavaScriptEmbedder.d.ts +11 -0
  1374. package/ts3.4/cjs/core/embedders/JpegEmbedder.d.ts +24 -0
  1375. package/ts3.4/cjs/core/embedders/PDFPageEmbedder.d.ts +38 -0
  1376. package/ts3.4/cjs/core/embedders/PngEmbedder.d.ts +20 -0
  1377. package/ts3.4/cjs/core/embedders/StandardFontEmbedder.d.ts +37 -0
  1378. package/ts3.4/cjs/core/errors.d.ts +92 -0
  1379. package/ts3.4/cjs/core/index.d.ts +48 -0
  1380. package/ts3.4/cjs/core/interactive/ViewerPreferences.d.ts +348 -0
  1381. package/ts3.4/cjs/core/objects/PDFArray.d.ts +64 -0
  1382. package/ts3.4/cjs/core/objects/PDFBool.d.ts +14 -0
  1383. package/ts3.4/cjs/core/objects/PDFDict.d.ts +63 -0
  1384. package/ts3.4/cjs/core/objects/PDFHexString.d.ts +17 -0
  1385. package/ts3.4/cjs/core/objects/PDFInvalidObject.d.ts +12 -0
  1386. package/ts3.4/cjs/core/objects/PDFName.d.ts +42 -0
  1387. package/ts3.4/cjs/core/objects/PDFNull.d.ts +11 -0
  1388. package/ts3.4/cjs/core/objects/PDFNumber.d.ts +16 -0
  1389. package/ts3.4/cjs/core/objects/PDFObject.d.ts +10 -0
  1390. package/ts3.4/cjs/core/objects/PDFRawStream.d.ts +15 -0
  1391. package/ts3.4/cjs/core/objects/PDFRef.d.ts +14 -0
  1392. package/ts3.4/cjs/core/objects/PDFStream.d.ts +17 -0
  1393. package/ts3.4/cjs/core/objects/PDFString.d.ts +17 -0
  1394. package/ts3.4/cjs/core/operators/PDFOperator.d.ts +20 -0
  1395. package/ts3.4/cjs/core/operators/PDFOperatorNames.d.ts +77 -0
  1396. package/ts3.4/cjs/core/parser/BaseParser.d.ts +15 -0
  1397. package/ts3.4/cjs/core/parser/ByteStream.d.ts +27 -0
  1398. package/ts3.4/cjs/core/parser/PDFObjectParser.d.ts +30 -0
  1399. package/ts3.4/cjs/core/parser/PDFObjectStreamParser.d.ts +14 -0
  1400. package/ts3.4/cjs/core/parser/PDFParser.d.ts +46 -0
  1401. package/ts3.4/cjs/core/parser/PDFXRefStreamParser.d.ts +22 -0
  1402. package/ts3.4/cjs/core/streams/Ascii85Stream.d.ts +10 -0
  1403. package/ts3.4/cjs/core/streams/AsciiHexStream.d.ts +10 -0
  1404. package/ts3.4/cjs/core/streams/DecodeStream.d.ts +27 -0
  1405. package/ts3.4/cjs/core/streams/FlateStream.d.ts +14 -0
  1406. package/ts3.4/cjs/core/streams/LZWStream.d.ts +13 -0
  1407. package/ts3.4/cjs/core/streams/RunLengthStream.d.ts +9 -0
  1408. package/ts3.4/cjs/core/streams/Stream.d.ts +35 -0
  1409. package/ts3.4/cjs/core/streams/decode.d.ts +4 -0
  1410. package/ts3.4/cjs/core/structures/PDFCatalog.d.ts +28 -0
  1411. package/ts3.4/cjs/core/structures/PDFContentStream.d.ts +16 -0
  1412. package/ts3.4/cjs/core/structures/PDFCrossRefStream.d.ts +54 -0
  1413. package/ts3.4/cjs/core/structures/PDFFlateStream.d.ts +14 -0
  1414. package/ts3.4/cjs/core/structures/PDFObjectStream.d.ts +21 -0
  1415. package/ts3.4/cjs/core/structures/PDFPageLeaf.d.ts +55 -0
  1416. package/ts3.4/cjs/core/structures/PDFPageTree.d.ts +42 -0
  1417. package/ts3.4/cjs/core/syntax/CharCodes.d.ts +62 -0
  1418. package/ts3.4/cjs/core/syntax/Delimiters.d.ts +2 -0
  1419. package/ts3.4/cjs/core/syntax/Irregular.d.ts +2 -0
  1420. package/ts3.4/cjs/core/syntax/Keywords.d.ts +23 -0
  1421. package/ts3.4/cjs/core/syntax/Numeric.d.ts +4 -0
  1422. package/ts3.4/cjs/core/syntax/Whitespace.d.ts +2 -0
  1423. package/ts3.4/cjs/core/writers/PDFStreamWriter.d.ts +22 -0
  1424. package/ts3.4/cjs/core/writers/PDFWriter.d.ts +33 -0
  1425. package/ts3.4/cjs/index.d.ts +5 -0
  1426. package/ts3.4/cjs/types/fontkit.d.ts +582 -0
  1427. package/ts3.4/cjs/types/index.d.ts +2 -0
  1428. package/ts3.4/cjs/types/matrix.d.ts +22 -0
  1429. package/ts3.4/cjs/utils/Cache.d.ts +11 -0
  1430. package/ts3.4/cjs/utils/arrays.d.ts +16 -0
  1431. package/ts3.4/cjs/utils/async.d.ts +6 -0
  1432. package/ts3.4/cjs/utils/base64.d.ts +11 -0
  1433. package/ts3.4/cjs/utils/errors.d.ts +2 -0
  1434. package/ts3.4/cjs/utils/index.d.ts +12 -0
  1435. package/ts3.4/cjs/utils/numbers.d.ts +24 -0
  1436. package/ts3.4/cjs/utils/objects.d.ts +16 -0
  1437. package/ts3.4/cjs/utils/pdfDocEncoding.d.ts +8 -0
  1438. package/ts3.4/cjs/utils/png.d.ts +18 -0
  1439. package/ts3.4/cjs/utils/rng.d.ts +14 -0
  1440. package/ts3.4/cjs/utils/strings.d.ts +25 -0
  1441. package/ts3.4/cjs/utils/unicode.d.ts +187 -0
  1442. package/ts3.4/cjs/utils/validators.d.ts +27 -0
  1443. package/ts3.4/es/api/Embeddable.d.ts +8 -0
  1444. package/ts3.4/es/api/PDFDocument.d.ts +800 -0
  1445. package/ts3.4/es/api/PDFDocumentOptions.d.ts +43 -0
  1446. package/ts3.4/es/api/PDFEmbeddedFile.d.ts +39 -0
  1447. package/ts3.4/es/api/PDFEmbeddedPage.d.ts +74 -0
  1448. package/ts3.4/es/api/PDFFont.d.ts +95 -0
  1449. package/ts3.4/es/api/PDFImage.d.ts +96 -0
  1450. package/ts3.4/es/api/PDFJavaScript.d.ts +39 -0
  1451. package/ts3.4/es/api/PDFPage.d.ts +898 -0
  1452. package/ts3.4/es/api/PDFPageOptions.d.ts +155 -0
  1453. package/ts3.4/es/api/StandardFonts.d.ts +17 -0
  1454. package/ts3.4/es/api/colors.d.ts +31 -0
  1455. package/ts3.4/es/api/errors.d.ts +43 -0
  1456. package/ts3.4/es/api/form/PDFButton.d.ts +138 -0
  1457. package/ts3.4/es/api/form/PDFCheckBox.d.ts +143 -0
  1458. package/ts3.4/es/api/form/PDFDropdown.d.ts +403 -0
  1459. package/ts3.4/es/api/form/PDFField.d.ts +204 -0
  1460. package/ts3.4/es/api/form/PDFForm.d.ts +412 -0
  1461. package/ts3.4/es/api/form/PDFOptionList.d.ts +336 -0
  1462. package/ts3.4/es/api/form/PDFRadioGroup.d.ts +253 -0
  1463. package/ts3.4/es/api/form/PDFSignature.d.ts +30 -0
  1464. package/ts3.4/es/api/form/PDFTextField.d.ts +538 -0
  1465. package/ts3.4/es/api/form/appearances.d.ts +42 -0
  1466. package/ts3.4/es/api/form/index.d.ts +11 -0
  1467. package/ts3.4/es/api/image/alignment.d.ts +6 -0
  1468. package/ts3.4/es/api/image/index.d.ts +2 -0
  1469. package/ts3.4/es/api/index.d.ts +22 -0
  1470. package/ts3.4/es/api/objects.d.ts +5 -0
  1471. package/ts3.4/es/api/operations.d.ts +212 -0
  1472. package/ts3.4/es/api/operators.d.ts +86 -0
  1473. package/ts3.4/es/api/rotations.d.ts +39 -0
  1474. package/ts3.4/es/api/sizes.d.ts +53 -0
  1475. package/ts3.4/es/api/snapshot/DefaultDocumentSnapshot.d.ts +13 -0
  1476. package/ts3.4/es/api/snapshot/DocumentSnapshot.d.ts +11 -0
  1477. package/ts3.4/es/api/snapshot/IncrementalDocumentSnapshot.d.ts +16 -0
  1478. package/ts3.4/es/api/snapshot/index.d.ts +4 -0
  1479. package/ts3.4/es/api/svgPath.d.ts +3 -0
  1480. package/ts3.4/es/api/text/alignment.d.ts +6 -0
  1481. package/ts3.4/es/api/text/index.d.ts +3 -0
  1482. package/ts3.4/es/api/text/layout.d.ts +55 -0
  1483. package/ts3.4/es/core/PDFContext.d.ts +93 -0
  1484. package/ts3.4/es/core/PDFObjectCopier.d.ts +38 -0
  1485. package/ts3.4/es/core/acroform/PDFAcroButton.d.ts +22 -0
  1486. package/ts3.4/es/core/acroform/PDFAcroCheckBox.d.ts +14 -0
  1487. package/ts3.4/es/core/acroform/PDFAcroChoice.d.ts +21 -0
  1488. package/ts3.4/es/core/acroform/PDFAcroComboBox.d.ts +10 -0
  1489. package/ts3.4/es/core/acroform/PDFAcroField.d.ts +37 -0
  1490. package/ts3.4/es/core/acroform/PDFAcroForm.d.ts +21 -0
  1491. package/ts3.4/es/core/acroform/PDFAcroListBox.d.ts +10 -0
  1492. package/ts3.4/es/core/acroform/PDFAcroNonTerminal.d.ts +14 -0
  1493. package/ts3.4/es/core/acroform/PDFAcroPushButton.d.ts +10 -0
  1494. package/ts3.4/es/core/acroform/PDFAcroRadioButton.d.ts +14 -0
  1495. package/ts3.4/es/core/acroform/PDFAcroSignature.d.ts +8 -0
  1496. package/ts3.4/es/core/acroform/PDFAcroTerminal.d.ts +17 -0
  1497. package/ts3.4/es/core/acroform/PDFAcroText.d.ts +23 -0
  1498. package/ts3.4/es/core/acroform/flags.d.ts +142 -0
  1499. package/ts3.4/es/core/acroform/index.d.ts +16 -0
  1500. package/ts3.4/es/core/acroform/utils.d.ts +7 -0
  1501. package/ts3.4/es/core/annotation/AppearanceCharacteristics.d.ts +34 -0
  1502. package/ts3.4/es/core/annotation/BorderStyle.d.ts +12 -0
  1503. package/ts3.4/es/core/annotation/PDFAnnotation.d.ts +52 -0
  1504. package/ts3.4/es/core/annotation/PDFWidgetAnnotation.d.ts +27 -0
  1505. package/ts3.4/es/core/annotation/flags.d.ts +80 -0
  1506. package/ts3.4/es/core/annotation/index.d.ts +5 -0
  1507. package/ts3.4/es/core/document/PDFCrossRefSection.d.ts +28 -0
  1508. package/ts3.4/es/core/document/PDFHeader.d.ts +11 -0
  1509. package/ts3.4/es/core/document/PDFTrailer.d.ts +10 -0
  1510. package/ts3.4/es/core/document/PDFTrailerDict.d.ts +11 -0
  1511. package/ts3.4/es/core/embedders/CMap.d.ts +4 -0
  1512. package/ts3.4/es/core/embedders/CustomFontEmbedder.d.ts +45 -0
  1513. package/ts3.4/es/core/embedders/CustomFontSubsetEmbedder.d.ts +21 -0
  1514. package/ts3.4/es/core/embedders/FileEmbedder.d.ts +34 -0
  1515. package/ts3.4/es/core/embedders/FontFlags.d.ts +14 -0
  1516. package/ts3.4/es/core/embedders/JavaScriptEmbedder.d.ts +11 -0
  1517. package/ts3.4/es/core/embedders/JpegEmbedder.d.ts +24 -0
  1518. package/ts3.4/es/core/embedders/PDFPageEmbedder.d.ts +38 -0
  1519. package/ts3.4/es/core/embedders/PngEmbedder.d.ts +20 -0
  1520. package/ts3.4/es/core/embedders/StandardFontEmbedder.d.ts +37 -0
  1521. package/ts3.4/es/core/errors.d.ts +92 -0
  1522. package/ts3.4/es/core/index.d.ts +48 -0
  1523. package/ts3.4/es/core/interactive/ViewerPreferences.d.ts +348 -0
  1524. package/ts3.4/es/core/objects/PDFArray.d.ts +64 -0
  1525. package/ts3.4/es/core/objects/PDFBool.d.ts +14 -0
  1526. package/ts3.4/es/core/objects/PDFDict.d.ts +63 -0
  1527. package/ts3.4/es/core/objects/PDFHexString.d.ts +17 -0
  1528. package/ts3.4/es/core/objects/PDFInvalidObject.d.ts +12 -0
  1529. package/ts3.4/es/core/objects/PDFName.d.ts +42 -0
  1530. package/ts3.4/es/core/objects/PDFNull.d.ts +11 -0
  1531. package/ts3.4/es/core/objects/PDFNumber.d.ts +16 -0
  1532. package/ts3.4/es/core/objects/PDFObject.d.ts +10 -0
  1533. package/ts3.4/es/core/objects/PDFRawStream.d.ts +15 -0
  1534. package/ts3.4/es/core/objects/PDFRef.d.ts +14 -0
  1535. package/ts3.4/es/core/objects/PDFStream.d.ts +17 -0
  1536. package/ts3.4/es/core/objects/PDFString.d.ts +17 -0
  1537. package/ts3.4/es/core/operators/PDFOperator.d.ts +20 -0
  1538. package/ts3.4/es/core/operators/PDFOperatorNames.d.ts +77 -0
  1539. package/ts3.4/es/core/parser/BaseParser.d.ts +15 -0
  1540. package/ts3.4/es/core/parser/ByteStream.d.ts +27 -0
  1541. package/ts3.4/es/core/parser/PDFObjectParser.d.ts +30 -0
  1542. package/ts3.4/es/core/parser/PDFObjectStreamParser.d.ts +14 -0
  1543. package/ts3.4/es/core/parser/PDFParser.d.ts +46 -0
  1544. package/ts3.4/es/core/parser/PDFXRefStreamParser.d.ts +22 -0
  1545. package/ts3.4/es/core/streams/Ascii85Stream.d.ts +10 -0
  1546. package/ts3.4/es/core/streams/AsciiHexStream.d.ts +10 -0
  1547. package/ts3.4/es/core/streams/DecodeStream.d.ts +27 -0
  1548. package/ts3.4/es/core/streams/FlateStream.d.ts +14 -0
  1549. package/ts3.4/es/core/streams/LZWStream.d.ts +13 -0
  1550. package/ts3.4/es/core/streams/RunLengthStream.d.ts +9 -0
  1551. package/ts3.4/es/core/streams/Stream.d.ts +35 -0
  1552. package/ts3.4/es/core/streams/decode.d.ts +4 -0
  1553. package/ts3.4/es/core/structures/PDFCatalog.d.ts +28 -0
  1554. package/ts3.4/es/core/structures/PDFContentStream.d.ts +16 -0
  1555. package/ts3.4/es/core/structures/PDFCrossRefStream.d.ts +54 -0
  1556. package/ts3.4/es/core/structures/PDFFlateStream.d.ts +14 -0
  1557. package/ts3.4/es/core/structures/PDFObjectStream.d.ts +21 -0
  1558. package/ts3.4/es/core/structures/PDFPageLeaf.d.ts +55 -0
  1559. package/ts3.4/es/core/structures/PDFPageTree.d.ts +42 -0
  1560. package/ts3.4/es/core/syntax/CharCodes.d.ts +62 -0
  1561. package/ts3.4/es/core/syntax/Delimiters.d.ts +2 -0
  1562. package/ts3.4/es/core/syntax/Irregular.d.ts +2 -0
  1563. package/ts3.4/es/core/syntax/Keywords.d.ts +23 -0
  1564. package/ts3.4/es/core/syntax/Numeric.d.ts +4 -0
  1565. package/ts3.4/es/core/syntax/Whitespace.d.ts +2 -0
  1566. package/ts3.4/es/core/writers/PDFStreamWriter.d.ts +22 -0
  1567. package/ts3.4/es/core/writers/PDFWriter.d.ts +33 -0
  1568. package/ts3.4/es/index.d.ts +5 -0
  1569. package/ts3.4/es/types/fontkit.d.ts +582 -0
  1570. package/ts3.4/es/types/index.d.ts +2 -0
  1571. package/ts3.4/es/types/matrix.d.ts +22 -0
  1572. package/ts3.4/es/utils/Cache.d.ts +11 -0
  1573. package/ts3.4/es/utils/arrays.d.ts +16 -0
  1574. package/ts3.4/es/utils/async.d.ts +6 -0
  1575. package/ts3.4/es/utils/base64.d.ts +11 -0
  1576. package/ts3.4/es/utils/errors.d.ts +2 -0
  1577. package/ts3.4/es/utils/index.d.ts +12 -0
  1578. package/ts3.4/es/utils/numbers.d.ts +24 -0
  1579. package/ts3.4/es/utils/objects.d.ts +16 -0
  1580. package/ts3.4/es/utils/pdfDocEncoding.d.ts +8 -0
  1581. package/ts3.4/es/utils/png.d.ts +18 -0
  1582. package/ts3.4/es/utils/rng.d.ts +14 -0
  1583. package/ts3.4/es/utils/strings.d.ts +25 -0
  1584. package/ts3.4/es/utils/unicode.d.ts +187 -0
  1585. package/ts3.4/es/utils/validators.d.ts +27 -0
  1586. package/yarn.lock +4446 -0
package/README.md ADDED
@@ -0,0 +1,1713 @@
1
+ <a href="https://pdf-lib.js.org">
2
+ <h1 align="center">
3
+ <img alt="pdf-lib" height="300" src="https://raw.githubusercontent.com/Hopding/pdf-lib-docs/master/assets/logo-full.svg?sanitize=true">
4
+ </h1>
5
+ </a>
6
+
7
+ <div align="center">
8
+ <strong>Create and modify PDF documents in any JavaScript environment.</strong>
9
+ </div>
10
+ <div align="center">
11
+ Designed to work in any modern JavaScript runtime. Tested in Node, Browser, Deno, and React Native environments.
12
+ </div>
13
+
14
+ <br />
15
+
16
+ <div align="center">
17
+ <!-- NPM Version -->
18
+ <a href="https://www.npmjs.com/package/pdf-lib">
19
+ <img
20
+ src="https://img.shields.io/npm/v/pdf-lib.svg?style=flat-square"
21
+ alt="NPM Version"
22
+ />
23
+ </a>
24
+ <!-- Build Status -->
25
+ <a href="https://circleci.com/gh/Hopding/pdf-lib">
26
+ <img
27
+ src="https://img.shields.io/circleci/project/github/Hopding/pdf-lib/master.svg?style=flat-square&label=CircleCI"
28
+ alt="CircleCI Build Status"
29
+ />
30
+ </a>
31
+ <!-- Prettier Badge -->
32
+ <a href="https://prettier.io/">
33
+ <img
34
+ src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"
35
+ alt="Prettier Badge"
36
+ />
37
+ </a>
38
+ <!-- Discord Badge -->
39
+ <a href="https://discord.gg/Y7uuVMc">
40
+ <img
41
+ src="https://img.shields.io/static/v1?label=discord&message=pdf-lib&color=566fbb&style=flat-square"
42
+ alt="Discord Badge"
43
+ />
44
+ </a>
45
+ </div>
46
+
47
+ <br />
48
+
49
+ > **Learn more at [pdf-lib.js.org](https://pdf-lib.js.org)**
50
+
51
+ ## Table of Contents
52
+
53
+ - [Features](#features)
54
+ - [Motivation](#motivation)
55
+ - [Usage Examples](#usage-examples)
56
+ - [Create Document](#create-document)
57
+ - [Modify Document](#modify-document)
58
+ - [Incremental Document Modification](#incremental-document-modification)
59
+ - [Create Form](#create-form)
60
+ - [Fill Form](#fill-form)
61
+ - [Flatten Form](#flatten-form)
62
+ - [Copy Pages](#copy-pages)
63
+ - [Embed PNG and JPEG Images](#embed-png-and-jpeg-images)
64
+ - [Embed PDF Pages](#embed-pdf-pages)
65
+ - [Embed Font and Measure Text](#embed-font-and-measure-text)
66
+ - [Add Attachments](#add-attachments)
67
+ - [Set Document Metadata](#set-document-metadata)
68
+ - [Read Document Metadata](#read-document-metadata)
69
+ - [Set Viewer Preferences](#set-viewer-preferences)
70
+ - [Read Viewer Preferences](#read-viewer-preferences)
71
+ - [Draw SVG Paths](#draw-svg-paths)
72
+ - [Deno Usage](#deno-usage)
73
+ - [Complete Examples](#complete-examples)
74
+ - [Installation](#installation)
75
+ - [Documentation](#documentation)
76
+ - [Fonts and Unicode](#fonts-and-unicode)
77
+ - [Creating and Filling Forms](#creating-and-filling-forms)
78
+ - [Limitations](#limitations)
79
+ - [Help and Discussion](#help-and-discussion)
80
+ - [Encryption Handling](#encryption-handling)
81
+ - [Migrating to v1.0.0](docs/MIGRATION.md)
82
+ - [Contributing](#contributing)
83
+ - [Maintainership](#maintainership)
84
+ - [Tutorials and Cool Stuff](#tutorials-and-cool-stuff)
85
+ - [Prior Art](#prior-art)
86
+ - [Git History Rewrite](#git-history-rewrite)
87
+ - [License](#license)
88
+
89
+ ## Features
90
+
91
+ - Create new PDFs
92
+ - Modify existing PDFs
93
+ - Create forms
94
+ - Fill forms
95
+ - Flatten forms
96
+ - Add Pages
97
+ - Insert Pages
98
+ - Remove Pages
99
+ - Copy pages between PDFs
100
+ - Draw Text
101
+ - Draw Images
102
+ - Draw PDF Pages
103
+ - Draw Vector Graphics
104
+ - Draw SVG Paths
105
+ - Measure width and height of text
106
+ - Embed Fonts (supports UTF-8 and UTF-16 character sets)
107
+ - Set document metadata
108
+ - Read document metadata
109
+ - Set viewer preferences
110
+ - Read viewer preferences
111
+ - Add attachments
112
+
113
+ ## Motivation
114
+
115
+ `pdf-lib` was created to address the JavaScript ecosystem's lack of robust support for PDF manipulation (especially for PDF _modification_).
116
+
117
+ Two of `pdf-lib`'s distinguishing features are:
118
+
119
+ 1. Supporting modification (editing) of existing documents.
120
+ 2. Working in all JavaScript environments - not just in Node or the Browser.
121
+
122
+ There 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.
123
+
124
+ ## Usage Examples
125
+
126
+ ### Create Document
127
+
128
+ _This example produces [this PDF](assets/pdfs/examples/create_document.pdf)._
129
+
130
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/rxwsc8f5/13/)
131
+
132
+ <!-- prettier-ignore -->
133
+ ```js
134
+ import { PDFDocument, StandardFonts, rgb } from 'pdf-lib'
135
+
136
+ // Create a new PDFDocument
137
+ const pdfDoc = await PDFDocument.create()
138
+
139
+ // Embed the Times Roman font
140
+ const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)
141
+
142
+ // Add a blank page to the document
143
+ const page = pdfDoc.addPage()
144
+
145
+ // Get the width and height of the page
146
+ const { width, height } = page.getSize()
147
+
148
+ // Draw a string of text toward the top of the page
149
+ const fontSize = 30
150
+ page.drawText('Creating PDFs in JavaScript is awesome!', {
151
+ x: 50,
152
+ y: height - 4 * fontSize,
153
+ size: fontSize,
154
+ font: timesRomanFont,
155
+ color: rgb(0, 0.53, 0.71),
156
+ })
157
+
158
+ // Serialize the PDFDocument to bytes (a Uint8Array)
159
+ const pdfBytes = await pdfDoc.save()
160
+
161
+ // For example, `pdfBytes` can be:
162
+ // • Written to a file in Node
163
+ // • Downloaded from the browser
164
+ // • Rendered in an <iframe>
165
+ ```
166
+
167
+ ### Modify Document
168
+
169
+ _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).
170
+
171
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/64zajhge/1/)
172
+
173
+ <!-- prettier-ignore -->
174
+ ```js
175
+ import { degrees, PDFDocument, rgb, StandardFonts } from 'pdf-lib';
176
+
177
+ // This should be a Uint8Array or ArrayBuffer
178
+ // This data can be obtained in a number of different ways
179
+ // If your running in a Node environment, you could use fs.readFile()
180
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
181
+ const existingPdfBytes = ...
182
+
183
+ // Load a PDFDocument from the existing PDF bytes
184
+ const pdfDoc = await PDFDocument.load(existingPdfBytes)
185
+
186
+ // Embed the Helvetica font
187
+ const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)
188
+
189
+ // Get the first page of the document
190
+ const pages = pdfDoc.getPages()
191
+ const firstPage = pages[0]
192
+
193
+ // Get the width and height of the first page
194
+ const { width, height } = firstPage.getSize()
195
+
196
+ // Draw a string of text diagonally across the first page
197
+ firstPage.drawText('This text was added with JavaScript!', {
198
+ x: 5,
199
+ y: height / 2 + 300,
200
+ size: 50,
201
+ font: helveticaFont,
202
+ color: rgb(0.95, 0.1, 0.1),
203
+ rotate: degrees(-45),
204
+ })
205
+
206
+
207
+ // Serialize the PDFDocument to bytes (a Uint8Array)
208
+ const pdfBytes = await pdfDoc.save()
209
+
210
+ // For example, `pdfBytes` can be:
211
+ // • Written to a file in Node
212
+ // • Downloaded from the browser
213
+ // • Rendered in an <iframe>
214
+ ```
215
+
216
+
217
+ ### Incremental Document Modification
218
+
219
+ You can load a PDF for incremental update, generating the original document plus the increment, on save. You can also handle incremental update manually.
220
+ The incremental modification saving is designed to be used for pdf signing. The signature is added to an existing page, then only the 'incremental' PDF is generated and concatenated to the initial version.
221
+
222
+ _This example produces [this PDF](assets/pdfs/examples/incremental_document_modification.pdf)_ (when [this PDF](assets/pdfs/simple.pdf) is used for the `existingPdfBytes` variable).
223
+
224
+ <!-- prettier-ignore -->
225
+ ```js
226
+ import { PDFDocument, StandardFonts } from 'pdf-lib';
227
+
228
+ // This should be a Uint8Array or ArrayBuffer
229
+ // This data can be obtained in a number of different ways
230
+ // If your running in a Node environment, you could use fs.readFile()
231
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
232
+ const existingPdfBytes = ...
233
+
234
+ // Load a PDFDocument from the existing PDF bytes
235
+ const pdfDoc = await PDFDocument.load(existingPdfBytes)
236
+
237
+ // Take a snapshot of the document
238
+ const snapshot = pdfDoc.takeSnapshot();
239
+
240
+ // Get the first page of the document
241
+ const pages = pdfDoc.getPages()
242
+ const firstPage = pages[0]
243
+
244
+ // Mark the page as modified
245
+ snapshot.markRefForSave(firstPage.ref)
246
+
247
+ // Draw a string of text diagonally across the first page
248
+ firstPage.drawText('Incremental saving is also awesome!', {
249
+ x: 50,
250
+ y: 4 * fontSize,
251
+ size: fontSize
252
+ })
253
+
254
+ // Serialize the PDFDocument to bytes (a Uint8Array)
255
+ const pdfIncrementalBytes = await pdfDoc.saveIncremental(snapshot)
256
+ const pdfBytes = Buffer.concatenate([ existingPdfBytes, pdfIncrementalBytes ])
257
+
258
+ // For example, `pdfBytes` can be:
259
+ // • Written to a file in Node
260
+ // • Downloaded from the browser
261
+ // • Rendered in an <iframe>
262
+ ```
263
+
264
+ Loading an existing PDF forIncrementalUpdate, makes things easier:
265
+ <!-- prettier-ignore -->
266
+ ```js
267
+ import { PDFDocument, StandardFonts } from 'pdf-lib';
268
+
269
+ // This should be a Uint8Array or ArrayBuffer
270
+ const existingPdfBytes = ...
271
+
272
+ // Load a PDFDocument from the existing PDF bytes, for incremental update
273
+ const pdfDoc = await PDFDocument.load(existingPdfBytes,{forIncrementalUpdate:true})
274
+
275
+ // Get the first page of the document
276
+ const pages = pdfDoc.getPages()
277
+ const firstPage = pages[0]
278
+
279
+ // Draw a string of text diagonally across the first page
280
+ firstPage.drawText('Incremental saving is also awesome!', {
281
+ x: 50,
282
+ y: 4 * fontSize,
283
+ size: fontSize
284
+ })
285
+
286
+ // Serialize the PDFDocument to bytes (a Uint8Array), using incremental updates
287
+ const pdfBytes = await pdfDoc.save()
288
+
289
+ // For example, `pdfBytes` can be:
290
+ // • Written to a file in Node
291
+ // • Downloaded from the browser
292
+ // • Rendered in an <iframe>
293
+ ```
294
+ You can force a rewrite of a PDF that was open for incremental update with the right parameter on save:
295
+ <!-- prettier-ignore -->
296
+ ```js
297
+ import { PDFDocument } from 'pdf-lib';
298
+
299
+ // This should be a Uint8Array or ArrayBuffer
300
+ const existingPdfBytes = ...
301
+
302
+ // Load a PDFDocument from the existing PDF bytes, for incremental update
303
+ const pdfDoc = await PDFDocument.load(existingPdfBytes,{forIncrementalUpdate:true})
304
+
305
+ // Do something..
306
+
307
+ // Serialize the PDFDocument to bytes (a Uint8Array), NOT using incremental updates
308
+ const pdfBytes = await pdfDoc.save({rewrite: true})
309
+ ```
310
+
311
+ #### Using pdf-lib to generate a placeholder for an electronic signature
312
+ @signpdf includes a pdf-lib-placeholder component, but it is based on the pdf-lib package that has no incremental update functionality. This code is taken from that library and modified to use incremental update for not invalidating previous file signatures. Is an example, that can be seen in integration test #20, some @signpdf constants has been changed to arbitrary values for the example to work "out of the box".
313
+
314
+ <!-- prettier-ignore -->
315
+ ```js
316
+ import { PDFDocument, StandardFonts, rgb, PDFArray, PDFNumber, PDFName, PDFHexString, PDFString, PDFInvalidObject } from 'pdf-lib';
317
+ const pdfBytes = ...
318
+
319
+ const pdfDoc = await PDFDocument.load(pdfBytes, {forIncrementalUpdate: true});
320
+ // visual representation of the signature
321
+ const page = pdfDoc.addPage([500, 200]);
322
+ const font = pdfDoc.embedStandardFont(StandardFonts.Helvetica);
323
+ page.drawRectangle({
324
+ x: 10,
325
+ y: 30,
326
+ width: 280,
327
+ height: 150,
328
+ borderWidth: 2,
329
+ borderColor: rgb(0.45, 0.45, 0.45),
330
+ });
331
+ page.drawText(`Electronic Signature Example\nSigned on ${(new Date()).toIsoString()}\nThis is not the real signature!!`, {
332
+ x: 20,
333
+ y: 200,
334
+ size: 14,
335
+ font,
336
+ });
337
+ // Add an AcroForm or update the existing one
338
+ let acroForm = pdfDoc.catalog.getOrCreateAcroForm();
339
+ // Create a placeholder where the the last 3 parameters of the
340
+ // actual range will be replaced when signing is done.
341
+ const byteRange = PDFArray.withContext(pdfDoc.context);
342
+ byteRange.push(PDFNumber.of(0));
343
+ byteRange.push(PDFName.of('*********'));
344
+ byteRange.push(PDFName.of('*********'));
345
+ byteRange.push(PDFName.of('*********'));
346
+ // Fill the contents of the placeholder with 00s.
347
+ const placeholder = PDFHexString.of(String.fromCharCode(0).repeat(8096));
348
+ // Create a signature dictionary to be referenced in the signature widget.
349
+ const appBuild = { App: { Name: 'Signature Example pdf-lib' } };
350
+ const signatureDict = pdfDoc.context.obj({
351
+ Type: 'Sig',
352
+ Filter: 'Adobe.PPKLite',
353
+ SubFilter: 'adbe.pkcs7.detached',
354
+ ByteRange: byteRange,
355
+ Contents: placeholder,
356
+ Reason: PDFString.of('Example Signature'),
357
+ M: PDFString.fromDate(new Date()),
358
+ ContactInfo: PDFString.of('me@pdf-lib.org'),
359
+ Name: PDFString.of('Example Signer'),
360
+ Location: PDFString.of('In a far away galaxy..'),
361
+ Prop_Build: {
362
+ Filter: { Name: 'Adobe.PPKLite' },
363
+ ...appBuild,
364
+ },
365
+ });
366
+ // Register signatureDict as a PDFInvalidObject to prevent PDFLib from serializing it
367
+ // in an object stream.
368
+ const signatureBuffer = new Uint8Array(signatureDict.sizeInBytes());
369
+ signatureDict.copyBytesInto(signatureBuffer, 0);
370
+ const signatureObj = PDFInvalidObject.of(signatureBuffer);
371
+ const signatureDictRef = pdfDoc.context.register(signatureObj);
372
+ // Create the signature widget
373
+ const widgetRect = [0, 0, 0, 0];
374
+ const rect = PDFArray.withContext(pdfDoc.context);
375
+ widgetRect.forEach((c) => rect.push(PDFNumber.of(c)));
376
+ const apStream = pdfDoc.context.formXObject([], {
377
+ BBox: widgetRect,
378
+ Resources: {}, // Necessary to avoid Acrobat bug (see https://stackoverflow.com/a/73011571)
379
+ });
380
+ const widgetDict = pdfDoc.context.obj({
381
+ Type: 'Annot',
382
+ Subtype: 'Widget',
383
+ FT: 'Sig',
384
+ Rect: rect,
385
+ V: signatureDictRef,
386
+ T: PDFString.of('TestSig'),
387
+ TU: PDFString.of('Electronic Signature Example'),
388
+ F: 2,
389
+ P: page.ref,
390
+ AP: { N: pdfDoc.context.register(apStream) }, // Required for PDF/A compliance
391
+ });
392
+ const widgetDictRef = pdfDoc.context.register(widgetDict);
393
+ // Annotate the widget on the given page
394
+ let annotations = page.node.lookupMaybe(PDFName.of('Annots'), PDFArray);
395
+ if (typeof annotations === 'undefined') {
396
+ annotations = pdfDoc.context.obj([]);
397
+ }
398
+ annotations.push(widgetDictRef);
399
+ page.node.set(PDFName.of('Annots'), annotations);
400
+ let sigFlags: PDFNumber;
401
+ if (acroForm.dict.has(PDFName.of('SigFlags'))) {
402
+ // Already has some flags, will merge
403
+ sigFlags = acroForm.dict.get(PDFName.of('SigFlags')) as PDFNumber;
404
+ } else {
405
+ // Create blank flags
406
+ sigFlags = PDFNumber.of(0);
407
+ }
408
+ const updatedFlags = PDFNumber.of(sigFlags!.asNumber() | 1 | 2);
409
+ acroForm.dict.set(PDFName.of('SigFlags'), updatedFlags);
410
+ let fields = acroForm.dict.get(PDFName.of('Fields'));
411
+ if (!(fields instanceof PDFArray)) {
412
+ fields = pdfDoc.context.obj([]);
413
+ acroForm.dict.set(PDFName.of('Fields'), fields);
414
+ }
415
+ (fields as PDFArray).push(widgetDictRef);
416
+ // Serialize the PDFDocument to bytes (a Uint8Array), using incremental updates
417
+ const pdfBytes = await pdfDoc.save()
418
+
419
+ // `pdfBytes` should be handled to the signing library to calculate the
420
+ // file hash and fill in the generated placeholder for the signature
421
+ ```
422
+
423
+
424
+ ### Create Form
425
+
426
+ _This example produces [this PDF](assets/pdfs/examples/create_form.pdf)._
427
+
428
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/bct7vngL/4/)
429
+
430
+ > See also [Creating and Filling Forms](#creating-and-filling-forms)
431
+
432
+ <!-- prettier-ignore -->
433
+ ```js
434
+ import { PDFDocument } from 'pdf-lib'
435
+
436
+ // Create a new PDFDocument
437
+ const pdfDoc = await PDFDocument.create()
438
+
439
+ // Add a blank page to the document
440
+ const page = pdfDoc.addPage([550, 750])
441
+
442
+ // Get the form so we can add fields to it
443
+ const form = pdfDoc.getForm()
444
+
445
+ // Add the superhero text field and description
446
+ page.drawText('Enter your favorite superhero:', { x: 50, y: 700, size: 20 })
447
+
448
+ const superheroField = form.createTextField('favorite.superhero')
449
+ superheroField.setText('One Punch Man')
450
+ superheroField.addToPage(page, { x: 55, y: 640 })
451
+
452
+ // Add the rocket radio group, labels, and description
453
+ page.drawText('Select your favorite rocket:', { x: 50, y: 600, size: 20 })
454
+
455
+ page.drawText('Falcon Heavy', { x: 120, y: 560, size: 18 })
456
+ page.drawText('Saturn IV', { x: 120, y: 500, size: 18 })
457
+ page.drawText('Delta IV Heavy', { x: 340, y: 560, size: 18 })
458
+ page.drawText('Space Launch System', { x: 340, y: 500, size: 18 })
459
+
460
+ const rocketField = form.createRadioGroup('favorite.rocket')
461
+ rocketField.addOptionToPage('Falcon Heavy', page, { x: 55, y: 540 })
462
+ rocketField.addOptionToPage('Saturn IV', page, { x: 55, y: 480 })
463
+ rocketField.addOptionToPage('Delta IV Heavy', page, { x: 275, y: 540 })
464
+ rocketField.addOptionToPage('Space Launch System', page, { x: 275, y: 480 })
465
+ rocketField.select('Saturn IV')
466
+
467
+ // Add the gundam check boxes, labels, and description
468
+ page.drawText('Select your favorite gundams:', { x: 50, y: 440, size: 20 })
469
+
470
+ page.drawText('Exia', { x: 120, y: 400, size: 18 })
471
+ page.drawText('Kyrios', { x: 120, y: 340, size: 18 })
472
+ page.drawText('Virtue', { x: 340, y: 400, size: 18 })
473
+ page.drawText('Dynames', { x: 340, y: 340, size: 18 })
474
+
475
+ const exiaField = form.createCheckBox('gundam.exia')
476
+ const kyriosField = form.createCheckBox('gundam.kyrios')
477
+ const virtueField = form.createCheckBox('gundam.virtue')
478
+ const dynamesField = form.createCheckBox('gundam.dynames')
479
+
480
+ exiaField.addToPage(page, { x: 55, y: 380 })
481
+ kyriosField.addToPage(page, { x: 55, y: 320 })
482
+ virtueField.addToPage(page, { x: 275, y: 380 })
483
+ dynamesField.addToPage(page, { x: 275, y: 320 })
484
+
485
+ exiaField.check()
486
+ dynamesField.check()
487
+
488
+ // Add the planet dropdown and description
489
+ page.drawText('Select your favorite planet*:', { x: 50, y: 280, size: 20 })
490
+
491
+ const planetsField = form.createDropdown('favorite.planet')
492
+ planetsField.addOptions(['Venus', 'Earth', 'Mars', 'Pluto'])
493
+ planetsField.select('Pluto')
494
+ planetsField.addToPage(page, { x: 55, y: 220 })
495
+
496
+ // Add the person option list and description
497
+ page.drawText('Select your favorite person:', { x: 50, y: 180, size: 18 })
498
+
499
+ const personField = form.createOptionList('favorite.person')
500
+ personField.addOptions([
501
+ 'Julius Caesar',
502
+ 'Ada Lovelace',
503
+ 'Cleopatra',
504
+ 'Aaron Burr',
505
+ 'Mark Antony',
506
+ ])
507
+ personField.select('Ada Lovelace')
508
+ personField.addToPage(page, { x: 55, y: 70 })
509
+
510
+ // Just saying...
511
+ page.drawText(`* Pluto should be a planet too!`, { x: 15, y: 15, size: 15 })
512
+
513
+ // Serialize the PDFDocument to bytes (a Uint8Array)
514
+ const pdfBytes = await pdfDoc.save()
515
+
516
+ // For example, `pdfBytes` can be:
517
+ // • Written to a file in Node
518
+ // • Downloaded from the browser
519
+ // • Rendered in an <iframe>
520
+ ```
521
+
522
+ ### Fill Form
523
+
524
+ _This example produces [this PDF](assets/pdfs/examples/fill_form.pdf)_ (when [this PDF](assets/pdfs/dod_character.pdf) is used for the `formPdfBytes` variable, [this image](assets/images/small_mario.png) is used for the `marioImageBytes` variable, and [this image](assets/images/mario_emblem.png) is used for the `emblemImageBytes` variable).
525
+
526
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/0mwfqkv6/3/)
527
+
528
+ > See also [Creating and Filling Forms](#creating-and-filling-forms)
529
+
530
+ <!-- prettier-ignore -->
531
+ ```js
532
+ import { PDFDocument } from 'pdf-lib'
533
+
534
+ // These should be Uint8Arrays or ArrayBuffers
535
+ // This data can be obtained in a number of different ways
536
+ // If your running in a Node environment, you could use fs.readFile()
537
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
538
+ const formPdfBytes = ...
539
+ const marioImageBytes = ...
540
+ const emblemImageBytes = ...
541
+
542
+ // Load a PDF with form fields
543
+ const pdfDoc = await PDFDocument.load(formPdfBytes)
544
+
545
+ // Embed the Mario and emblem images
546
+ const marioImage = await pdfDoc.embedPng(marioImageBytes)
547
+ const emblemImage = await pdfDoc.embedPng(emblemImageBytes)
548
+
549
+ // Get the form containing all the fields
550
+ const form = pdfDoc.getForm()
551
+
552
+ // Get all fields in the PDF by their names
553
+ const nameField = form.getTextField('CharacterName 2')
554
+ const ageField = form.getTextField('Age')
555
+ const heightField = form.getTextField('Height')
556
+ const weightField = form.getTextField('Weight')
557
+ const eyesField = form.getTextField('Eyes')
558
+ const skinField = form.getTextField('Skin')
559
+ const hairField = form.getTextField('Hair')
560
+
561
+ const alliesField = form.getTextField('Allies')
562
+ const factionField = form.getTextField('FactionName')
563
+ const backstoryField = form.getTextField('Backstory')
564
+ const traitsField = form.getTextField('Feat+Traits')
565
+ const treasureField = form.getTextField('Treasure')
566
+
567
+ const characterImageField = form.getButton('CHARACTER IMAGE')
568
+ const factionImageField = form.getTextField('Faction Symbol Image')
569
+
570
+ // Fill in the basic info fields
571
+ nameField.setText('Mario')
572
+ ageField.setText('24 years')
573
+ heightField.setText(`5' 1"`)
574
+ weightField.setText('196 lbs')
575
+ eyesField.setText('blue')
576
+ skinField.setText('white')
577
+ hairField.setText('brown')
578
+
579
+ // Fill the character image field with our Mario image
580
+ characterImageField.setImage(marioImage)
581
+
582
+ // Fill in the allies field
583
+ alliesField.setText(
584
+ [
585
+ `Allies:`,
586
+ ` • Princess Daisy`,
587
+ ` • Princess Peach`,
588
+ ` • Rosalina`,
589
+ ` • Geno`,
590
+ ` • Luigi`,
591
+ ` • Donkey Kong`,
592
+ ` • Yoshi`,
593
+ ` • Diddy Kong`,
594
+ ``,
595
+ `Organizations:`,
596
+ ` • Italian Plumbers Association`,
597
+ ].join('\n'),
598
+ )
599
+
600
+ // Fill in the faction name field
601
+ factionField.setText(`Mario's Emblem`)
602
+
603
+ // Fill the faction image field with our emblem image
604
+ factionImageField.setImage(emblemImage)
605
+
606
+ // Fill in the backstory field
607
+ backstoryField.setText(
608
+ `Mario is a fictional character in the Mario video game franchise, owned by Nintendo and created by Japanese video game designer Shigeru Miyamoto. Serving as the company's mascot and the eponymous protagonist of the series, Mario has appeared in over 200 video games since his creation. Depicted as a short, pudgy, Italian plumber who resides in the Mushroom Kingdom, his adventures generally center upon rescuing Princess Peach from the Koopa villain Bowser. His younger brother and sidekick is Luigi.`,
609
+ )
610
+
611
+ // Fill in the traits field
612
+ traitsField.setText(
613
+ [
614
+ `Mario can use three basic three power-ups:`,
615
+ ` • the Super Mushroom, which causes Mario to grow larger`,
616
+ ` • the Fire Flower, which allows Mario to throw fireballs`,
617
+ ` • the Starman, which gives Mario temporary invincibility`,
618
+ ].join('\n'),
619
+ )
620
+
621
+ // Fill in the treasure field
622
+ treasureField.setText(['• Gold coins', '• Treasure chests'].join('\n'))
623
+
624
+ // Serialize the PDFDocument to bytes (a Uint8Array)
625
+ const pdfBytes = await pdfDoc.save()
626
+
627
+ // For example, `pdfBytes` can be:
628
+ // • Written to a file in Node
629
+ // • Downloaded from the browser
630
+ // • Rendered in an <iframe>
631
+ ```
632
+
633
+ ### Flatten Form
634
+
635
+ _This example produces [this PDF](assets/pdfs/examples/flatten_form.pdf)_ (when [this PDF](assets/pdfs/form_to_flatten.pdf) is used for the `formPdfBytes` variable).
636
+
637
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/skevywdz/2/)
638
+
639
+ <!-- prettier-ignore -->
640
+ ```js
641
+ import { PDFDocument } from 'pdf-lib'
642
+
643
+ // This should be a Uint8Array or ArrayBuffer
644
+ // This data can be obtained in a number of different ways
645
+ // If your running in a Node environment, you could use fs.readFile()
646
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
647
+ const formPdfBytes = ...
648
+
649
+ // Load a PDF with form fields
650
+ const pdfDoc = await PDFDocument.load(formPdfBytes)
651
+
652
+ // Get the form containing all the fields
653
+ const form = pdfDoc.getForm()
654
+
655
+ // Fill the form's fields
656
+ form.getTextField('Text1').setText('Some Text');
657
+
658
+ form.getRadioGroup('Group2').select('Choice1');
659
+ form.getRadioGroup('Group3').select('Choice3');
660
+ form.getRadioGroup('Group4').select('Choice1');
661
+
662
+ form.getCheckBox('Check Box3').check();
663
+ form.getCheckBox('Check Box4').uncheck();
664
+
665
+ form.getDropdown('Dropdown7').select('Infinity');
666
+
667
+ form.getOptionList('List Box6').select('Honda');
668
+
669
+ // Flatten the form's fields
670
+ form.flatten();
671
+
672
+ // Serialize the PDFDocument to bytes (a Uint8Array)
673
+ const pdfBytes = await pdfDoc.save()
674
+
675
+ // For example, `pdfBytes` can be:
676
+ // • Written to a file in Node
677
+ // • Downloaded from the browser
678
+ // • Rendered in an <iframe>
679
+ ```
680
+
681
+ ### Copy Pages
682
+
683
+ _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).
684
+
685
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/ybank8s9/2/)
686
+
687
+ <!-- prettier-ignore -->
688
+ ```js
689
+ import { PDFDocument } from 'pdf-lib'
690
+
691
+ // Create a new PDFDocument
692
+ const pdfDoc = await PDFDocument.create()
693
+
694
+ // These should be Uint8Arrays or ArrayBuffers
695
+ // This data can be obtained in a number of different ways
696
+ // If your running in a Node environment, you could use fs.readFile()
697
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
698
+ const firstDonorPdfBytes = ...
699
+ const secondDonorPdfBytes = ...
700
+
701
+ // Load a PDFDocument from each of the existing PDFs
702
+ const firstDonorPdfDoc = await PDFDocument.load(firstDonorPdfBytes)
703
+ const secondDonorPdfDoc = await PDFDocument.load(secondDonorPdfBytes)
704
+
705
+ // Copy the 1st page from the first donor document, and
706
+ // the 743rd page from the second donor document
707
+ const [firstDonorPage] = await pdfDoc.copyPages(firstDonorPdfDoc, [0])
708
+ const [secondDonorPage] = await pdfDoc.copyPages(secondDonorPdfDoc, [742])
709
+
710
+ // Add the first copied page
711
+ pdfDoc.addPage(firstDonorPage)
712
+
713
+ // Insert the second copied page to index 0, so it will be the
714
+ // first page in `pdfDoc`
715
+ pdfDoc.insertPage(0, secondDonorPage)
716
+
717
+ // Serialize the PDFDocument to bytes (a Uint8Array)
718
+ const pdfBytes = await pdfDoc.save()
719
+
720
+ // For example, `pdfBytes` can be:
721
+ // • Written to a file in Node
722
+ // • Downloaded from the browser
723
+ // • Rendered in an <iframe>
724
+ ```
725
+
726
+ ### Embed PNG and JPEG Images
727
+
728
+ _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).
729
+
730
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/bcya43ju/5/)
731
+
732
+ <!-- prettier-ignore -->
733
+ ```js
734
+ import { PDFDocument } from 'pdf-lib'
735
+
736
+ // These should be Uint8Arrays or ArrayBuffers
737
+ // This data can be obtained in a number of different ways
738
+ // If your running in a Node environment, you could use fs.readFile()
739
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
740
+ const jpgImageBytes = ...
741
+ const pngImageBytes = ...
742
+
743
+ // Create a new PDFDocument
744
+ const pdfDoc = await PDFDocument.create()
745
+
746
+ // Embed the JPG image bytes and PNG image bytes
747
+ const jpgImage = await pdfDoc.embedJpg(jpgImageBytes)
748
+ const pngImage = await pdfDoc.embedPng(pngImageBytes)
749
+
750
+ // Get the width/height of the JPG image scaled down to 25% of its original size
751
+ const jpgDims = jpgImage.scale(0.25)
752
+
753
+ // Get the width/height of the PNG image scaled down to 50% of its original size
754
+ const pngDims = pngImage.scale(0.5)
755
+
756
+ // Add a blank page to the document
757
+ const page = pdfDoc.addPage()
758
+
759
+ // Draw the JPG image in the center of the page
760
+ page.drawImage(jpgImage, {
761
+ x: page.getWidth() / 2 - jpgDims.width / 2,
762
+ y: page.getHeight() / 2 - jpgDims.height / 2,
763
+ width: jpgDims.width,
764
+ height: jpgDims.height,
765
+ })
766
+
767
+ // Draw the PNG image near the lower right corner of the JPG image
768
+ page.drawImage(pngImage, {
769
+ x: page.getWidth() / 2 - pngDims.width / 2 + 75,
770
+ y: page.getHeight() / 2 - pngDims.height,
771
+ width: pngDims.width,
772
+ height: pngDims.height,
773
+ })
774
+
775
+ // Serialize the PDFDocument to bytes (a Uint8Array)
776
+ const pdfBytes = await pdfDoc.save()
777
+
778
+ // For example, `pdfBytes` can be:
779
+ // • Written to a file in Node
780
+ // • Downloaded from the browser
781
+ // • Rendered in an <iframe>
782
+ ```
783
+
784
+ ### Embed PDF Pages
785
+
786
+ _This example produces [this PDF](assets/pdfs/examples/embed_pdf_pages.pdf)_ (when [this PDF](assets/pdfs/american_flag.pdf) is used for the `americanFlagPdfBytes` variable and [this PDF](assets/pdfs/us_constitution.pdf) is used for the `usConstitutionPdfBytes` variable).
787
+
788
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/Lyb16ocj/13/)
789
+
790
+ <!-- prettier-ignore -->
791
+ ```js
792
+ import { PDFDocument } from 'pdf-lib'
793
+
794
+ // These should be Uint8Arrays or ArrayBuffers
795
+ // This data can be obtained in a number of different ways
796
+ // If your running in a Node environment, you could use fs.readFile()
797
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
798
+ const americanFlagPdfBytes = ...
799
+ const usConstitutionPdfBytes = ...
800
+
801
+ // Create a new PDFDocument
802
+ const pdfDoc = await PDFDocument.create()
803
+
804
+ // Embed the American flag PDF bytes
805
+ const [americanFlag] = await pdfDoc.embedPdf(americanFlagPdfBytes)
806
+
807
+ // Load the U.S. constitution PDF bytes
808
+ const usConstitutionPdf = await PDFDocument.load(usConstitutionPdfBytes)
809
+
810
+ // Embed the second page of the constitution and clip the preamble
811
+ const preamble = await pdfDoc.embedPage(usConstitutionPdf.getPages()[1], {
812
+ left: 55,
813
+ bottom: 485,
814
+ right: 300,
815
+ top: 575,
816
+ })
817
+
818
+ // Get the width/height of the American flag PDF scaled down to 30% of
819
+ // its original size
820
+ const americanFlagDims = americanFlag.scale(0.3)
821
+
822
+ // Get the width/height of the preamble clipping scaled up to 225% of
823
+ // its original size
824
+ const preambleDims = preamble.scale(2.25)
825
+
826
+ // Add a blank page to the document
827
+ const page = pdfDoc.addPage()
828
+
829
+ // Draw the American flag image in the center top of the page
830
+ page.drawPage(americanFlag, {
831
+ ...americanFlagDims,
832
+ x: page.getWidth() / 2 - americanFlagDims.width / 2,
833
+ y: page.getHeight() - americanFlagDims.height - 150,
834
+ })
835
+
836
+ // Draw the preamble clipping in the center bottom of the page
837
+ page.drawPage(preamble, {
838
+ ...preambleDims,
839
+ x: page.getWidth() / 2 - preambleDims.width / 2,
840
+ y: page.getHeight() / 2 - preambleDims.height / 2 - 50,
841
+ })
842
+
843
+ // Serialize the PDFDocument to bytes (a Uint8Array)
844
+ const pdfBytes = await pdfDoc.save()
845
+
846
+ // For example, `pdfBytes` can be:
847
+ // • Written to a file in Node
848
+ // • Downloaded from the browser
849
+ // • Rendered in an <iframe>
850
+ ```
851
+
852
+ ### Embed Font and Measure Text
853
+
854
+ `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.
855
+
856
+ > **[See below for detailed installation instructions on installing `@pdf-lib/fontkit` as a UMD or NPM module.](#fontkit-installation)**
857
+
858
+ _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).
859
+
860
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/rgu6ca59/2/)
861
+
862
+ <!-- prettier-ignore -->
863
+ ```js
864
+ import { PDFDocument, rgb } from 'pdf-lib'
865
+ import fontkit from '@pdf-lib/fontkit'
866
+
867
+ // This should be a Uint8Array or ArrayBuffer
868
+ // This data can be obtained in a number of different ways
869
+ // If you're running in a Node environment, you could use fs.readFile()
870
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
871
+ const fontBytes = ...
872
+
873
+ // Create a new PDFDocument
874
+ const pdfDoc = await PDFDocument.create()
875
+
876
+ // Register the `fontkit` instance
877
+ pdfDoc.registerFontkit(fontkit)
878
+
879
+ // Embed our custom font in the document
880
+ const customFont = await pdfDoc.embedFont(fontBytes)
881
+
882
+ // Add a blank page to the document
883
+ const page = pdfDoc.addPage()
884
+
885
+ // Create a string of text and measure its width and height in our custom font
886
+ const text = 'This is text in an embedded font!'
887
+ const textSize = 35
888
+ const textWidth = customFont.widthOfTextAtSize(text, textSize)
889
+ const textHeight = customFont.heightAtSize(textSize)
890
+
891
+ // Draw the string of text on the page
892
+ page.drawText(text, {
893
+ x: 40,
894
+ y: 450,
895
+ size: textSize,
896
+ font: customFont,
897
+ color: rgb(0, 0.53, 0.71),
898
+ })
899
+
900
+ // Draw a box around the string of text
901
+ page.drawRectangle({
902
+ x: 40,
903
+ y: 450,
904
+ width: textWidth,
905
+ height: textHeight,
906
+ borderColor: rgb(1, 0, 0),
907
+ borderWidth: 1.5,
908
+ })
909
+
910
+ // Serialize the PDFDocument to bytes (a Uint8Array)
911
+ const pdfBytes = await pdfDoc.save()
912
+
913
+ // For example, `pdfBytes` can be:
914
+ // • Written to a file in Node
915
+ // • Downloaded from the browser
916
+ // • Rendered in an <iframe>
917
+ ```
918
+
919
+ ### Add Attachments
920
+
921
+ _This example produces [this PDF](assets/pdfs/examples/add_attachments.pdf)_ (when [this image](assets/images/cat_riding_unicorn.jpg) is used for the `jpgAttachmentBytes` variable and [this PDF](assets/pdfs/us_constitution.pdf) is used for the `pdfAttachmentBytes` variable).
922
+
923
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/9snL63wj/5/)
924
+
925
+ <!-- prettier-ignore -->
926
+ ```js
927
+ import { PDFDocument } from 'pdf-lib'
928
+
929
+ // These should be Uint8Arrays or ArrayBuffers
930
+ // This data can be obtained in a number of different ways
931
+ // If your running in a Node environment, you could use fs.readFile()
932
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
933
+ const jpgAttachmentBytes = ...
934
+ const pdfAttachmentBytes = ...
935
+
936
+ // Create a new PDFDocument
937
+ const pdfDoc = await PDFDocument.create()
938
+
939
+ // Add the JPG attachment
940
+ await pdfDoc.attach(jpgAttachmentBytes, 'cat_riding_unicorn.jpg', {
941
+ mimeType: 'image/jpeg',
942
+ description: 'Cool cat riding a unicorn! 🦄🐈🕶️',
943
+ creationDate: new Date('2019/12/01'),
944
+ modificationDate: new Date('2020/04/19'),
945
+ })
946
+
947
+ // Add the PDF attachment
948
+ await pdfDoc.attach(pdfAttachmentBytes, 'us_constitution.pdf', {
949
+ mimeType: 'application/pdf',
950
+ description: 'Constitution of the United States 🇺🇸🦅',
951
+ creationDate: new Date('1787/09/17'),
952
+ modificationDate: new Date('1992/05/07'),
953
+ })
954
+
955
+ // Add a page with some text
956
+ const page = pdfDoc.addPage();
957
+ page.drawText('This PDF has two attachments', { x: 135, y: 415 })
958
+
959
+ // Serialize the PDFDocument to bytes (a Uint8Array)
960
+ const pdfBytes = await pdfDoc.save()
961
+
962
+ // For example, `pdfBytes` can be:
963
+ // • Written to a file in Node
964
+ // • Downloaded from the browser
965
+ // • Rendered in an <iframe>
966
+ ```
967
+
968
+ ### Set Document Metadata
969
+
970
+ _This example produces [this PDF](assets/pdfs/examples/set_document_metadata.pdf)_.
971
+
972
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/vcwmfnbe/2/)
973
+
974
+ <!-- prettier-ignore -->
975
+ ```js
976
+ import { PDFDocument, StandardFonts } from 'pdf-lib'
977
+
978
+ // Create a new PDFDocument
979
+ const pdfDoc = await PDFDocument.create()
980
+
981
+ // Embed the Times Roman font
982
+ const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)
983
+
984
+ // Add a page and draw some text on it
985
+ const page = pdfDoc.addPage([500, 600])
986
+ page.setFont(timesRomanFont)
987
+ page.drawText('The Life of an Egg', { x: 60, y: 500, size: 50 })
988
+ page.drawText('An Epic Tale of Woe', { x: 125, y: 460, size: 25 })
989
+
990
+ // Set all available metadata fields on the PDFDocument. Note that these fields
991
+ // are visible in the "Document Properties" section of most PDF readers.
992
+ pdfDoc.setTitle('🥚 The Life of an Egg 🍳')
993
+ pdfDoc.setAuthor('Humpty Dumpty')
994
+ pdfDoc.setSubject('📘 An Epic Tale of Woe 📖')
995
+ pdfDoc.setKeywords(['eggs', 'wall', 'fall', 'king', 'horses', 'men'])
996
+ pdfDoc.setProducer('PDF App 9000 🤖')
997
+ pdfDoc.setCreator('pdf-lib (https://github.com/Hopding/pdf-lib)')
998
+ pdfDoc.setCreationDate(new Date('2018-06-24T01:58:37.228Z'))
999
+ pdfDoc.setModificationDate(new Date('2019-12-21T07:00:11.000Z'))
1000
+
1001
+ // Serialize the PDFDocument to bytes (a Uint8Array)
1002
+ const pdfBytes = await pdfDoc.save()
1003
+
1004
+ // For example, `pdfBytes` can be:
1005
+ // • Written to a file in Node
1006
+ // • Downloaded from the browser
1007
+ // • Rendered in an <iframe>
1008
+ ```
1009
+
1010
+ ### Read Document Metadata
1011
+
1012
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/eg8rfz3k/16/)
1013
+
1014
+ <!-- prettier-ignore -->
1015
+ ```js
1016
+ import { PDFDocument } from 'pdf-lib'
1017
+
1018
+ // This should be a Uint8Array or ArrayBuffer
1019
+ // This data can be obtained in a number of different ways
1020
+ // If your running in a Node environment, you could use fs.readFile()
1021
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
1022
+ const existingPdfBytes = ...
1023
+
1024
+ // Load a PDFDocument without updating its existing metadata
1025
+ const pdfDoc = await PDFDocument.load(existingPdfBytes, {
1026
+ updateMetadata: false
1027
+ })
1028
+
1029
+ // Print all available metadata fields
1030
+ console.log('Title:', pdfDoc.getTitle())
1031
+ console.log('Author:', pdfDoc.getAuthor())
1032
+ console.log('Subject:', pdfDoc.getSubject())
1033
+ console.log('Creator:', pdfDoc.getCreator())
1034
+ console.log('Keywords:', pdfDoc.getKeywords())
1035
+ console.log('Producer:', pdfDoc.getProducer())
1036
+ console.log('Creation Date:', pdfDoc.getCreationDate())
1037
+ console.log('Modification Date:', pdfDoc.getModificationDate())
1038
+ ```
1039
+
1040
+ This script outputs the following (_when [this PDF](assets/pdfs/with_cropbox.pdf) is used for the `existingPdfBytes` variable_):
1041
+
1042
+ ```
1043
+ Title: Microsoft Word - Basic Curriculum Vitae example.doc
1044
+ Author: Administrator
1045
+ Subject: undefined
1046
+ Creator: PScript5.dll Version 5.2
1047
+ Keywords: undefined
1048
+ Producer: Acrobat Distiller 8.1.0 (Windows)
1049
+ Creation Date: 2010-07-29T14:26:00.000Z
1050
+ Modification Date: 2010-07-29T14:26:00.000Z
1051
+ ```
1052
+
1053
+ ### Set Viewer Preferences
1054
+
1055
+ <!-- prettier-ignore -->
1056
+ ```js
1057
+ import {
1058
+ PDFDocument,
1059
+ StandardFonts,
1060
+ NonFullScreenPageMode,
1061
+ ReadingDirection,
1062
+ PrintScaling,
1063
+ Duplex,
1064
+ PDFName,
1065
+ } from 'pdf-lib'
1066
+
1067
+ // Create a new PDFDocument
1068
+ const pdfDoc = await PDFDocument.create()
1069
+
1070
+ // Embed the Times Roman font
1071
+ const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)
1072
+
1073
+ // Add a page and draw some text on it
1074
+ const page = pdfDoc.addPage([500, 600])
1075
+ page.setFont(timesRomanFont)
1076
+ page.drawText('The Life of an Egg', { x: 60, y: 500, size: 50 })
1077
+ page.drawText('An Epic Tale of Woe', { x: 125, y: 460, size: 25 })
1078
+
1079
+ // Set all available viewer preferences on the PDFDocument:
1080
+ const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()
1081
+ viewerPrefs.setHideToolbar(true)
1082
+ viewerPrefs.setHideMenubar(true)
1083
+ viewerPrefs.setHideWindowUI(true)
1084
+ viewerPrefs.setFitWindow(true)
1085
+ viewerPrefs.setCenterWindow(true)
1086
+ viewerPrefs.setDisplayDocTitle(true)
1087
+
1088
+ // Set the PageMode (otherwise setting NonFullScreenPageMode has no meaning)
1089
+ pdfDoc.catalog.set(PDFName.of('PageMode'), PDFName.of('FullScreen'))
1090
+
1091
+ // Set what happens when fullScreen is closed
1092
+ viewerPrefs.setNonFullScreenPageMode(NonFullScreenPageMode.UseOutlines)
1093
+
1094
+ viewerPrefs.setReadingDirection(ReadingDirection.L2R)
1095
+ viewerPrefs.setPrintScaling(PrintScaling.None)
1096
+ viewerPrefs.setDuplex(Duplex.DuplexFlipLongEdge)
1097
+ viewerPrefs.setPickTrayByPDFSize(true)
1098
+
1099
+ // We can set the default print range to only the first page
1100
+ viewerPrefs.setPrintPageRange({ start: 0, end: 0 })
1101
+
1102
+ // Or we can supply noncontiguous ranges (e.g. pages 1, 3, and 5-7)
1103
+ viewerPrefs.setPrintPageRange([
1104
+ { start: 0, end: 0 },
1105
+ { start: 2, end: 2 },
1106
+ { start: 4, end: 6 },
1107
+ ])
1108
+
1109
+ viewerPrefs.setNumCopies(2)
1110
+
1111
+ // Serialize the PDFDocument to bytes (a Uint8Array)
1112
+ const pdfBytes = await pdfDoc.save()
1113
+
1114
+ // For example, `pdfBytes` can be:
1115
+ // • Written to a file in Node
1116
+ // • Downloaded from the browser
1117
+ // • Rendered in an <iframe>
1118
+ ```
1119
+
1120
+ ### Read Viewer Preferences
1121
+
1122
+ <!-- prettier-ignore -->
1123
+ ```js
1124
+ import { PDFDocument } from 'pdf-lib'
1125
+
1126
+ // This should be a Uint8Array or ArrayBuffer
1127
+ // This data can be obtained in a number of different ways
1128
+ // If your running in a Node environment, you could use fs.readFile()
1129
+ // In the browser, you could make a fetch() call and use res.arrayBuffer()
1130
+ const existingPdfBytes = ...
1131
+
1132
+ // Load a PDFDocument without updating its existing metadata
1133
+ const pdfDoc = await PDFDocument.load(existingPdfBytes)
1134
+ const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()
1135
+
1136
+ // Print all available viewer preference fields
1137
+ console.log('HideToolbar:', viewerPrefs.getHideToolbar())
1138
+ console.log('HideMenubar:', viewerPrefs.getHideMenubar())
1139
+ console.log('HideWindowUI:', viewerPrefs.getHideWindowUI())
1140
+ console.log('FitWindow:', viewerPrefs.getFitWindow())
1141
+ console.log('CenterWindow:', viewerPrefs.getCenterWindow())
1142
+ console.log('DisplayDocTitle:', viewerPrefs.getDisplayDocTitle())
1143
+ console.log('NonFullScreenPageMode:', viewerPrefs.getNonFullScreenPageMode())
1144
+ console.log('ReadingDirection:', viewerPrefs.getReadingDirection())
1145
+ console.log('PrintScaling:', viewerPrefs.getPrintScaling())
1146
+ console.log('Duplex:', viewerPrefs.getDuplex())
1147
+ console.log('PickTrayByPDFSize:', viewerPrefs.getPickTrayByPDFSize())
1148
+ console.log('PrintPageRange:', viewerPrefs.getPrintPageRange())
1149
+ console.log('NumCopies:', viewerPrefs.getNumCopies())
1150
+ ```
1151
+
1152
+ This script outputs the following (_when [this PDF](assets/pdfs/with_viewer_prefs.pdf) is used for the `existingPdfBytes` variable_):
1153
+
1154
+ ```
1155
+ HideToolbar: true
1156
+ HideMenubar: true
1157
+ HideWindowUI: false
1158
+ FitWindow: true
1159
+ CenterWindow: true
1160
+ DisplayDocTitle: true
1161
+ NonFullScreenPageMode: UseNone
1162
+ ReadingDirection: R2L
1163
+ PrintScaling: None
1164
+ Duplex: DuplexFlipLongEdge
1165
+ PickTrayByPDFSize: true
1166
+ PrintPageRange: [ { start: 1, end: 1 }, { start: 3, end: 4 } ]
1167
+ NumCopies: 2
1168
+ ```
1169
+
1170
+ ### Draw SVG Paths
1171
+
1172
+ _This example produces [this PDF](assets/pdfs/examples/draw_svg_paths.pdf)_.
1173
+
1174
+ [Try the JSFiddle demo](https://jsfiddle.net/Hopding/bwaomr9h/2/)
1175
+
1176
+ <!-- prettier-ignore -->
1177
+ ```js
1178
+ import { PDFDocument, rgb } from 'pdf-lib'
1179
+
1180
+ // SVG path for a wavy line
1181
+ const svgPath =
1182
+ 'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90'
1183
+
1184
+ // Create a new PDFDocument
1185
+ const pdfDoc = await PDFDocument.create()
1186
+
1187
+ // Add a blank page to the document
1188
+ const page = pdfDoc.addPage()
1189
+ page.moveTo(100, page.getHeight() - 5)
1190
+
1191
+ // Draw the SVG path as a black line
1192
+ page.moveDown(25)
1193
+ page.drawSvgPath(svgPath)
1194
+
1195
+ // Draw the SVG path as a thick green line
1196
+ page.moveDown(200)
1197
+ page.drawSvgPath(svgPath, { borderColor: rgb(0, 1, 0), borderWidth: 5 })
1198
+
1199
+ // Draw the SVG path and fill it with red
1200
+ page.moveDown(200)
1201
+ page.drawSvgPath(svgPath, { color: rgb(1, 0, 0) })
1202
+
1203
+ // Draw the SVG path at 50% of its original size
1204
+ page.moveDown(200)
1205
+ page.drawSvgPath(svgPath, { scale: 0.5 })
1206
+
1207
+ // Serialize the PDFDocument to bytes (a Uint8Array)
1208
+ const pdfBytes = await pdfDoc.save()
1209
+
1210
+ // For example, `pdfBytes` can be:
1211
+ // • Written to a file in Node
1212
+ // • Downloaded from the browser
1213
+ // • Rendered in an <iframe>
1214
+ ```
1215
+
1216
+ ## Deno Usage
1217
+
1218
+ `pdf-lib` fully supports the exciting new [Deno](https://deno.land/) runtime! All of the [usage examples](#usage-examples) work in Deno. The only thing you need to do is change the imports for `pdf-lib` and `@pdf-lib/fontkit` to use the [Skypack](https://www.skypack.dev/) CDN, because Deno requires all modules to be referenced via URLs.
1219
+
1220
+ > **See also [How to Create and Modify PDF Files in Deno With pdf-lib](https://medium.com/swlh/how-to-create-and-modify-pdf-files-in-deno-ffaad7099b0?source=friends_link&sk=3da183bb776d059df428eaea52102f19)**
1221
+
1222
+ ### Creating a Document with Deno
1223
+
1224
+ Below is the [**create document**](#create-document) example modified for Deno:
1225
+
1226
+ ```js
1227
+ import {
1228
+ PDFDocument,
1229
+ StandardFonts,
1230
+ rgb,
1231
+ } from 'https://cdn.skypack.dev/pdf-lib@^1.11.1?dts';
1232
+
1233
+ const pdfDoc = await PDFDocument.create();
1234
+ const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman);
1235
+
1236
+ const page = pdfDoc.addPage();
1237
+ const { width, height } = page.getSize();
1238
+ const fontSize = 30;
1239
+ page.drawText('Creating PDFs in JavaScript is awesome!', {
1240
+ x: 50,
1241
+ y: height - 4 * fontSize,
1242
+ size: fontSize,
1243
+ font: timesRomanFont,
1244
+ color: rgb(0, 0.53, 0.71),
1245
+ });
1246
+
1247
+ const pdfBytes = await pdfDoc.save();
1248
+
1249
+ await Deno.writeFile('out.pdf', pdfBytes);
1250
+ ```
1251
+
1252
+ If you save this script as `create-document.ts`, you can execute it using Deno with the following command:
1253
+
1254
+ ```
1255
+ deno run --allow-write create-document.ts
1256
+ ```
1257
+
1258
+ The resulting `out.pdf` file will look like [this PDF](assets/pdfs/examples/create_document.pdf).
1259
+
1260
+ ### Embedding a Font with Deno
1261
+
1262
+ Here's a slightly more complicated example demonstrating how to embed a font and measure text in Deno:
1263
+
1264
+ ```js
1265
+ import {
1266
+ degrees,
1267
+ PDFDocument,
1268
+ rgb,
1269
+ StandardFonts,
1270
+ } from 'https://cdn.skypack.dev/pdf-lib@^1.11.1?dts';
1271
+ import fontkit from 'https://cdn.skypack.dev/@pdf-lib/fontkit@^1.0.0?dts';
1272
+
1273
+ const url = 'https://pdf-lib.js.org/assets/ubuntu/Ubuntu-R.ttf';
1274
+ const fontBytes = await fetch(url).then((res) => res.arrayBuffer());
1275
+
1276
+ const pdfDoc = await PDFDocument.create();
1277
+
1278
+ pdfDoc.registerFontkit(fontkit);
1279
+ const customFont = await pdfDoc.embedFont(fontBytes);
1280
+
1281
+ const page = pdfDoc.addPage();
1282
+
1283
+ const text = 'This is text in an embedded font!';
1284
+ const textSize = 35;
1285
+ const textWidth = customFont.widthOfTextAtSize(text, textSize);
1286
+ const textHeight = customFont.heightAtSize(textSize);
1287
+
1288
+ page.drawText(text, {
1289
+ x: 40,
1290
+ y: 450,
1291
+ size: textSize,
1292
+ font: customFont,
1293
+ color: rgb(0, 0.53, 0.71),
1294
+ });
1295
+ page.drawRectangle({
1296
+ x: 40,
1297
+ y: 450,
1298
+ width: textWidth,
1299
+ height: textHeight,
1300
+ borderColor: rgb(1, 0, 0),
1301
+ borderWidth: 1.5,
1302
+ });
1303
+
1304
+ const pdfBytes = await pdfDoc.save();
1305
+
1306
+ await Deno.writeFile('out.pdf', pdfBytes);
1307
+ ```
1308
+
1309
+ If you save this script as `custom-font.ts`, you can execute it with the following command:
1310
+
1311
+ ```
1312
+ deno run --allow-write --allow-net custom-font.ts
1313
+ ```
1314
+
1315
+ The resulting `out.pdf` file will look like [this PDF](assets/pdfs/examples/embed_font_and_measure_text.pdf).
1316
+
1317
+ ## Complete Examples
1318
+
1319
+ The [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/)).
1320
+
1321
+ There are currently four apps:
1322
+
1323
+ - [**`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.
1324
+ - [**`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.
1325
+ - [**`rn`**](apps/rn) - contains [tests](apps/rn/src/tests/) for `pdf-lib` in React Native environments. These tests are a handy reference when trying to save/load PDFs, fonts, or images with `pdf-lib` in a React Native environment.
1326
+ - [**`deno`**](apps/deno) - contains [tests](apps/deno/tests/) for `pdf-lib` in Deno environments. These tests are a handy reference when trying to save/load PDFs, fonts, or images with `pdf-lib` from the filesystem.
1327
+
1328
+ ## Installation
1329
+
1330
+ ### NPM Module
1331
+
1332
+ To install the latest stable version:
1333
+
1334
+ ```bash
1335
+ # With npm
1336
+ npm install --save pdf-lib
1337
+
1338
+ # With yarn
1339
+ yarn add pdf-lib
1340
+ ```
1341
+
1342
+ This assumes you're using [npm](https://www.npmjs.com/) or [yarn](https://yarnpkg.com/lang/en/) as your package manager.
1343
+
1344
+ ### UMD Module
1345
+
1346
+ You can also download `pdf-lib` as a UMD module from [unpkg](https://unpkg.com/#/) or [jsDelivr](https://www.jsdelivr.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.
1347
+
1348
+ The following builds are available:
1349
+
1350
+ - https://unpkg.com/pdf-lib/dist/pdf-lib.js
1351
+ - https://unpkg.com/pdf-lib/dist/pdf-lib.min.js
1352
+ - https://cdn.jsdelivr.net/npm/pdf-lib/dist/pdf-lib.js
1353
+ - https://cdn.jsdelivr.net/npm/pdf-lib/dist/pdf-lib.min.js
1354
+
1355
+ > **NOTE:** if you are using the CDN scripts in production, you should include a specific version number in the URL, for example:
1356
+ >
1357
+ > - https://unpkg.com/pdf-lib@1.4.0/dist/pdf-lib.min.js
1358
+ > - https://cdn.jsdelivr.net/npm/pdf-lib@1.4.0/dist/pdf-lib.min.js
1359
+
1360
+ When 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:
1361
+
1362
+ ```javascript
1363
+ // NPM module
1364
+ import { PDFDocument, rgb } from 'pdf-lib';
1365
+
1366
+ // UMD module
1367
+ var PDFDocument = PDFLib.PDFDocument;
1368
+ var rgb = PDFLib.rgb;
1369
+ ```
1370
+
1371
+ ## Fontkit Installation
1372
+
1373
+ `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.
1374
+
1375
+ Installing this module is easy. Just like `pdf-lib` itself, `@pdf-lib/fontkit` can be installed with `npm`/`yarn` or as a UMD module.
1376
+
1377
+ ### Fontkit NPM Module
1378
+
1379
+ ```bash
1380
+ # With npm
1381
+ npm install --save @pdf-lib/fontkit
1382
+
1383
+ # With yarn
1384
+ yarn add @pdf-lib/fontkit
1385
+ ```
1386
+
1387
+ To register the `fontkit` instance:
1388
+
1389
+ <!-- prettier-ignore -->
1390
+ ```js
1391
+ import { PDFDocument } from 'pdf-lib'
1392
+ import fontkit from '@pdf-lib/fontkit'
1393
+
1394
+ const pdfDoc = await PDFDocument.create()
1395
+ pdfDoc.registerFontkit(fontkit)
1396
+ ```
1397
+
1398
+ ### Fontkit UMD Module
1399
+
1400
+ The following builds are available:
1401
+
1402
+ - https://unpkg.com/@pdf-lib/fontkit/dist/fontkit.umd.js
1403
+ - https://unpkg.com/@pdf-lib/fontkit/dist/fontkit.umd.min.js
1404
+ - https://cdn.jsdelivr.net/npm/@pdf-lib/fontkit/dist/fontkit.umd.js
1405
+ - https://cdn.jsdelivr.net/npm/@pdf-lib/fontkit/dist/fontkit.umd.min.js
1406
+
1407
+ > **NOTE:** if you are using the CDN scripts in production, you should include a specific version number in the URL, for example:
1408
+ >
1409
+ > - https://unpkg.com/@pdf-lib/fontkit@0.0.4/dist/fontkit.umd.min.js
1410
+ > - https://cdn.jsdelivr.net/npm/@pdf-lib/fontkit@0.0.4/dist/fontkit.umd.min.js
1411
+
1412
+ When using a UMD build, you will have access to a global `window.fontkit` variable. To register the `fontkit` instance:
1413
+
1414
+ <!-- prettier-ignore -->
1415
+ ```js
1416
+ var pdfDoc = await PDFLib.PDFDocument.create()
1417
+ pdfDoc.registerFontkit(fontkit)
1418
+ ```
1419
+
1420
+ ## Documentation
1421
+
1422
+ API documentation is available on the project site at https://pdf-lib.js.org/docs/api/.
1423
+
1424
+ The repo for the project site (and generated documentation files) is
1425
+ located here: https://github.com/Hopding/pdf-lib-docs.
1426
+
1427
+ ## Fonts and Unicode
1428
+
1429
+ When working with PDFs, you will frequently come across the terms "character encoding" and "font". If you have experience in web development, you may wonder why these are so prevalent. Aren't they just annoying details that you shouldn't need to worry about? Shouldn't PDF libraries and readers be able to handle all of this for you like web browsers can? Unfortunately, this is not the case. The nature of the PDF file format makes it very difficult to avoid thinking about character encodings and fonts when working with PDFs.
1430
+
1431
+ `pdf-lib` does its best to simplify things for you. But it can't perform magic. This means you should be aware of the following:
1432
+
1433
+ - **There are 14 standard fonts** defined in the PDF specification. They are as follows: _Times Roman_ (normal, bold, and italic), _Helvetica_ (normal, bold, and italic), _Courier_ (normal, bold, and italic), _ZapfDingbats_ (normal), and _Symbol_ (normal). These 14 fonts are guaranteed to be available in PDF readers. As such, you do not need to embed any font data if you wish to use one of these fonts. You can use a standard font like so:
1434
+ <!-- prettier-ignore -->
1435
+ ```js
1436
+ import { PDFDocument, StandardFonts } from 'pdf-lib'
1437
+ const pdfDoc = await PDFDocument.create()
1438
+ const courierFont = await pdfDoc.embedFont(StandardFonts.Courier)
1439
+ const page = pdfDoc.addPage()
1440
+ page.drawText('Some boring latin text in the Courier font', {
1441
+ font: courierFont,
1442
+ })
1443
+ ```
1444
+ - **The standard fonts do not support all characters** available in Unicode. The Times Roman, Helvetica, and Courier fonts use WinAnsi encoding (aka [Windows-1252](https://en.wikipedia.org/wiki/Windows-1252)). The WinAnsi character set only supports 218 characters in the Latin alphabet. For this reason, many users will find the standard fonts insufficient for their use case. This is unfortunate, but there's nothing that PDF libraries can do to change this. This is a result of the PDF specification and its age. Note that the [ZapfDingbats](https://en.wikipedia.org/wiki/Zapf_Dingbats) and [Symbol](<https://en.wikipedia.org/wiki/Symbol_(typeface)>) fonts use their own specialized encodings that support 203 and 194 characters, respectively. However, the characters they support are not useful for most use cases. See [here](assets/pdfs/standard_fonts_demo.pdf) for an example of all 14 standard fonts.
1445
+ - **You can use characters outside the Latin alphabet** by embedding your own fonts. Embedding your own font requires to you load the font data (from a file or via a network request, for example) and pass it to the `embedFont` method. When you embed your own font, you can use any Unicode characters that it supports. This capability frees you from the limitations imposed by the standard fonts. Most PDF files use embedded fonts. You can embed and use a custom font like so ([see also](#embed-font-and-measure-text)):
1446
+ <!-- prettier-ignore -->
1447
+ ```js
1448
+ import { PDFDocument } from 'pdf-lib'
1449
+ import fontkit from '@pdf-lib/fontkit'
1450
+
1451
+ const url = 'https://pdf-lib.js.org/assets/ubuntu/Ubuntu-R.ttf'
1452
+ const fontBytes = await fetch(url).then((res) => res.arrayBuffer())
1453
+
1454
+ const pdfDoc = await PDFDocument.create()
1455
+
1456
+ pdfDoc.registerFontkit(fontkit)
1457
+ const ubuntuFont = await pdfDoc.embedFont(fontBytes)
1458
+
1459
+ const page = pdfDoc.addPage()
1460
+ page.drawText('Some fancy Unicode text in the ŪЬȕǹƚü font', {
1461
+ font: ubuntuFont,
1462
+ })
1463
+ ```
1464
+
1465
+ Note that encoding errors will be thrown if you try to use a character with a font that does not support it. For example, `Ω` is not in the WinAnsi character set. So trying to draw it on a page with the standard Helvetica font will throw the following error:
1466
+
1467
+ ```
1468
+ Error: WinAnsi cannot encode "Ω" (0x03a9)
1469
+ at Encoding.encodeUnicodeCodePoint
1470
+ ```
1471
+
1472
+ ### Font Subsetting
1473
+
1474
+ Embedding a font in a PDF document will typically increase the file's size. You can reduce the amount a file's size is increased by subsetting the font so that only the necessary characters are embedded. You can subset a font by setting the [`subset` option](https://pdf-lib.js.org/docs/api/interfaces/embedfontoptions#optional-subset) to `true`. For example:
1475
+
1476
+ ```js
1477
+ const font = await pdfDoc.embedFont(fontBytes, { subset: true });
1478
+ ```
1479
+
1480
+ Note that subsetting does not work for all fonts. See https://github.com/Hopding/pdf-lib/issues/207#issuecomment-537210471 for additional details.
1481
+
1482
+ ## Creating and Filling Forms
1483
+
1484
+ `pdf-lib` can create, fill, and read PDF form fields. The following field types are supported:
1485
+
1486
+ - [Buttons](https://pdf-lib.js.org/docs/api/classes/pdfbutton)
1487
+ - [Check Boxes](https://pdf-lib.js.org/docs/api/classes/pdfcheckbox)
1488
+ - [Dropdowns](https://pdf-lib.js.org/docs/api/classes/pdfdropdown)
1489
+ - [Option Lists](https://pdf-lib.js.org/docs/api/classes/pdfoptionlist)
1490
+ - [Radio Groups](https://pdf-lib.js.org/docs/api/classes/pdfradiogroup)
1491
+ - [Text Fields](https://pdf-lib.js.org/docs/api/classes/pdftextfield)
1492
+
1493
+ See the [form creation](#create-form) and [form filling](#fill-form) usage examples for code samples. Tests 1, 14, 15, 16, and 17 in the [complete examples](#complete-examples) contain working example code for form creation and filling in a variety of different JS environments.
1494
+
1495
+ **IMPORTANT:** The default font used to display text in buttons, dropdowns, option lists, and text fields is the standard Helvetica font. This font only supports characters in the latin alphabet (see [Fonts and Unicode](#fonts-and-unicode) for details). This means that if any of these field types are created or modified to contain text outside the latin alphabet (as is often the case), you will need to embed and use a custom font to update the field appearances. Otherwise an error will be thrown (likely when you save the `PDFDocument`).
1496
+
1497
+ You can use an embedded font when filling form fields as follows:
1498
+
1499
+ ```js
1500
+ import { PDFDocument } from 'pdf-lib';
1501
+ import fontkit from '@pdf-lib/fontkit';
1502
+
1503
+ // Fetch the PDF with form fields
1504
+ const formUrl = 'https://pdf-lib.js.org/assets/dod_character.pdf';
1505
+ const formBytes = await fetch(formUrl).then((res) => res.arrayBuffer());
1506
+
1507
+ // Fetch the Ubuntu font
1508
+ const fontUrl = 'https://pdf-lib.js.org/assets/ubuntu/Ubuntu-R.ttf';
1509
+ const fontBytes = await fetch(fontUrl).then((res) => res.arrayBuffer());
1510
+
1511
+ // Load the PDF with form fields
1512
+ const pdfDoc = await PDFDocument.load(formBytes);
1513
+
1514
+ // Embed the Ubuntu font
1515
+ pdfDoc.registerFontkit(fontkit);
1516
+ const ubuntuFont = await pdfDoc.embedFont(fontBytes);
1517
+
1518
+ // Get two text fields from the form
1519
+ const form = pdfDoc.getForm();
1520
+ const nameField = form.getTextField('CharacterName 2');
1521
+ const ageField = form.getTextField('Age');
1522
+
1523
+ // Fill the text fields with some fancy Unicode characters (outside
1524
+ // the WinAnsi latin character set)
1525
+ nameField.setText('Ӎӑȑїõ');
1526
+ ageField.setText('24 ŷȇȁŗš');
1527
+
1528
+ // **Key Step:** Update the field appearances with the Ubuntu font
1529
+ form.updateFieldAppearances(ubuntuFont);
1530
+
1531
+ // Save the PDF with filled form fields
1532
+ const pdfBytes = await pdfDoc.save();
1533
+ ```
1534
+
1535
+ ### Handy Methods for Filling, Creating, and Reading Form Fields
1536
+
1537
+ Existing form fields can be accessed with the following methods of [`PDFForm`](https://pdf-lib.js.org/docs/api/classes/pdfform):
1538
+
1539
+ - [`PDFForm.getButton`](https://pdf-lib.js.org/docs/api/classes/pdfform#getbutton)
1540
+ - [`PDFForm.getCheckBox`](https://pdf-lib.js.org/docs/api/classes/pdfform#getcheckbox)
1541
+ - [`PDFForm.getDropdown`](https://pdf-lib.js.org/docs/api/classes/pdfform#getdropdown)
1542
+ - [`PDFForm.getOptionList`](https://pdf-lib.js.org/docs/api/classes/pdfform#getoptionlist)
1543
+ - [`PDFForm.getRadioGroup`](https://pdf-lib.js.org/docs/api/classes/pdfform#getradiogroup)
1544
+ - [`PDFForm.getTextField`](https://pdf-lib.js.org/docs/api/classes/pdfform#gettextfield)
1545
+
1546
+ New form fields can be created with the following methods of [`PDFForm`](https://pdf-lib.js.org/docs/api/classes/pdfform):
1547
+
1548
+ - [`PDFForm.createButton`](https://pdf-lib.js.org/docs/api/classes/pdfform#createbutton)
1549
+ - [`PDFForm.createCheckBox`](https://pdf-lib.js.org/docs/api/classes/pdfform#createcheckbox)
1550
+ - [`PDFForm.createDropdown`](https://pdf-lib.js.org/docs/api/classes/pdfform#createdropdown)
1551
+ - [`PDFForm.createOptionList`](https://pdf-lib.js.org/docs/api/classes/pdfform#createoptionlist)
1552
+ - [`PDFForm.createRadioGroup`](https://pdf-lib.js.org/docs/api/classes/pdfform#createradiogroup)
1553
+ - [`PDFForm.createTextField`](https://pdf-lib.js.org/docs/api/classes/pdfform#createtextfield)
1554
+
1555
+ Below are some of the most commonly used methods for reading and filling the aforementioned subclasses of [`PDFField`](https://pdf-lib.js.org/docs/api/classes/pdffield):
1556
+
1557
+ - [`PDFCheckBox.check`](https://pdf-lib.js.org/docs/api/classes/pdfcheckbox#check)
1558
+ - [`PDFCheckBox.uncheck`](https://pdf-lib.js.org/docs/api/classes/pdfcheckbox#uncheck)
1559
+ - [`PDFCheckBox.isChecked`](https://pdf-lib.js.org/docs/api/classes/pdfcheckbox#ischecked)
1560
+
1561
+ ---
1562
+
1563
+ - [`PDFDropdown.select`](https://pdf-lib.js.org/docs/api/classes/pdfdropdown#select)
1564
+ - [`PDFDropdown.clear`](https://pdf-lib.js.org/docs/api/classes/pdfdropdown#clear)
1565
+ - [`PDFDropdown.getSelected`](https://pdf-lib.js.org/docs/api/classes/pdfdropdown#getselected)
1566
+ - [`PDFDropdown.getOptions`](https://pdf-lib.js.org/docs/api/classes/pdfdropdown#getoptions)
1567
+ - [`PDFDropdown.addOptions`](https://pdf-lib.js.org/docs/api/classes/pdfdropdown#addoptions)
1568
+
1569
+ ---
1570
+
1571
+ - [`PDFOptionList.select`](https://pdf-lib.js.org/docs/api/classes/pdfoptionlist#select)
1572
+ - [`PDFOptionList.clear`](https://pdf-lib.js.org/docs/api/classes/pdfoptionlist#clear)
1573
+ - [`PDFOptionList.getSelected`](https://pdf-lib.js.org/docs/api/classes/pdfoptionlist#getselected)
1574
+ - [`PDFOptionList.getOptions`](https://pdf-lib.js.org/docs/api/classes/pdfoptionlist#getoptions)
1575
+ - [`PDFOptionList.addOptions`](https://pdf-lib.js.org/docs/api/classes/pdfoptionlist#addoptions)
1576
+
1577
+ ---
1578
+
1579
+ - [`PDFRadioGroup.select`](https://pdf-lib.js.org/docs/api/classes/pdfradiogroup#select)
1580
+ - [`PDFRadioGroup.clear`](https://pdf-lib.js.org/docs/api/classes/pdfradiogroup#clear)
1581
+ - [`PDFRadioGroup.getSelected`](https://pdf-lib.js.org/docs/api/classes/pdfradiogroup#getselected)
1582
+ - [`PDFRadioGroup.getOptions`](https://pdf-lib.js.org/docs/api/classes/pdfradiogroup#getoptions)
1583
+ - [`PDFRadioGroup.addOptionToPage`](https://pdf-lib.js.org/docs/api/classes/pdfradiogroup#addoptiontopage)
1584
+
1585
+ ---
1586
+
1587
+ - [`PDFTextField.setText`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#settext)
1588
+ - [`PDFTextField.getText`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#gettext)
1589
+ - [`PDFTextField.setMaxLength`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#setmaxlength)
1590
+ - [`PDFTextField.getMaxLength`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#getmaxlength)
1591
+ - [`PDFTextField.removeMaxLength`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#removemaxlength)
1592
+
1593
+ ## Limitations
1594
+
1595
+ - `pdf-lib` **can** extract the content of text fields (see [`PDFTextField.getText`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#gettext)), but it **cannot** extract plain text on a page outside of a form field. This is a difficult feature to implement, but it is within the scope of this library and may be added to `pdf-lib` in the future. See
1596
+ [#93](https://github.com/Hopding/pdf-lib/issues/93),
1597
+ [#137](https://github.com/Hopding/pdf-lib/issues/137),
1598
+ [#177](https://github.com/Hopding/pdf-lib/issues/177),
1599
+ [#329](https://github.com/Hopding/pdf-lib/issues/329), and
1600
+ [#380](https://github.com/Hopding/pdf-lib/issues/380).
1601
+ - `pdf-lib` **can** remove and edit the content of text fields (see [`PDFTextField.setText`](https://pdf-lib.js.org/docs/api/classes/pdftextfield#settext)), but it does **not** provide APIs for removing or editing text on a page outside of a form field. This is also a difficult feature to implement, but is within the scope of `pdf-lib` and may be added in the future. See
1602
+ [#93](https://github.com/Hopding/pdf-lib/issues/93),
1603
+ [#137](https://github.com/Hopding/pdf-lib/issues/137),
1604
+ [#177](https://github.com/Hopding/pdf-lib/issues/177),
1605
+ [#329](https://github.com/Hopding/pdf-lib/issues/329), and
1606
+ [#380](https://github.com/Hopding/pdf-lib/issues/380).
1607
+ - `pdf-lib` does **not** support the use of HTML or CSS when adding content to a PDF. Similarly, `pdf-lib` **cannot** embed HTML/CSS content into PDFs. As convenient as such a feature might be, it would be extremely difficult to implement and is far beyond the scope of this library. If this capability is something you need, consider using [Puppeteer](https://github.com/puppeteer/puppeteer).
1608
+
1609
+ ## Help and Discussion
1610
+
1611
+ [Discussions](https://github.com/Hopding/pdf-lib/discussions) is the best place to chat with us, ask questions, and learn more about pdf-lib!
1612
+
1613
+ See also [MAINTAINERSHIP.md#communication](docs/MAINTAINERSHIP.md#communication) and [MAINTAINERSHIP.md#discord](docs/MAINTAINERSHIP.md#discord).
1614
+
1615
+ ## Encryption Handling
1616
+
1617
+ **`pdf-lib` does not currently support encrypted documents.** You should not 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!
1618
+
1619
+ When an encrypted document is passed to `PDFDocument.load(...)`, an error will be thrown:
1620
+
1621
+ <!-- prettier-ignore -->
1622
+ ```js
1623
+ import { PDFDocument, EncryptedPDFError } from 'pdf-lib'
1624
+
1625
+ const encryptedPdfBytes = ...
1626
+
1627
+ // Assignment fails. Throws an `EncryptedPDFError`.
1628
+ const pdfDoc = PDFDocument.load(encryptedPdfBytes)
1629
+ ```
1630
+
1631
+ This 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:
1632
+
1633
+ ```js
1634
+ import { PDFDocument } from 'pdf-lib'
1635
+
1636
+ const encryptedPdfBytes = ...
1637
+
1638
+ // Assignment succeeds. Does not throw an error.
1639
+ const pdfDoc = PDFDocument.load(encryptedPdfBytes, { ignoreEncryption: true })
1640
+ ```
1641
+
1642
+ Note 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.
1643
+
1644
+ **You should not use this option.** It only exists for backwards compatibility reasons.
1645
+
1646
+ ## Contributing
1647
+
1648
+ We welcome contributions from the open source community! If you are interested in contributing to `pdf-lib`, please take a look at the [CONTRIBUTING.md](docs/CONTRIBUTING.md) file. It contains information to help you get `pdf-lib` setup and running on your machine. (We try to make this as simple and fast as possible! :rocket:)
1649
+
1650
+ ## Maintainership
1651
+
1652
+ Check out [MAINTAINERSHIP.md](docs/MAINTAINERSHIP.md) for details on how this repo is maintained and how we use [issues](docs/MAINTAINERSHIP.md#issues), [PRs](docs/MAINTAINERSHIP.md#pull-requests), and [discussions](docs/MAINTAINERSHIP.md#discussions).
1653
+
1654
+ ## Tutorials and Cool Stuff
1655
+
1656
+ - [labelmake](https://github.com/hand-dot/labelmake) - a library for declarative PDF generation created by @hand-dot
1657
+ - [Möbius Printing helper](https://shreevatsa.net/mobius-print/) - a tool created by @shreevatsa
1658
+ - [Extract PDF pages](https://shreevatsa.net/pdf-pages/) - a tool created by @shreevatsa
1659
+ - [Travel certificate generator](https://github.com/LAB-MI/deplacement-covid-19) - a tool that creates travel certificates for French citizens under quarantine due to COVID-19
1660
+ - [How to use pdf-lib in AWS Lambdas](https://medium.com/swlh/create-pdf-using-pdf-lib-on-serverless-aws-lambda-e9506246dc88) - a tutorial written by Crespo Wang
1661
+ - [Working With PDFs in Node.js Using pdf-lib](http://thecodebarbarian.com/working-with-pdfs-in-node-js.html) - a tutorial by Valeri Karpov
1662
+ - [Electron app for resizing PDFs](https://github.com/vegarringdal/simple-pdf-resizer) - a tool created by @vegarringdal
1663
+ - [PDF Shelter](https://pdfshelter.com) - online PDF manipulation tools by Lucas Morais
1664
+
1665
+ ## Prior Art
1666
+
1667
+ - [`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.
1668
+ - [`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`.
1669
+ - [`pdfbox`](https://pdfbox.apache.org/) is a PDF generation and modification library written in Java. This library was an invaluable reference when implementing form creation and filling APIs for `pdf-lib`.
1670
+ - [`jspdf`](https://github.com/MrRio/jsPDF) is a PDF generation library for the browser.
1671
+ - [`pdfmake`](https://github.com/bpampuch/pdfmake) is a PDF generation library for the browser.
1672
+ - [`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.
1673
+ - [`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.
1674
+ - [`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.
1675
+
1676
+ ## Git History Rewrite
1677
+
1678
+ This repo used to contain a file called `pdf_specification.pdf` in the root directory. This was a copy of the [PDF 1.7 specification](https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf), which is made freely available by Adobe. On 8/30/2021, we received a DMCA complaint requiring us to remove the file from this repo. Simply removing the file via a new commit to `master` was insufficient to satisfy the complaint. The file needed to be completely removed from the repo's git history. Unfortunately, the file was added over two years ago, this meant we had to rewrite the repo's git history and force push to `master` 😔.
1679
+
1680
+ ### Steps We Took
1681
+
1682
+ We removed the file and rewrote the repo's history using [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/) as outlined [here](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository). For full transparency, here are the exact commands we ran:
1683
+
1684
+ ```
1685
+ $ git clone git@github.com:Hopding/pdf-lib.git
1686
+ $ cd pdf-lib
1687
+ $ rm pdf_specification.pdf
1688
+ $ git commit -am 'Remove pdf_specification.pdf'
1689
+ $ bfg --delete-files pdf_specification.pdf
1690
+ $ git reflog expire --expire=now --all && git gc --prune=now --aggressive
1691
+ $ git push --force
1692
+ ```
1693
+
1694
+ ### Why Should I Care?
1695
+
1696
+ If you're a user of `pdf-lib`, you shouldn't care! Just keep on using `pdf-lib` like normal 😃 ✨!
1697
+
1698
+ If you are a `pdf-lib` developer (meaning you've forked `pdf-lib` and/or have an open PR) then this does impact you. If you forked or cloned the repo prior to 8/30/2021 then your fork's git history is out of sync with this repo's `master` branch. Unfortunately, this will likely be a headache for you to deal with. Sorry! We didn't want to rewrite the history, but there really was no alternative.
1699
+
1700
+ It's important to note that pdf-lib's _source code_ has not changed at all. It's exactly the same as it was before the git history rewrite. The repo still has the exact same number of commits (and even the same commit contents, except for the commit that added `pdf_specification.pdf`). What has changed are the SHAs of those commits.
1701
+
1702
+ The simplest way to deal with this fact is to:
1703
+
1704
+ 1. Reclone pdf-lib
1705
+ 2. Manually copy any changes you've made from your old clone to the new one
1706
+ 3. Use your new clone going forward
1707
+ 4. Reopen your unmerged PRs using your new clone
1708
+
1709
+ See this [StackOverflow answer](https://stackoverflow.com/a/48268766) for a great, in depth explanation of what a git history rewrite entails.
1710
+
1711
+ ## License
1712
+
1713
+ [MIT](LICENSE.md)