@pdfme/pdf-lib 6.0.3 → 6.0.4-dev.1

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 (449) hide show
  1. package/{src/api/Embeddable.ts → dist/api/Embeddable.d.ts} +1 -1
  2. package/dist/api/PDFDocument.d.ts +778 -0
  3. package/dist/api/PDFDocumentOptions.d.ts +38 -0
  4. package/dist/api/PDFEmbeddedFile.d.ts +38 -0
  5. package/dist/api/PDFEmbeddedPage.d.ts +73 -0
  6. package/dist/api/PDFFont.d.ts +94 -0
  7. package/dist/api/PDFImage.d.ts +95 -0
  8. package/dist/api/PDFJavaScript.d.ts +38 -0
  9. package/dist/api/PDFPage.d.ts +910 -0
  10. package/dist/api/PDFPageOptions.d.ts +172 -0
  11. package/dist/api/StandardFonts.d.ts +16 -0
  12. package/dist/api/colors.d.ts +34 -0
  13. package/dist/api/errors.d.ts +42 -0
  14. package/dist/api/form/PDFButton.d.ts +137 -0
  15. package/dist/api/form/PDFCheckBox.d.ts +142 -0
  16. package/dist/api/form/PDFDropdown.d.ts +402 -0
  17. package/dist/api/form/PDFField.d.ts +203 -0
  18. package/dist/api/form/PDFForm.d.ts +411 -0
  19. package/dist/api/form/PDFOptionList.d.ts +335 -0
  20. package/dist/api/form/PDFRadioGroup.d.ts +252 -0
  21. package/dist/api/form/PDFSignature.d.ts +29 -0
  22. package/dist/api/form/PDFTextField.d.ts +537 -0
  23. package/dist/api/form/appearances.d.ts +41 -0
  24. package/dist/api/image/alignment.d.ts +5 -0
  25. package/dist/api/objects.d.ts +4 -0
  26. package/dist/api/operations.d.ts +226 -0
  27. package/dist/api/operators.d.ts +90 -0
  28. package/dist/api/rotations.d.ts +38 -0
  29. package/dist/api/sizes.d.ts +52 -0
  30. package/dist/api/svg.d.ts +70 -0
  31. package/dist/api/svgPath.d.ts +2 -0
  32. package/dist/api/text/alignment.d.ts +5 -0
  33. package/dist/api/text/layout.d.ts +54 -0
  34. package/dist/core/PDFContext.d.ts +84 -0
  35. package/dist/core/PDFObjectCopier.d.ts +37 -0
  36. package/dist/core/acroform/PDFAcroButton.d.ts +21 -0
  37. package/dist/core/acroform/PDFAcroCheckBox.d.ts +13 -0
  38. package/dist/core/acroform/PDFAcroChoice.d.ts +20 -0
  39. package/dist/core/acroform/PDFAcroComboBox.d.ts +9 -0
  40. package/dist/core/acroform/PDFAcroField.d.ts +36 -0
  41. package/dist/core/acroform/PDFAcroForm.d.ts +20 -0
  42. package/dist/core/acroform/PDFAcroListBox.d.ts +9 -0
  43. package/dist/core/acroform/PDFAcroNonTerminal.d.ts +13 -0
  44. package/dist/core/acroform/PDFAcroPushButton.d.ts +9 -0
  45. package/dist/core/acroform/PDFAcroRadioButton.d.ts +13 -0
  46. package/{src/core/acroform/PDFAcroSignature.ts → dist/core/acroform/PDFAcroSignature.d.ts} +2 -4
  47. package/dist/core/acroform/PDFAcroTerminal.d.ts +16 -0
  48. package/dist/core/acroform/PDFAcroText.d.ts +22 -0
  49. package/dist/core/acroform/flags.d.ts +141 -0
  50. package/dist/core/acroform/utils.d.ts +6 -0
  51. package/dist/core/annotation/AppearanceCharacteristics.d.ts +33 -0
  52. package/dist/core/annotation/BorderStyle.d.ts +11 -0
  53. package/dist/core/annotation/PDFAnnotation.d.ts +51 -0
  54. package/dist/core/annotation/PDFWidgetAnnotation.d.ts +26 -0
  55. package/dist/core/annotation/flags.d.ts +79 -0
  56. package/dist/core/crypto.d.ts +95 -0
  57. package/dist/core/document/PDFCrossRefSection.d.ts +27 -0
  58. package/dist/core/document/PDFHeader.d.ts +10 -0
  59. package/dist/core/document/PDFTrailer.d.ts +9 -0
  60. package/dist/core/document/PDFTrailerDict.d.ts +10 -0
  61. package/dist/core/embedders/CMap.d.ts +3 -0
  62. package/dist/core/embedders/CustomFontEmbedder.d.ts +44 -0
  63. package/dist/core/embedders/CustomFontSubsetEmbedder.d.ts +20 -0
  64. package/dist/core/embedders/FileEmbedder.d.ts +33 -0
  65. package/dist/core/embedders/FontFlags.d.ts +13 -0
  66. package/dist/core/embedders/JavaScriptEmbedder.d.ts +10 -0
  67. package/dist/core/embedders/JpegEmbedder.d.ts +23 -0
  68. package/dist/core/embedders/PDFPageEmbedder.d.ts +37 -0
  69. package/dist/core/embedders/PngEmbedder.d.ts +19 -0
  70. package/dist/core/embedders/StandardFontEmbedder.d.ts +36 -0
  71. package/dist/core/errors.d.ts +94 -0
  72. package/{src/core/index.ts → dist/core/index.d.ts} +1 -17
  73. package/dist/core/interactive/ViewerPreferences.d.ts +347 -0
  74. package/dist/core/objects/PDFArray.d.ts +63 -0
  75. package/dist/core/objects/PDFBool.d.ts +13 -0
  76. package/dist/core/objects/PDFDict.d.ts +62 -0
  77. package/dist/core/objects/PDFHexString.d.ts +16 -0
  78. package/dist/core/objects/PDFInvalidObject.d.ts +11 -0
  79. package/dist/core/objects/PDFName.d.ts +41 -0
  80. package/dist/core/objects/PDFNull.d.ts +10 -0
  81. package/dist/core/objects/PDFNumber.d.ts +15 -0
  82. package/dist/core/objects/PDFObject.d.ts +8 -0
  83. package/dist/core/objects/PDFRawStream.d.ts +16 -0
  84. package/dist/core/objects/PDFRef.d.ts +13 -0
  85. package/dist/core/objects/PDFStream.d.ts +16 -0
  86. package/dist/core/objects/PDFString.d.ts +16 -0
  87. package/dist/core/operators/PDFOperator.d.ts +19 -0
  88. package/dist/core/operators/PDFOperatorNames.d.ts +76 -0
  89. package/dist/core/parser/BaseParser.d.ts +14 -0
  90. package/dist/core/parser/ByteStream.d.ts +26 -0
  91. package/dist/core/parser/PDFObjectParser.d.ts +31 -0
  92. package/dist/core/parser/PDFObjectStreamParser.d.ts +13 -0
  93. package/dist/core/parser/PDFParser.d.ts +46 -0
  94. package/dist/core/parser/PDFXRefStreamParser.d.ts +21 -0
  95. package/dist/core/streams/Ascii85Stream.d.ts +9 -0
  96. package/dist/core/streams/AsciiHexStream.d.ts +9 -0
  97. package/dist/core/streams/DecodeStream.d.ts +26 -0
  98. package/dist/core/streams/DecryptStream.d.ts +12 -0
  99. package/dist/core/streams/FlateStream.d.ts +13 -0
  100. package/dist/core/streams/LZWStream.d.ts +12 -0
  101. package/dist/core/streams/RunLengthStream.d.ts +8 -0
  102. package/dist/core/streams/Stream.d.ts +34 -0
  103. package/dist/core/streams/decode.d.ts +3 -0
  104. package/dist/core/structures/PDFCatalog.d.ts +27 -0
  105. package/dist/core/structures/PDFContentStream.d.ts +15 -0
  106. package/dist/core/structures/PDFCrossRefStream.d.ts +53 -0
  107. package/dist/core/structures/PDFFlateStream.d.ts +13 -0
  108. package/dist/core/structures/PDFObjectStream.d.ts +20 -0
  109. package/dist/core/structures/PDFPageLeaf.d.ts +54 -0
  110. package/dist/core/structures/PDFPageTree.d.ts +41 -0
  111. package/dist/core/syntax/CharCodes.d.ts +61 -0
  112. package/dist/core/syntax/Delimiters.d.ts +1 -0
  113. package/dist/core/syntax/Irregular.d.ts +1 -0
  114. package/dist/core/syntax/Keywords.d.ts +22 -0
  115. package/dist/core/syntax/Numeric.d.ts +3 -0
  116. package/dist/core/syntax/Whitespace.d.ts +1 -0
  117. package/dist/core/writers/PDFStreamWriter.d.ts +19 -0
  118. package/dist/core/writers/PDFWriter.d.ts +29 -0
  119. package/dist/index.js +19124 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/types/fontkit.d.ts +597 -0
  122. package/{src/types/index.ts → dist/types/index.d.ts} +8 -13
  123. package/{src/types/matrix.ts → dist/types/matrix.d.ts} +1 -2
  124. package/dist/utils/Cache.d.ts +10 -0
  125. package/dist/utils/arrays.d.ts +16 -0
  126. package/dist/utils/async.d.ts +5 -0
  127. package/dist/utils/base64.d.ts +10 -0
  128. package/dist/utils/elements/Arc.d.ts +22 -0
  129. package/dist/utils/elements/Circle.d.ts +14 -0
  130. package/dist/utils/elements/Ellipse.d.ts +20 -0
  131. package/dist/utils/elements/GraphElement.d.ts +6 -0
  132. package/dist/utils/elements/Line.d.ts +23 -0
  133. package/dist/utils/elements/Plot.d.ts +11 -0
  134. package/dist/utils/elements/Point.d.ts +18 -0
  135. package/dist/utils/elements/Rectangle.d.ts +21 -0
  136. package/dist/utils/elements/Segment.d.ts +19 -0
  137. package/dist/utils/errors.d.ts +1 -0
  138. package/dist/utils/intersections.d.ts +9 -0
  139. package/dist/utils/maths.d.ts +45 -0
  140. package/dist/utils/numbers.d.ts +23 -0
  141. package/dist/utils/objects.d.ts +15 -0
  142. package/dist/utils/pdfDocEncoding.d.ts +7 -0
  143. package/dist/utils/png.d.ts +17 -0
  144. package/dist/utils/rng.d.ts +13 -0
  145. package/dist/utils/strings.d.ts +25 -0
  146. package/{src/utils/unicode.ts → dist/utils/unicode.d.ts} +8 -195
  147. package/dist/utils/validators.d.ts +26 -0
  148. package/package.json +6 -1
  149. package/__tests__/api/PDFDocument.spec.ts +0 -576
  150. package/__tests__/api/PDFImage.spec.ts +0 -60
  151. package/__tests__/api/PDFPage.spec.ts +0 -151
  152. package/__tests__/api/form/PDFCheckBox.spec.ts +0 -71
  153. package/__tests__/api/form/PDFDropdown.spec.ts +0 -118
  154. package/__tests__/api/form/PDFForm.spec.ts +0 -370
  155. package/__tests__/api/form/PDFOptionList.spec.ts +0 -104
  156. package/__tests__/api/form/PDFRadioGroup.spec.ts +0 -183
  157. package/__tests__/api/form/PDFTextField.spec.ts +0 -148
  158. package/__tests__/api/svgPath.spec.ts +0 -153
  159. package/__tests__/api/text/layout.spec.ts +0 -166
  160. package/__tests__/core/PDFContext.spec.ts +0 -194
  161. package/__tests__/core/PDFObjectCopier.spec.ts +0 -421
  162. package/__tests__/core/acroform/PDFAcroField.spec.ts +0 -98
  163. package/__tests__/core/acroform/PDFAcroTerminal.spec.ts +0 -39
  164. package/__tests__/core/annotation/PDFWidgetAnnotation.spec.ts +0 -40
  165. package/__tests__/core/document/PDFCrossRefSection.spec.ts +0 -88
  166. package/__tests__/core/document/PDFHeader.spec.ts +0 -22
  167. package/__tests__/core/document/PDFTrailer.spec.ts +0 -28
  168. package/__tests__/core/document/PDFTrailerDict.spec.ts +0 -24
  169. package/__tests__/core/embedders/CMap.spec.ts +0 -47
  170. package/__tests__/core/embedders/CustomFontEmbedder.spec.ts +0 -96
  171. package/__tests__/core/embedders/CustomFontSubsetEmbedder.spec.ts +0 -62
  172. package/__tests__/core/embedders/FileEmbedder.spec.ts +0 -54
  173. package/__tests__/core/embedders/JpegEmbedder.spec.ts +0 -67
  174. package/__tests__/core/embedders/PDFPageEmbedder.spec.ts +0 -65
  175. package/__tests__/core/embedders/PngEmbedder.spec.ts +0 -87
  176. package/__tests__/core/embedders/StandardFontEmbedder.spec.ts +0 -79
  177. package/__tests__/core/embedders/data/SourceHanSerifJP-Regular.otf.cmap +0 -16096
  178. package/__tests__/core/embedders/data/Ubuntu-R.ttf.cmap +0 -1211
  179. package/__tests__/core/objects/PDFArray.spec.ts +0 -134
  180. package/__tests__/core/objects/PDFBool.spec.ts +0 -42
  181. package/__tests__/core/objects/PDFDict.spec.ts +0 -195
  182. package/__tests__/core/objects/PDFHexString.spec.ts +0 -168
  183. package/__tests__/core/objects/PDFInvalidObject.spec.ts +0 -32
  184. package/__tests__/core/objects/PDFName.spec.ts +0 -122
  185. package/__tests__/core/objects/PDFNull.spec.ts +0 -30
  186. package/__tests__/core/objects/PDFNumber.spec.ts +0 -50
  187. package/__tests__/core/objects/PDFObject.spec.ts +0 -29
  188. package/__tests__/core/objects/PDFRawStream.spec.ts +0 -45
  189. package/__tests__/core/objects/PDFRef.spec.ts +0 -60
  190. package/__tests__/core/objects/PDFString.spec.ts +0 -237
  191. package/__tests__/core/operators/PDFOperator.spec.ts +0 -77
  192. package/__tests__/core/parser/PDFObjectParser.spec.ts +0 -730
  193. package/__tests__/core/parser/PDFObjectStreamParser.spec.ts +0 -158
  194. package/__tests__/core/parser/PDFParser.spec.ts +0 -398
  195. package/__tests__/core/parser/PDFXRefStreamParser.spec.ts +0 -187
  196. package/__tests__/core/parser/data/object-stream-invalid +0 -2
  197. package/__tests__/core/parser/data/object-stream1 +0 -16
  198. package/__tests__/core/parser/data/object-stream2 +0 -10
  199. package/__tests__/core/parser/data/object-stream3 +0 -0
  200. package/__tests__/core/parser/data/object-stream4 +0 -0
  201. package/__tests__/core/parser/data/xref-stream1 +0 -0
  202. package/__tests__/core/parser/data/xref-stream2 +0 -0
  203. package/__tests__/core/parser/data/xref-stream3 +0 -0
  204. package/__tests__/core/parser/data/xref-stream4 +0 -0
  205. package/__tests__/core/streams/Ascii85Stream.spec.ts +0 -20
  206. package/__tests__/core/streams/AsciiHexStream.spec.ts +0 -20
  207. package/__tests__/core/streams/FlateStream.spec.ts +0 -20
  208. package/__tests__/core/streams/LZWStream.spec.ts +0 -20
  209. package/__tests__/core/streams/RunLengthStream.spec.ts +0 -20
  210. package/__tests__/core/streams/Stream.spec.ts +0 -128
  211. package/__tests__/core/streams/data/ascii85/1.decoded +0 -0
  212. package/__tests__/core/streams/data/ascii85/1.encoded +0 -43
  213. package/__tests__/core/streams/data/asciihex/1.decoded +0 -1
  214. package/__tests__/core/streams/data/asciihex/1.encoded +0 -1
  215. package/__tests__/core/streams/data/asciihex/2.decoded +0 -7
  216. package/__tests__/core/streams/data/asciihex/2.encoded +0 -1
  217. package/__tests__/core/streams/data/flate/1.corrupt.encoded +0 -1
  218. package/__tests__/core/streams/data/flate/1.decoded +0 -0
  219. package/__tests__/core/streams/data/flate/1.encoded +0 -2
  220. package/__tests__/core/streams/data/flate/2.decoded +0 -33
  221. package/__tests__/core/streams/data/flate/2.encoded +0 -0
  222. package/__tests__/core/streams/data/flate/3.decoded +0 -15
  223. package/__tests__/core/streams/data/flate/3.encoded +0 -0
  224. package/__tests__/core/streams/data/flate/4.decoded +0 -16
  225. package/__tests__/core/streams/data/flate/4.encoded +0 -0
  226. package/__tests__/core/streams/data/flate/5.decoded +0 -0
  227. package/__tests__/core/streams/data/flate/5.encoded +0 -0
  228. package/__tests__/core/streams/data/flate/6.decoded +0 -17
  229. package/__tests__/core/streams/data/flate/6.encoded +0 -0
  230. package/__tests__/core/streams/data/flate/7.decoded +0 -20
  231. package/__tests__/core/streams/data/flate/7.encoded +0 -1
  232. package/__tests__/core/streams/data/lzw/1.decoded +0 -0
  233. package/__tests__/core/streams/data/lzw/1.encoded +0 -0
  234. package/__tests__/core/streams/data/lzw/2.decoded +0 -0
  235. package/__tests__/core/streams/data/lzw/2.encoded +0 -0
  236. package/__tests__/core/streams/data/lzw/3.decoded +0 -14
  237. package/__tests__/core/streams/data/lzw/3.encoded +0 -2
  238. package/__tests__/core/streams/data/lzw/4.decoded +0 -14
  239. package/__tests__/core/streams/data/lzw/4.encoded +0 -2
  240. package/__tests__/core/streams/data/runlength/1.decoded +0 -1
  241. package/__tests__/core/streams/data/runlength/1.encoded +0 -1
  242. package/__tests__/core/streams/data/runlength/2.decoded +0 -1
  243. package/__tests__/core/streams/data/runlength/2.encoded +0 -1
  244. package/__tests__/core/streams/data/runlength/3.decoded +0 -0
  245. package/__tests__/core/streams/data/runlength/3.encoded +0 -0
  246. package/__tests__/core/streams/data/runlength/4.decoded +0 -1
  247. package/__tests__/core/streams/data/runlength/4.encoded +0 -1
  248. package/__tests__/core/streams/data/runlength/5.decoded +0 -1
  249. package/__tests__/core/streams/data/runlength/5.encoded +0 -1
  250. package/__tests__/core/streams/data/runlength/empty.encoded +0 -1
  251. package/__tests__/core/structures/PDFCatalog.spec.ts +0 -108
  252. package/__tests__/core/structures/PDFContentStream.spec.ts +0 -117
  253. package/__tests__/core/structures/PDFCrossRefStream.spec.ts +0 -145
  254. package/__tests__/core/structures/PDFObjectStream.spec.ts +0 -138
  255. package/__tests__/core/structures/PDFPageLeaf.spec.ts +0 -355
  256. package/__tests__/core/structures/PDFPageTree.spec.ts +0 -592
  257. package/__tests__/core/writers/PDFStreamWriter.spec.ts +0 -71
  258. package/__tests__/core/writers/PDFWriter.spec.ts +0 -144
  259. package/__tests__/core/writers/data/stream-writer-1.pdf +0 -0
  260. package/__tests__/index.test.ts +0 -12
  261. package/__tests__/utils/base64.spec.ts +0 -61
  262. package/__tests__/utils/data/simple.pdf +0 -201
  263. package/__tests__/utils/data/simple.pdf.base64 +0 -1
  264. package/__tests__/utils/pdfDocEncoding.spec.ts +0 -82
  265. package/__tests__/utils/png.spec.ts +0 -53
  266. package/__tests__/utils/rng.spec.ts +0 -14
  267. package/__tests__/utils/strings.spec.ts +0 -98
  268. package/__tests__/utils/unicode.spec.ts +0 -337
  269. package/assets/fonts/source_hans_jp/SourceHanSerifJP-Regular.otf +0 -0
  270. package/assets/fonts/ubuntu/Ubuntu-B.ttf +0 -0
  271. package/assets/fonts/ubuntu/Ubuntu-R.ttf +0 -0
  272. package/assets/images/cat_riding_unicorn.jpg +0 -0
  273. package/assets/images/cmyk_colorspace.jpg +0 -0
  274. package/assets/images/greyscale_bird.png +0 -0
  275. package/assets/images/minions_banana_alpha.png +0 -0
  276. package/assets/images/minions_banana_no_alpha.png +0 -0
  277. package/assets/images/minions_laughing.jpg +0 -0
  278. package/assets/pdfs/bixby_guide.pdf +0 -0
  279. package/assets/pdfs/encrypted_new.pdf +0 -0
  280. package/assets/pdfs/encrypted_old.pdf +0 -0
  281. package/assets/pdfs/fancy_fields.pdf +0 -0
  282. package/assets/pdfs/giraffe.pdf +0 -0
  283. package/assets/pdfs/invalid_root_ref.pdf +0 -0
  284. package/assets/pdfs/just_metadata.pdf +0 -49
  285. package/assets/pdfs/missing_endobj_keyword.pdf +0 -70
  286. package/assets/pdfs/missing_xref_trailer_dict.pdf +0 -141
  287. package/assets/pdfs/normal.pdf +0 -0
  288. package/assets/pdfs/pdf20examples/PDF 2.0 with offset start.pdf +0 -179
  289. package/assets/pdfs/stuff_following_header.pdf +0 -0
  290. package/assets/pdfs/us_constitution.pdf +0 -0
  291. package/assets/pdfs/with_comments.pdf +0 -0
  292. package/assets/pdfs/with_invalid_objects.pdf +0 -53
  293. package/assets/pdfs/with_invalid_stream_EOL.pdf +0 -0
  294. package/assets/pdfs/with_null_parent_entry.pdf +0 -0
  295. package/assets/pdfs/with_signature.pdf +0 -0
  296. package/assets/pdfs/with_update_sections.pdf +0 -0
  297. package/assets/pdfs/with_viewer_prefs.pdf +0 -0
  298. package/assets/pdfs/with_xfa_fields.pdf +0 -0
  299. package/src/api/PDFDocument.ts +0 -1389
  300. package/src/api/PDFDocumentOptions.ts +0 -45
  301. package/src/api/PDFEmbeddedFile.ts +0 -87
  302. package/src/api/PDFEmbeddedPage.ts +0 -100
  303. package/src/api/PDFFont.ts +0 -149
  304. package/src/api/PDFImage.ts +0 -143
  305. package/src/api/PDFJavaScript.ts +0 -75
  306. package/src/api/PDFPage.ts +0 -1604
  307. package/src/api/PDFPageOptions.ts +0 -175
  308. package/src/api/StandardFonts.ts +0 -16
  309. package/src/api/colors.ts +0 -109
  310. package/src/api/errors.ts +0 -110
  311. package/src/api/form/PDFButton.ts +0 -242
  312. package/src/api/form/PDFCheckBox.ts +0 -247
  313. package/src/api/form/PDFDropdown.ts +0 -637
  314. package/src/api/form/PDFField.ts +0 -491
  315. package/src/api/form/PDFForm.ts +0 -842
  316. package/src/api/form/PDFOptionList.ts +0 -555
  317. package/src/api/form/PDFRadioGroup.ts +0 -455
  318. package/src/api/form/PDFSignature.ts +0 -44
  319. package/src/api/form/PDFTextField.ts +0 -811
  320. package/src/api/form/appearances.ts +0 -655
  321. package/src/api/image/alignment.ts +0 -5
  322. package/src/api/objects.ts +0 -10
  323. package/src/api/operations.ts +0 -873
  324. package/src/api/operators.ts +0 -335
  325. package/src/api/rotations.ts +0 -84
  326. package/src/api/sizes.ts +0 -52
  327. package/src/api/svg.ts +0 -888
  328. package/src/api/svgPath.ts +0 -460
  329. package/src/api/text/alignment.ts +0 -5
  330. package/src/api/text/layout.ts +0 -328
  331. package/src/core/PDFContext.ts +0 -274
  332. package/src/core/PDFObjectCopier.ts +0 -142
  333. package/src/core/acroform/PDFAcroButton.ts +0 -104
  334. package/src/core/acroform/PDFAcroCheckBox.ts +0 -48
  335. package/src/core/acroform/PDFAcroChoice.ts +0 -143
  336. package/src/core/acroform/PDFAcroComboBox.ts +0 -21
  337. package/src/core/acroform/PDFAcroField.ts +0 -168
  338. package/src/core/acroform/PDFAcroForm.ts +0 -96
  339. package/src/core/acroform/PDFAcroListBox.ts +0 -19
  340. package/src/core/acroform/PDFAcroNonTerminal.ts +0 -33
  341. package/src/core/acroform/PDFAcroPushButton.ts +0 -21
  342. package/src/core/acroform/PDFAcroRadioButton.ts +0 -57
  343. package/src/core/acroform/PDFAcroTerminal.ts +0 -70
  344. package/src/core/acroform/PDFAcroText.ts +0 -76
  345. package/src/core/acroform/flags.ts +0 -162
  346. package/src/core/acroform/utils.ts +0 -129
  347. package/src/core/annotation/AppearanceCharacteristics.ts +0 -133
  348. package/src/core/annotation/BorderStyle.ts +0 -31
  349. package/src/core/annotation/PDFAnnotation.ts +0 -148
  350. package/src/core/annotation/PDFWidgetAnnotation.ts +0 -111
  351. package/src/core/annotation/flags.ts +0 -90
  352. package/src/core/crypto.ts +0 -1844
  353. package/src/core/document/PDFCrossRefSection.ts +0 -161
  354. package/src/core/document/PDFHeader.ts +0 -48
  355. package/src/core/document/PDFTrailer.ts +0 -48
  356. package/src/core/document/PDFTrailerDict.ts +0 -39
  357. package/src/core/embedders/CMap.ts +0 -65
  358. package/src/core/embedders/CustomFontEmbedder.ts +0 -237
  359. package/src/core/embedders/CustomFontSubsetEmbedder.ts +0 -89
  360. package/src/core/embedders/FileEmbedder.ts +0 -77
  361. package/src/core/embedders/FontFlags.ts +0 -45
  362. package/src/core/embedders/JavaScriptEmbedder.ts +0 -34
  363. package/src/core/embedders/JpegEmbedder.ts +0 -118
  364. package/src/core/embedders/PDFPageEmbedder.ts +0 -139
  365. package/src/core/embedders/PngEmbedder.ts +0 -69
  366. package/src/core/embedders/StandardFontEmbedder.ts +0 -121
  367. package/src/core/errors.ts +0 -226
  368. package/src/core/interactive/ViewerPreferences.ts +0 -565
  369. package/src/core/objects/PDFArray.ts +0 -179
  370. package/src/core/objects/PDFBool.ts +0 -53
  371. package/src/core/objects/PDFDict.ts +0 -220
  372. package/src/core/objects/PDFHexString.ts +0 -94
  373. package/src/core/objects/PDFInvalidObject.ts +0 -34
  374. package/src/core/objects/PDFName.ts +0 -152
  375. package/src/core/objects/PDFNull.ts +0 -30
  376. package/src/core/objects/PDFNumber.ts +0 -44
  377. package/src/core/objects/PDFObject.ts +0 -22
  378. package/src/core/objects/PDFRawStream.ts +0 -41
  379. package/src/core/objects/PDFRef.ts +0 -51
  380. package/src/core/objects/PDFStream.ts +0 -87
  381. package/src/core/objects/PDFString.ts +0 -118
  382. package/src/core/operators/PDFOperator.ts +0 -72
  383. package/src/core/operators/PDFOperatorNames.ts +0 -92
  384. package/src/core/parser/BaseParser.ts +0 -119
  385. package/src/core/parser/ByteStream.ts +0 -76
  386. package/src/core/parser/PDFObjectParser.ts +0 -302
  387. package/src/core/parser/PDFObjectStreamParser.ts +0 -65
  388. package/src/core/parser/PDFParser.ts +0 -363
  389. package/src/core/parser/PDFXRefStreamParser.ts +0 -129
  390. package/src/core/streams/Ascii85Stream.ts +0 -97
  391. package/src/core/streams/AsciiHexStream.ts +0 -77
  392. package/src/core/streams/DecodeStream.ts +0 -188
  393. package/src/core/streams/DecryptStream.ts +0 -49
  394. package/src/core/streams/FlateStream.ts +0 -397
  395. package/src/core/streams/LZWStream.ts +0 -157
  396. package/src/core/streams/RunLengthStream.ts +0 -55
  397. package/src/core/streams/Stream.ts +0 -126
  398. package/src/core/streams/decode.ts +0 -70
  399. package/src/core/structures/PDFCatalog.ts +0 -81
  400. package/src/core/structures/PDFContentStream.ts +0 -58
  401. package/src/core/structures/PDFCrossRefStream.ts +0 -238
  402. package/src/core/structures/PDFFlateStream.ts +0 -40
  403. package/src/core/structures/PDFObjectStream.ts +0 -91
  404. package/src/core/structures/PDFPageLeaf.ts +0 -244
  405. package/src/core/structures/PDFPageTree.ts +0 -192
  406. package/src/core/syntax/CharCodes.ts +0 -62
  407. package/src/core/syntax/Delimiters.ts +0 -14
  408. package/src/core/syntax/Irregular.ts +0 -10
  409. package/src/core/syntax/Keywords.ts +0 -57
  410. package/src/core/syntax/Numeric.ts +0 -26
  411. package/src/core/syntax/Whitespace.ts +0 -10
  412. package/src/core/writers/PDFStreamWriter.ts +0 -114
  413. package/src/core/writers/PDFWriter.ts +0 -146
  414. package/src/types/fontkit.ts +0 -643
  415. package/src/utils/Cache.ts +0 -26
  416. package/src/utils/arrays.ts +0 -153
  417. package/src/utils/async.ts +0 -8
  418. package/src/utils/base64.ts +0 -98
  419. package/src/utils/elements/Arc.ts +0 -97
  420. package/src/utils/elements/Circle.ts +0 -47
  421. package/src/utils/elements/Ellipse.ts +0 -117
  422. package/src/utils/elements/GraphElement.ts +0 -14
  423. package/src/utils/elements/Line.ts +0 -83
  424. package/src/utils/elements/Plot.ts +0 -50
  425. package/src/utils/elements/Point.ts +0 -37
  426. package/src/utils/elements/Rectangle.ts +0 -65
  427. package/src/utils/elements/Segment.ts +0 -81
  428. package/src/utils/errors.ts +0 -3
  429. package/src/utils/intersections.ts +0 -237
  430. package/src/utils/maths.ts +0 -96
  431. package/src/utils/numbers.ts +0 -55
  432. package/src/utils/objects.ts +0 -13
  433. package/src/utils/pdfDocEncoding.ts +0 -69
  434. package/src/utils/png.ts +0 -100
  435. package/src/utils/rng.ts +0 -21
  436. package/src/utils/strings.ts +0 -191
  437. package/src/utils/validators.ts +0 -192
  438. package/tsconfig.build.json +0 -14
  439. package/tsconfig.json +0 -15
  440. package/vite.config.mts +0 -39
  441. /package/{src/api/form/index.ts → dist/api/form/index.d.ts} +0 -0
  442. /package/{src/api/image/index.ts → dist/api/image/index.d.ts} +0 -0
  443. /package/{src/api/index.ts → dist/api/index.d.ts} +0 -0
  444. /package/{src/api/text/index.ts → dist/api/text/index.d.ts} +0 -0
  445. /package/{src/core/acroform/index.ts → dist/core/acroform/index.d.ts} +0 -0
  446. /package/{src/core/annotation/index.ts → dist/core/annotation/index.d.ts} +0 -0
  447. /package/{src/index.ts → dist/index.d.ts} +0 -0
  448. /package/{src/utils/elements/index.ts → dist/utils/elements/index.d.ts} +0 -0
  449. /package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -0
@@ -1,576 +0,0 @@
1
- import fontkit from '@pdf-lib/fontkit';
2
- import fs from 'fs';
3
- import {
4
- EncryptedPDFError,
5
- ParseSpeeds,
6
- PDFArray,
7
- PDFDict,
8
- PDFDocument,
9
- PDFHexString,
10
- PDFName,
11
- PDFPage,
12
- Duplex,
13
- NonFullScreenPageMode,
14
- PrintScaling,
15
- ReadingDirection,
16
- ViewerPreferences,
17
- } from '../../src/index';
18
-
19
- const examplePngImage =
20
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaoVBzuIdMhQnSyIijhKFYtgobQVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi5uak6CIl/i8ptIjx4Lgf7+497t4BQqPCVLNrAlA1y0jFY2I2tyr2vKIfAgLoRVhipp5IL2bgOb7u4ePrXZRneZ/7cwwoeZMBPpF4jumGRbxBPLNp6Zz3iUOsJCnE58TjBl2Q+JHrsstvnIsOCzwzZGRS88QhYrHYwXIHs5KhEk8TRxRVo3wh67LCeYuzWqmx1j35C4N5bSXNdZphxLGEBJIQIaOGMiqwEKVVI8VEivZjHv4Rx58kl0yuMhg5FlCFCsnxg//B727NwtSkmxSMAd0vtv0xCvTsAs26bX8f23bzBPA/A1da219tALOfpNfbWuQIGNwGLq7bmrwHXO4Aw0+6ZEiO5KcpFArA+xl9Uw4YugX61tzeWvs4fQAy1NXyDXBwCIwVKXvd492Bzt7+PdPq7wcdn3KFLu4iBAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlFJREFUeNrt289r02AYB/Dvk6Sl4EDKpllTlFKsnUdBHXgUBEHwqHj2IJ72B0zwKHhxJ08i/gDxX/AiRfSkBxELXTcVxTa2s2xTsHNN8ngQbQL70RZqG/Z9b29JnvflkydP37whghG3ZaegoxzfwB5vBCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgwB5rstWPtnP0LqBX/vZNyLF6vVrpN/hucewhb4g+B2AyAwiwY7NGOXijviS9vBeYh6CEP4edBLDADCAAAQhAAAIQgAAEIAABCDAUAFF/GIN1DM+PBYCo/ohMXDQ1WPjoeUZH1mMBEEh0oqLGvsHCy0S4NzWVWotJBogbvZB+brDwQT7UWSmXy5sxyQB9HQEROdVv4HQ+vx+QmS4iXsWmCK7Usu8AhOqAXMzlcn3VgWTbugQgEYrxMkZ/gyUPgnuhe2C6/Stxvdeg2ezMJERvhOuoZ+JBrNYBRuDdBtDuXkDM25nCHLbZSv9X6A4VHU+DpwCcbvbjcetLtTaOANtuirrux08HM0euisjDEMKC7RQuq+C+pVJqpzx3NZ3+eeBza9I0rWJgyHnxg2sAJrqnaHUzFcyN60Jox13hprv8aNopZBS4GcqWWVHM+lAkN0zY7ncgkYBukRoKLPpiXVj9UFkfV4Bdl8Jf60u3IMZZAG/6iLuhkDvaSZ74VqtUx3kp3NN7gUZt8RmA43a2eEY1OCfQ04AcBpAGkAKwpkBLIG8BfQE/eNJsvG/G4VlARj0BfjDBx2ECEIAABCAAAQhAAAIQgAAE+P/tN8YvpvbTDBOlAAAAAElFTkSuQmCC';
21
-
22
- const unencryptedPdfBytes = fs.readFileSync('assets/pdfs/normal.pdf');
23
- const oldEncryptedPdfBytes1 = fs.readFileSync('assets/pdfs/encrypted_old.pdf');
24
-
25
- // Had to remove this file due to DMCA complaint, so commented this line out
26
- // along with the 2 tests that depend on it. Would be nice to find a new file
27
- // that we could drop in here, but the tests are for non-critical functionality,
28
- // so this solution is okay for now.
29
- // const oldEncryptedPdfBytes2 = fs.readFileSync('pdf_specification.pdf');
30
-
31
- const newEncryptedPdfBytes = fs.readFileSync('assets/pdfs/encrypted_new.pdf');
32
- const invalidObjectsPdfBytes = fs.readFileSync(
33
- 'assets/pdfs/with_invalid_objects.pdf',
34
- );
35
- const justMetadataPdfbytes = fs.readFileSync('assets/pdfs/just_metadata.pdf');
36
- const normalPdfBytes = fs.readFileSync('assets/pdfs/normal.pdf');
37
- const withViewerPrefsPdfBytes = fs.readFileSync(
38
- 'assets/pdfs/with_viewer_prefs.pdf',
39
- );
40
-
41
- describe(`PDFDocument`, () => {
42
- describe(`load() method`, () => {
43
- const origConsoleWarn = console.warn;
44
-
45
- beforeAll(() => {
46
- const ignoredWarnings = [
47
- 'Trying to parse invalid object:',
48
- 'Invalid object ref:',
49
- ];
50
- console.warn = vi.fn((...args) => {
51
- const isIgnored = ignoredWarnings.find((iw) => args[0].includes(iw));
52
- if (!isIgnored) origConsoleWarn(...args);
53
- });
54
- });
55
-
56
- beforeEach(() => {
57
- vi.clearAllMocks();
58
- });
59
-
60
- afterAll(() => {
61
- console.warn = origConsoleWarn;
62
- });
63
-
64
- it(`does not throw an error for unencrypted PDFs`, async () => {
65
- const pdfDoc = await PDFDocument.load(unencryptedPdfBytes, {
66
- parseSpeed: ParseSpeeds.Fastest,
67
- });
68
- expect(pdfDoc).toBeInstanceOf(PDFDocument);
69
- expect(pdfDoc.isEncrypted).toBe(false);
70
- });
71
-
72
- it(`throws an error for old encrypted PDFs (1)`, async () => {
73
- await expect(
74
- PDFDocument.load(oldEncryptedPdfBytes1, {
75
- parseSpeed: ParseSpeeds.Fastest,
76
- }),
77
- ).rejects.toThrow(new EncryptedPDFError());
78
- });
79
-
80
- // it(`throws an error for old encrypted PDFs (2)`, async () => {
81
- // await expect(
82
- // PDFDocument.load(oldEncryptedPdfBytes2, {
83
- // parseSpeed: ParseSpeeds.Fastest,
84
- // }),
85
- // ).rejects.toThrow(new EncryptedPDFError());
86
- // });
87
-
88
- it(`throws an error for new encrypted PDFs`, async () => {
89
- await expect(
90
- PDFDocument.load(newEncryptedPdfBytes, {
91
- parseSpeed: ParseSpeeds.Fastest,
92
- }),
93
- ).rejects.toThrow(new EncryptedPDFError());
94
- });
95
-
96
- it(`does not throw an error for old encrypted PDFs when ignoreEncryption=true (1)`, async () => {
97
- const pdfDoc = await PDFDocument.load(oldEncryptedPdfBytes1, {
98
- ignoreEncryption: true,
99
- parseSpeed: ParseSpeeds.Fastest,
100
- });
101
- expect(pdfDoc).toBeInstanceOf(PDFDocument);
102
- expect(pdfDoc.isEncrypted).toBe(true);
103
- });
104
-
105
- // it(`does not throw an error for old encrypted PDFs when ignoreEncryption=true (2)`, async () => {
106
- // const pdfDoc = await PDFDocument.load(oldEncryptedPdfBytes2, {
107
- // ignoreEncryption: true,
108
- // parseSpeed: ParseSpeeds.Fastest,
109
- // });
110
- // expect(pdfDoc).toBeInstanceOf(PDFDocument);
111
- // expect(pdfDoc.isEncrypted).toBe(true);
112
- // });
113
-
114
- it(`does not throw an error for new encrypted PDFs when ignoreEncryption=true`, async () => {
115
- const pdfDoc = await PDFDocument.load(newEncryptedPdfBytes, {
116
- ignoreEncryption: true,
117
- parseSpeed: ParseSpeeds.Fastest,
118
- });
119
- expect(pdfDoc).toBeInstanceOf(PDFDocument);
120
- expect(pdfDoc.isEncrypted).toBe(true);
121
- });
122
-
123
- it(`does not throw an error for invalid PDFs when throwOnInvalidObject=false`, async () => {
124
- await expect(
125
- PDFDocument.load(invalidObjectsPdfBytes, {
126
- ignoreEncryption: true,
127
- parseSpeed: ParseSpeeds.Fastest,
128
- throwOnInvalidObject: false,
129
- }),
130
- ).resolves.toBeInstanceOf(PDFDocument);
131
- });
132
-
133
- it(`throws an error for invalid PDFs when throwOnInvalidObject=true`, async () => {
134
- const expectedError = new Error(
135
- 'Trying to parse invalid object: {"line":20,"column":13,"offset":126})',
136
- );
137
- await expect(
138
- PDFDocument.load(invalidObjectsPdfBytes, {
139
- ignoreEncryption: true,
140
- parseSpeed: ParseSpeeds.Fastest,
141
- throwOnInvalidObject: true,
142
- }),
143
- ).rejects.toEqual(expectedError);
144
- });
145
- });
146
-
147
- describe(`embedFont() method`, () => {
148
- it(`serializes the same value on every save`, async () => {
149
- const customFont = fs.readFileSync('assets/fonts/ubuntu/Ubuntu-B.ttf');
150
- const pdfDoc1 = await PDFDocument.create({ updateMetadata: false });
151
- const pdfDoc2 = await PDFDocument.create({ updateMetadata: false });
152
-
153
- pdfDoc1.registerFontkit(fontkit);
154
- pdfDoc2.registerFontkit(fontkit);
155
-
156
- await pdfDoc1.embedFont(customFont);
157
- await pdfDoc2.embedFont(customFont);
158
-
159
- const savedDoc1 = await pdfDoc1.save();
160
- const savedDoc2 = await pdfDoc2.save();
161
-
162
- expect(savedDoc1).toEqual(savedDoc2);
163
- });
164
- });
165
-
166
- describe(`setLanguage() method`, () => {
167
- it(`sets the language of the document`, async () => {
168
- const pdfDoc = await PDFDocument.create();
169
- expect(pdfDoc.catalog.get(PDFName.of('Lang'))).toBeUndefined();
170
-
171
- pdfDoc.setLanguage('fr-FR');
172
- expect(String(pdfDoc.catalog.get(PDFName.of('Lang')))).toBe('(fr-FR)');
173
-
174
- pdfDoc.setLanguage('en');
175
- expect(String(pdfDoc.catalog.get(PDFName.of('Lang')))).toBe('(en)');
176
-
177
- pdfDoc.setLanguage('');
178
- expect(String(pdfDoc.catalog.get(PDFName.of('Lang')))).toBe('()');
179
- });
180
- });
181
-
182
- describe(`getPageCount() method`, () => {
183
- let pdfDoc: PDFDocument;
184
- beforeAll(async () => {
185
- const parseSpeed = ParseSpeeds.Fastest;
186
- pdfDoc = await PDFDocument.load(unencryptedPdfBytes, { parseSpeed });
187
- });
188
-
189
- it(`returns the initial page count of the document`, () => {
190
- expect(pdfDoc.getPageCount()).toBe(2);
191
- });
192
-
193
- it(`returns the updated page count after adding pages`, () => {
194
- pdfDoc.addPage();
195
- pdfDoc.addPage();
196
- expect(pdfDoc.getPageCount()).toBe(4);
197
- });
198
-
199
- it(`returns the updated page count after inserting pages`, () => {
200
- pdfDoc.insertPage(0);
201
- pdfDoc.insertPage(4);
202
- expect(pdfDoc.getPageCount()).toBe(6);
203
- });
204
-
205
- it(`returns the updated page count after removing pages`, () => {
206
- pdfDoc.removePage(5);
207
- pdfDoc.removePage(0);
208
- expect(pdfDoc.getPageCount()).toBe(4);
209
- });
210
-
211
- it(`returns 0 for brand new documents`, async () => {
212
- const newDoc = await PDFDocument.create();
213
- expect(newDoc.getPageCount()).toBe(0);
214
- });
215
- });
216
-
217
- describe(`addPage() method`, () => {
218
- it(`Can insert pages in brand new documents`, async () => {
219
- const pdfDoc = await PDFDocument.create();
220
- expect(pdfDoc.addPage()).toBeInstanceOf(PDFPage);
221
- });
222
- });
223
-
224
- describe(`metadata getter methods`, () => {
225
- it(`they can retrieve the title, author, subject, producer, creator, keywords, creation date, and modification date from a new document`, async () => {
226
- const pdfDoc = await PDFDocument.create();
227
-
228
- // Everything is empty or has its initial value.
229
- expect(pdfDoc.getTitle()).toBeUndefined();
230
- expect(pdfDoc.getAuthor()).toBeUndefined();
231
- expect(pdfDoc.getSubject()).toBeUndefined();
232
- expect(pdfDoc.getProducer()).toBe(
233
- 'pdf-lib (https://github.com/Hopding/pdf-lib)',
234
- );
235
- expect(pdfDoc.getCreator()).toBe(
236
- 'pdf-lib (https://github.com/Hopding/pdf-lib)',
237
- );
238
- expect(pdfDoc.getKeywords()).toBeUndefined();
239
- // Dates can not be tested since they have the current time as value.
240
-
241
- const title = '🥚 The Life of an Egg 🍳';
242
- const author = 'Humpty Dumpty';
243
- const subject = '📘 An Epic Tale of Woe 📖';
244
- const keywords = ['eggs', 'wall', 'fall', 'king', 'horses', 'men', '🥚'];
245
- const producer = 'PDF App 9000 🤖';
246
- const creator = 'PDF App 8000 🤖';
247
-
248
- // Milliseconds will not get saved, so these dates do not have milliseconds.
249
- const creationDate = new Date('1997-08-15T01:58:37Z');
250
- const modificationDate = new Date('2018-12-21T07:00:11Z');
251
-
252
- pdfDoc.setTitle(title);
253
- pdfDoc.setAuthor(author);
254
- pdfDoc.setSubject(subject);
255
- pdfDoc.setKeywords(keywords);
256
- pdfDoc.setProducer(producer);
257
- pdfDoc.setCreator(creator);
258
- pdfDoc.setCreationDate(creationDate);
259
- pdfDoc.setModificationDate(modificationDate);
260
-
261
- expect(pdfDoc.getTitle()).toBe(title);
262
- expect(pdfDoc.getAuthor()).toBe(author);
263
- expect(pdfDoc.getSubject()).toBe(subject);
264
- expect(pdfDoc.getProducer()).toBe(producer);
265
- expect(pdfDoc.getCreator()).toBe(creator);
266
- expect(pdfDoc.getKeywords()).toBe(keywords.join(' '));
267
- expect(pdfDoc.getCreationDate()).toStrictEqual(creationDate);
268
- expect(pdfDoc.getModificationDate()).toStrictEqual(modificationDate);
269
- });
270
-
271
- it(`they can retrieve the title, author, subject, producer, creator, and keywords from an existing document`, async () => {
272
- const pdfDoc = await PDFDocument.load(justMetadataPdfbytes);
273
-
274
- expect(pdfDoc.getTitle()).toBe(
275
- 'Title metadata (StringType=HexString, Encoding=PDFDocEncoding) with some weird chars ˘•€',
276
- );
277
- expect(pdfDoc.getAuthor()).toBe(
278
- 'Author metadata (StringType=HexString, Encoding=UTF-16BE) with some chinese 你怎么敢',
279
- );
280
- expect(pdfDoc.getSubject()).toBe(
281
- 'Subject metadata (StringType=LiteralString, Encoding=UTF-16BE) with some chinese 你怎么敢',
282
- );
283
- expect(pdfDoc.getProducer()).toBe(
284
- 'pdf-lib (https://github.com/Hopding/pdf-lib)',
285
- );
286
- expect(pdfDoc.getKeywords()).toBe(
287
- 'Keywords metadata (StringType=LiteralString, Encoding=PDFDocEncoding) with some weird chars ˘•€',
288
- );
289
- });
290
-
291
- it(`they can retrieve the creation date and modification date from an existing document`, async () => {
292
- const pdfDoc = await PDFDocument.load(normalPdfBytes, {
293
- updateMetadata: false,
294
- });
295
-
296
- expect(pdfDoc.getCreationDate()).toEqual(
297
- new Date('2018-01-04T01:05:06.000Z'),
298
- );
299
- expect(pdfDoc.getModificationDate()).toEqual(
300
- new Date('2018-01-04T01:05:06.000Z'),
301
- );
302
- });
303
- });
304
-
305
- describe(`ViewerPreferences`, () => {
306
- it(`defaults to an undefined ViewerPreferences dict`, async () => {
307
- const pdfDoc = await PDFDocument.create();
308
-
309
- expect(
310
- pdfDoc.catalog.lookupMaybe(PDFName.of('ViewerPreferences'), PDFDict),
311
- ).toBeUndefined();
312
- });
313
-
314
- it(`can get/set HideToolbar, HideMenubar, HideWindowUI, FitWindow, CenterWindow, DisplayDocTitle, NonFullScreenPageMode, Direction, PrintScaling, Duplex, PickTrayByPDFSize, PrintPageRange, NumCopies from a new document`, async () => {
315
- const pdfDoc = await PDFDocument.create();
316
- const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences();
317
-
318
- // Everything is empty or has its initial value.
319
- expect(viewerPrefs.getHideToolbar()).toBe(false);
320
- expect(viewerPrefs.getHideMenubar()).toBe(false);
321
- expect(viewerPrefs.getHideWindowUI()).toBe(false);
322
- expect(viewerPrefs.getFitWindow()).toBe(false);
323
- expect(viewerPrefs.getCenterWindow()).toBe(false);
324
- expect(viewerPrefs.getDisplayDocTitle()).toBe(false);
325
- expect(viewerPrefs.getNonFullScreenPageMode()).toBe(
326
- NonFullScreenPageMode.UseNone,
327
- );
328
- expect(viewerPrefs.getReadingDirection()).toBe(ReadingDirection.L2R);
329
- expect(viewerPrefs.getPrintScaling()).toBe(PrintScaling.AppDefault);
330
- expect(viewerPrefs.getDuplex()).toBeUndefined();
331
- expect(viewerPrefs.getPickTrayByPDFSize()).toBeUndefined();
332
- expect(viewerPrefs.getPrintPageRange()).toEqual([]);
333
- expect(viewerPrefs.getNumCopies()).toBe(1);
334
-
335
- const pageRanges = [
336
- { start: 0, end: 0 },
337
- { start: 2, end: 2 },
338
- { start: 4, end: 6 },
339
- ];
340
-
341
- viewerPrefs.setHideToolbar(true);
342
- viewerPrefs.setHideMenubar(true);
343
- viewerPrefs.setHideWindowUI(true);
344
- viewerPrefs.setFitWindow(true);
345
- viewerPrefs.setCenterWindow(true);
346
- viewerPrefs.setDisplayDocTitle(true);
347
- viewerPrefs.setNonFullScreenPageMode(NonFullScreenPageMode.UseOutlines);
348
- viewerPrefs.setReadingDirection(ReadingDirection.R2L);
349
- viewerPrefs.setPrintScaling(PrintScaling.None);
350
- viewerPrefs.setDuplex(Duplex.DuplexFlipLongEdge);
351
- viewerPrefs.setPickTrayByPDFSize(true);
352
- viewerPrefs.setPrintPageRange(pageRanges);
353
- viewerPrefs.setNumCopies(2);
354
-
355
- expect(viewerPrefs.getHideToolbar()).toBe(true);
356
- expect(viewerPrefs.getHideMenubar()).toBe(true);
357
- expect(viewerPrefs.getHideWindowUI()).toBe(true);
358
- expect(viewerPrefs.getFitWindow()).toBe(true);
359
- expect(viewerPrefs.getCenterWindow()).toBe(true);
360
- expect(viewerPrefs.getDisplayDocTitle()).toBe(true);
361
- expect(viewerPrefs.getNonFullScreenPageMode()).toBe(
362
- NonFullScreenPageMode.UseOutlines,
363
- );
364
- expect(viewerPrefs.getReadingDirection()).toBe(ReadingDirection.R2L);
365
- expect(viewerPrefs.getPrintScaling()).toBe(PrintScaling.None);
366
- expect(viewerPrefs.getDuplex()).toBe(Duplex.DuplexFlipLongEdge);
367
- expect(viewerPrefs.getPickTrayByPDFSize()).toBe(true);
368
- expect(viewerPrefs.getPrintPageRange()).toEqual(pageRanges);
369
- expect(viewerPrefs.getNumCopies()).toBe(2);
370
-
371
- // Test setting single page range
372
- const pageRange = { start: 2, end: 4 };
373
- viewerPrefs.setPrintPageRange(pageRange);
374
- expect(viewerPrefs.getPrintPageRange()).toEqual([pageRange]);
375
- });
376
-
377
- it(`they can be retrieved from an existing document`, async () => {
378
- const pdfDoc = await PDFDocument.load(withViewerPrefsPdfBytes);
379
- const viewerPrefs = pdfDoc.catalog.getViewerPreferences()!;
380
-
381
- expect(viewerPrefs).toBeInstanceOf(ViewerPreferences);
382
- expect(viewerPrefs.getPrintScaling()).toBe(PrintScaling.None);
383
- expect(viewerPrefs.getDuplex()).toBe(Duplex.DuplexFlipLongEdge);
384
- expect(viewerPrefs.getPickTrayByPDFSize()).toBe(true);
385
- expect(viewerPrefs.getPrintPageRange()).toEqual([
386
- { start: 1, end: 1 },
387
- { start: 3, end: 4 },
388
- ]);
389
- expect(viewerPrefs.getNumCopies()).toBe(2);
390
-
391
- expect(viewerPrefs.getFitWindow()).toBe(true);
392
- expect(viewerPrefs.getCenterWindow()).toBe(true);
393
- expect(viewerPrefs.getDisplayDocTitle()).toBe(true);
394
- expect(viewerPrefs.getHideMenubar()).toBe(true);
395
- expect(viewerPrefs.getHideToolbar()).toBe(true);
396
-
397
- /*
398
- * Other presets not tested, but defined in this PDF doc (Acrobat XI v11):
399
- * Binding: RightEdge
400
- * Language: EN-NZ
401
- *
402
- * NavigationTab: PageOnly
403
- * PageLayout: TwoUp (facing)
404
- * Magnification: 50%
405
- * OpenToPage: 2
406
- *
407
- * PageMode: FullScreen
408
- */
409
- });
410
- });
411
-
412
- describe(`setTitle() method with options`, () => {
413
- it(`does not set the ViewerPreferences dict if the option is not set`, async () => {
414
- const pdfDoc = await PDFDocument.create();
415
-
416
- pdfDoc.setTitle('Testing setTitle Title');
417
-
418
- expect(
419
- pdfDoc.catalog.lookupMaybe(PDFName.of('ViewerPreferences'), PDFDict),
420
- ).toBeUndefined();
421
-
422
- expect(pdfDoc.getTitle()).toBe('Testing setTitle Title');
423
- });
424
-
425
- it(`creates the ViewerPreferences dict when the option is set`, async () => {
426
- const pdfDoc = await PDFDocument.create();
427
-
428
- pdfDoc.setTitle('ViewerPrefs Test Creation', {
429
- showInWindowTitleBar: true,
430
- });
431
-
432
- expect(
433
- pdfDoc.catalog.lookupMaybe(PDFName.of('ViewerPreferences'), PDFDict),
434
- );
435
- });
436
- });
437
-
438
- describe(`addJavaScript() method`, () => {
439
- it(`adds the script to the catalog`, async () => {
440
- const pdfDoc = await PDFDocument.create();
441
- pdfDoc.addJavaScript(
442
- 'main',
443
- 'console.show(); console.println("Hello World");',
444
- );
445
- await pdfDoc.flush();
446
-
447
- expect(pdfDoc.catalog.has(PDFName.of('Names')));
448
- const Names = pdfDoc.catalog.lookup(PDFName.of('Names'), PDFDict);
449
- expect(Names.has(PDFName.of('JavaScript')));
450
- const Javascript = Names.lookup(PDFName.of('JavaScript'), PDFDict);
451
- expect(Javascript.has(PDFName.of('Names')));
452
- const JSNames = Javascript.lookup(PDFName.of('Names'), PDFArray);
453
- expect(JSNames.lookup(0, PDFHexString).decodeText()).toEqual('main');
454
- });
455
-
456
- it(`does not overwrite scripts`, async () => {
457
- const pdfDoc = await PDFDocument.create();
458
- pdfDoc.addJavaScript(
459
- 'first',
460
- 'console.show(); console.println("First");',
461
- );
462
- pdfDoc.addJavaScript(
463
- 'second',
464
- 'console.show(); console.println("Second");',
465
- );
466
- await pdfDoc.flush();
467
-
468
- const Names = pdfDoc.catalog.lookup(PDFName.of('Names'), PDFDict);
469
- const Javascript = Names.lookup(PDFName.of('JavaScript'), PDFDict);
470
- const JSNames = Javascript.lookup(PDFName.of('Names'), PDFArray);
471
- expect(JSNames.lookup(0, PDFHexString).decodeText()).toEqual('first');
472
- expect(JSNames.lookup(2, PDFHexString).decodeText()).toEqual('second');
473
- });
474
- });
475
-
476
- describe(`embedPng() method`, () => {
477
- it(`does not prevent the PDFDocument from being modified after embedding an image`, async () => {
478
- const pdfDoc = await PDFDocument.create();
479
- const pdfPage = pdfDoc.addPage();
480
-
481
- const noErrorFunc = async () => {
482
- const embeddedImage = await pdfDoc.embedPng(examplePngImage);
483
- pdfPage.drawImage(embeddedImage);
484
- await embeddedImage.embed();
485
-
486
- const pdfPage2 = pdfDoc.addPage();
487
- pdfPage2.drawImage(embeddedImage);
488
-
489
- pdfDoc.setTitle('Unit Test');
490
- };
491
-
492
- await expect(noErrorFunc()).resolves.not.toThrow();
493
- });
494
- });
495
-
496
- describe(`save() method`, () => {
497
- it(`can called multiple times on the same PDFDocument with different changes`, async () => {
498
- const pdfDoc = await PDFDocument.create();
499
- const embeddedImage = await pdfDoc.embedPng(examplePngImage);
500
-
501
- const noErrorFunc = async () => {
502
- const page1 = pdfDoc.addPage();
503
- page1.drawImage(embeddedImage);
504
-
505
- const pdfBytes1 = await pdfDoc.save();
506
- expect(pdfBytes1.byteLength).toBeGreaterThan(0);
507
-
508
- const page2 = pdfDoc.addPage();
509
- page2.drawImage(embeddedImage);
510
-
511
- pdfDoc.setTitle('Unit Test');
512
-
513
- const pdfBytes2 = await pdfDoc.save();
514
- expect(pdfBytes2.byteLength).toBeGreaterThan(0);
515
- expect(pdfBytes2.byteLength).not.toEqual(pdfBytes1.byteLength);
516
-
517
- const pdfPage3 = pdfDoc.addPage();
518
- pdfPage3.drawImage(embeddedImage);
519
-
520
- pdfDoc.setTitle('Unit Test 2. change');
521
-
522
- const pdfBytes3 = await pdfDoc.save();
523
- expect(pdfBytes3.byteLength).toBeGreaterThan(0);
524
- expect(pdfBytes3.byteLength).not.toEqual(pdfBytes2.byteLength);
525
- };
526
-
527
- await expect(noErrorFunc()).resolves.not.toThrow();
528
- });
529
- });
530
-
531
- describe(`copy() method`, () => {
532
- let pdfDoc: PDFDocument;
533
- let srcDoc: PDFDocument;
534
- beforeAll(async () => {
535
- const parseSpeed = ParseSpeeds.Fastest;
536
- srcDoc = await PDFDocument.load(unencryptedPdfBytes, { parseSpeed });
537
- const title = '🥚 The Life of an Egg 🍳';
538
- const author = 'Humpty Dumpty';
539
- const subject = '📘 An Epic Tale of Woe 📖';
540
- const keywords = ['eggs', 'wall', 'fall', 'king', 'horses', 'men', '🥚'];
541
- const producer = 'PDF App 9000 🤖';
542
- const creator = 'PDF App 8000 🤖';
543
-
544
- // Milliseconds will not get saved, so these dates do not have milliseconds.
545
- const creationDate = new Date('1997-08-15T01:58:37Z');
546
- const modificationDate = new Date('2018-12-21T07:00:11Z');
547
-
548
- srcDoc.setTitle(title);
549
- srcDoc.setAuthor(author);
550
- srcDoc.setSubject(subject);
551
- srcDoc.setKeywords(keywords);
552
- srcDoc.setProducer(producer);
553
- srcDoc.setCreator(creator);
554
- srcDoc.setCreationDate(creationDate);
555
- srcDoc.setModificationDate(modificationDate);
556
- pdfDoc = await srcDoc.copy();
557
- });
558
-
559
- it(`Returns a pdf with the same number of pages`, async () => {
560
- expect(pdfDoc.getPageCount()).toBe(srcDoc.getPageCount());
561
- });
562
-
563
- it(`Can copy author, creationDate, creator, producer, subject, title, defaultWordBreaks`, async () => {
564
- expect(pdfDoc.getAuthor()).toBe(srcDoc.getAuthor());
565
- expect(pdfDoc.getCreationDate()).toStrictEqual(srcDoc.getCreationDate());
566
- expect(pdfDoc.getCreator()).toBe(srcDoc.getCreator());
567
- expect(pdfDoc.getModificationDate()).toStrictEqual(
568
- srcDoc.getModificationDate(),
569
- );
570
- expect(pdfDoc.getProducer()).toBe(srcDoc.getProducer());
571
- expect(pdfDoc.getSubject()).toBe(srcDoc.getSubject());
572
- expect(pdfDoc.getTitle()).toBe(srcDoc.getTitle());
573
- expect(pdfDoc.defaultWordBreaks).toEqual(srcDoc.defaultWordBreaks);
574
- });
575
- });
576
- });
@@ -1,60 +0,0 @@
1
- import { PDFDocument, PDFImage } from '../../src/api';
2
- import { PngEmbedder } from '../../src/core';
3
- import { toUint8Array } from '../../src/utils';
4
-
5
- const examplePngImage =
6
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaoVBzuIdMhQnSyIijhKFYtgobQVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi5uak6CIl/i8ptIjx4Lgf7+497t4BQqPCVLNrAlA1y0jFY2I2tyr2vKIfAgLoRVhipp5IL2bgOb7u4ePrXZRneZ/7cwwoeZMBPpF4jumGRbxBPLNp6Zz3iUOsJCnE58TjBl2Q+JHrsstvnIsOCzwzZGRS88QhYrHYwXIHs5KhEk8TRxRVo3wh67LCeYuzWqmx1j35C4N5bSXNdZphxLGEBJIQIaOGMiqwEKVVI8VEivZjHv4Rx58kl0yuMhg5FlCFCsnxg//B727NwtSkmxSMAd0vtv0xCvTsAs26bX8f23bzBPA/A1da219tALOfpNfbWuQIGNwGLq7bmrwHXO4Aw0+6ZEiO5KcpFArA+xl9Uw4YugX61tzeWvs4fQAy1NXyDXBwCIwVKXvd492Bzt7+PdPq7wcdn3KFLu4iBAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlFJREFUeNrt289r02AYB/Dvk6Sl4EDKpllTlFKsnUdBHXgUBEHwqHj2IJ72B0zwKHhxJ08i/gDxX/AiRfSkBxELXTcVxTa2s2xTsHNN8ngQbQL70RZqG/Z9b29JnvflkydP37whghG3ZaegoxzfwB5vBCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgwB5rstWPtnP0LqBX/vZNyLF6vVrpN/hucewhb4g+B2AyAwiwY7NGOXijviS9vBeYh6CEP4edBLDADCAAAQhAAAIQgAAEIAABCDAUAFF/GIN1DM+PBYCo/ohMXDQ1WPjoeUZH1mMBEEh0oqLGvsHCy0S4NzWVWotJBogbvZB+brDwQT7UWSmXy5sxyQB9HQEROdVv4HQ+vx+QmS4iXsWmCK7Usu8AhOqAXMzlcn3VgWTbugQgEYrxMkZ/gyUPgnuhe2C6/Stxvdeg2ezMJERvhOuoZ+JBrNYBRuDdBtDuXkDM25nCHLbZSv9X6A4VHU+DpwCcbvbjcetLtTaOANtuirrux08HM0euisjDEMKC7RQuq+C+pVJqpzx3NZ3+eeBza9I0rWJgyHnxg2sAJrqnaHUzFcyN60Jox13hprv8aNopZBS4GcqWWVHM+lAkN0zY7ncgkYBukRoKLPpiXVj9UFkfV4Bdl8Jf60u3IMZZAG/6iLuhkDvaSZ74VqtUx3kp3NN7gUZt8RmA43a2eEY1OCfQ04AcBpAGkAKwpkBLIG8BfQE/eNJsvG/G4VlARj0BfjDBx2ECEIAABCAAAQhAAAIQgAAE+P/tN8YvpvbTDBOlAAAAAElFTkSuQmCC';
7
-
8
- describe(`PDFImage`, () => {
9
- describe(`embed() method`, () => {
10
- it(`clears the 'embedder' field after the first call`, async () => {
11
- const pdfDoc = await PDFDocument.create();
12
-
13
- const bytes = toUint8Array(examplePngImage);
14
- const embedder = await PngEmbedder.for(bytes);
15
- const ref = pdfDoc.context.nextRef();
16
- const pdfImage = PDFImage.of(ref, pdfDoc, embedder);
17
-
18
- const embedderVariable = 'embedder';
19
- expect(pdfImage[embedderVariable]).toBeDefined();
20
- await pdfImage.embed();
21
- expect(pdfImage[embedderVariable]).toBeUndefined();
22
- });
23
-
24
- it(`may be called multiple times without causing an error`, async () => {
25
- const pdfDoc = await PDFDocument.create();
26
-
27
- const bytes = toUint8Array(examplePngImage);
28
- const embedder = await PngEmbedder.for(bytes);
29
- const ref = pdfDoc.context.nextRef();
30
- const pdfImage = PDFImage.of(ref, pdfDoc, embedder);
31
-
32
- await expect(pdfImage.embed()).resolves.not.toThrow();
33
- await expect(pdfImage.embed()).resolves.not.toThrow();
34
- });
35
-
36
- it(`may be called in parallel without causing an error`, async () => {
37
- const pdfDoc = await PDFDocument.create();
38
-
39
- const bytes = toUint8Array(examplePngImage);
40
- const embedder = await PngEmbedder.for(bytes);
41
- const ref = pdfDoc.context.nextRef();
42
- const pdfImage = PDFImage.of(ref, pdfDoc, embedder);
43
-
44
- // tslint:disable-next-line
45
- const task = () => pdfImage['embedTask'];
46
-
47
- expect(task()).toBeUndefined();
48
-
49
- const task1 = pdfImage.embed();
50
- const firstTask = task();
51
-
52
- const task2 = pdfImage.embed();
53
- const secondTask = task();
54
-
55
- await Promise.all([task1, task2]);
56
-
57
- expect(firstTask).toEqual(secondTask);
58
- });
59
- });
60
- });