@pdfme/pdf-lib 6.0.3-dev.0 → 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,730 +0,0 @@
1
- import PDFPageLeaf from '../../../src/core/structures/PDFPageLeaf';
2
- import {
3
- mergeIntoTypedArray,
4
- PDFArray,
5
- PDFBool,
6
- PDFCatalog,
7
- PDFContext,
8
- PDFDict,
9
- PDFHexString,
10
- PDFName,
11
- PDFNull,
12
- PDFNumber,
13
- PDFObjectParser,
14
- PDFPageTree,
15
- PDFRawStream,
16
- PDFRef,
17
- PDFString,
18
- typedArrayFor,
19
- numberToString,
20
- } from '../../../src/index';
21
-
22
- type ParseOptions = { capNumbers?: boolean };
23
-
24
- const parse = (value: string | Uint8Array, options: ParseOptions = {}) => {
25
- const context = PDFContext.create();
26
- const parser = PDFObjectParser.forBytes(
27
- typedArrayFor(value),
28
- context,
29
- options.capNumbers,
30
- );
31
- return parser.parseObject();
32
- };
33
-
34
- const expectParse = (value: string | Uint8Array, options?: ParseOptions) =>
35
- expect(parse(value, options));
36
-
37
- const expectParseStr = (value: string | Uint8Array, options?: ParseOptions) =>
38
- expect(String(parse(value, options)));
39
-
40
- describe(`PDFObjectParser`, () => {
41
- const origConsoleWarn = console.warn;
42
-
43
- beforeAll(() => {
44
- const ignoredWarnings = [
45
- 'Parsed number that is too large for some PDF readers:',
46
- ];
47
- console.warn = vi.fn((...args) => {
48
- const isIgnored = ignoredWarnings.find((iw) => args[0].includes(iw));
49
- if (!isIgnored) origConsoleWarn(...args);
50
- });
51
- });
52
-
53
- beforeEach(() => {
54
- vi.clearAllMocks();
55
- });
56
-
57
- afterAll(() => {
58
- console.warn = origConsoleWarn;
59
- });
60
-
61
- it(`throws an error when given empty input`, () => {
62
- expect(() => parse('')).toThrow();
63
- });
64
-
65
- it(`throws an error for invalid input`, () => {
66
- expect(() => parse('I_AM_INVAL')).toThrow();
67
- });
68
-
69
- describe(`when parsing true booleans`, () => {
70
- it(`handles just the 'true' keyword`, () => {
71
- expectParse('true').toBe(PDFBool.True);
72
- });
73
-
74
- it(`handles whitespace before and after the 'true' keyword`, () => {
75
- expectParse('\0\t\n\f\r true\0\t\n\f\r ').toBe(PDFBool.True);
76
- });
77
-
78
- it(`handles comments before and after the 'true' keyword`, () => {
79
- expectParse('% Lulz wut?\ntrue% Lulz wut?\n').toBe(PDFBool.True);
80
- });
81
- });
82
-
83
- describe(`when parsing false booleans`, () => {
84
- it(`handles just the 'false' keyword`, () => {
85
- expectParse('false').toBe(PDFBool.False);
86
- });
87
-
88
- it(`handles whitespace before and after the 'false' keyword`, () => {
89
- expectParse('\0\t\n\f\r false\0\t\n\f\r ').toBe(PDFBool.False);
90
- });
91
-
92
- it(`handles comments before and after the 'false' keyword`, () => {
93
- expectParse('% Lulz wut?\nfalse% Lulz wut?\n').toBe(PDFBool.False);
94
- });
95
- });
96
-
97
- describe(`when parsing numbers`, () => {
98
- [
99
- ['123', '123'],
100
- ['43445', '43445'],
101
- ['+17', '17'],
102
- ['-98', '-98'],
103
- ['0', '0'],
104
- ['34.5', '34.5'],
105
- ['-3.62', '-3.62'],
106
- ['+123.6', '123.6'],
107
- ['4.', '4'],
108
- ['-.002', '-0.002'],
109
- ['0.', '0'],
110
- ].forEach(([input, output]) => {
111
- it(`handles ${input}`, () => {
112
- expectParse(input).toBeInstanceOf(PDFNumber);
113
- expectParseStr(input).toBe(output);
114
- });
115
- });
116
-
117
- it(`handles whitespace before and after the number`, () => {
118
- expectParse('\0\t\n\f\r -.5\0\t\n\f\r ').toBeInstanceOf(PDFNumber);
119
- expectParseStr('\0\t\n\f\r -.5\0\t\n\f\r ').toBe('-0.5');
120
- });
121
-
122
- it(`handles comments before and after the number`, () => {
123
- expectParse('% Lulz wut?\n-.5% Lulz wut?\n').toBeInstanceOf(PDFNumber);
124
- expectParseStr('% Lulz wut?\n-.5% Lulz wut?\n').toBe('-0.5');
125
- });
126
-
127
- it(`stops parsing the number when whitespace is encountered`, () => {
128
- expectParseStr('12\0' + '3').toBe('12');
129
- expectParseStr('12\t3').toBe('12');
130
- expectParseStr('12\n3').toBe('12');
131
- expectParseStr('12\f3').toBe('12');
132
- expectParseStr('12\r3').toBe('12');
133
- expectParseStr('12 3').toBe('12');
134
- });
135
-
136
- it(`stops parsing the number when a delimiter is encountered`, () => {
137
- expectParseStr('12(3').toBe('12');
138
- expectParseStr('12)3').toBe('12');
139
- expectParseStr('12<3').toBe('12');
140
- expectParseStr('12>3').toBe('12');
141
- expectParseStr('12[3').toBe('12');
142
- expectParseStr('12]3').toBe('12');
143
- expectParseStr('12{3').toBe('12');
144
- expectParseStr('12}3').toBe('12');
145
- expectParseStr('12/3').toBe('12');
146
- expectParseStr('12%3').toBe('12');
147
- });
148
-
149
- it(`can parse several numbers mashed together`, () => {
150
- const input = typedArrayFor('0.01.123+2.1-3..1-2.-.1');
151
- const context = PDFContext.create();
152
- const parser = PDFObjectParser.forBytes(input, context);
153
- expect(parser.parseObject().toString()).toBe('0.01');
154
- expect(parser.parseObject().toString()).toBe('0.123');
155
- expect(parser.parseObject().toString()).toBe('2.1');
156
- expect(parser.parseObject().toString()).toBe('-3');
157
- expect(parser.parseObject().toString()).toBe('0.1');
158
- expect(parser.parseObject().toString()).toBe('-2');
159
- expect(parser.parseObject().toString()).toBe('-0.1');
160
- });
161
-
162
- it(`caps numbers at Number.MAX_SAFE_INTEGER when capNumbers=true`, () => {
163
- expectParseStr(numberToString(Number.MAX_SAFE_INTEGER - 1), {
164
- capNumbers: true,
165
- }).toBe('9007199254740990');
166
- expectParseStr(numberToString(Number.MAX_SAFE_INTEGER), {
167
- capNumbers: true,
168
- }).toBe('9007199254740991');
169
- expectParseStr(numberToString(Number.MAX_SAFE_INTEGER + 1), {
170
- capNumbers: true,
171
- }).toBe('9007199254740991');
172
- expectParseStr('340282346638528900000000000000000000000', {
173
- capNumbers: true,
174
- }).toBe('9007199254740991');
175
- expectParseStr('340282346638528859811704183484516925440', {
176
- capNumbers: true,
177
- }).toBe('9007199254740991');
178
- });
179
-
180
- it(`does not cap numbers at Number.MAX_SAFE_INTEGER when capNumbers=false`, () => {
181
- expectParseStr(numberToString(Number.MAX_SAFE_INTEGER - 1)).toBe(
182
- '9007199254740990',
183
- );
184
- expectParseStr(numberToString(Number.MAX_SAFE_INTEGER)).toBe(
185
- '9007199254740991',
186
- );
187
- expectParseStr(numberToString(Number.MAX_SAFE_INTEGER + 1)).toBe(
188
- '9007199254740992',
189
- );
190
- expectParseStr('340282346638528900000000000000000000000').toBe(
191
- '340282346638528900000000000000000000000',
192
- );
193
- expectParseStr('340282346638528859811704183484516925440').toBe(
194
- '340282346638528900000000000000000000000',
195
- );
196
- });
197
- });
198
-
199
- describe(`when parsing literal strings`, () => {
200
- [
201
- ['(This is a string)'],
202
- ['(Strings may contain newlines\nand such.)'],
203
- [
204
- '(Strings may contain balanced parentheses ( ) and special characters (*!&}^% and so on).)',
205
- ],
206
- ['(The following is an empty string.)'],
207
- ['()'],
208
- ['(It has zero (0) length.)'],
209
- ].forEach(([input]) => {
210
- it(`handles ${input}`, () => {
211
- expectParse(input).toBeInstanceOf(PDFString);
212
- expectParseStr(input).toBe(input);
213
- });
214
- });
215
-
216
- it(`handles whitespace before and after the string`, () => {
217
- expectParse('\0\t\n\f\r (testing)\0\t\n\f\r ').toBeInstanceOf(PDFString);
218
- expectParseStr('\0\t\n\f\r (testing)\0\t\n\f\r ').toBe('(testing)');
219
- });
220
-
221
- it(`handles comments before and after the string`, () => {
222
- expectParse('% Lulz wut?\n(testing)% Lulz wut?\n').toBeInstanceOf(
223
- PDFString,
224
- );
225
- expectParseStr('% Lulz wut?\n(testing)% Lulz wut?\n').toBe('(testing)');
226
- });
227
-
228
- it(`does not stop parsing the string when whitespace is encountered`, () => {
229
- expectParseStr('(foo\0bar)').toBe('(foo\0bar)');
230
- expectParseStr('(foo\tbar)').toBe('(foo\tbar)');
231
- expectParseStr('(foo\nbar)').toBe('(foo\nbar)');
232
- expectParseStr('(foo\fbar)').toBe('(foo\fbar)');
233
- expectParseStr('(foo\rbar)').toBe('(foo\rbar)');
234
- expectParseStr('(foo bar)').toBe('(foo bar)');
235
- });
236
-
237
- it(`does not stop parsing the string when a delimiter is encountered`, () => {
238
- expectParseStr('(foo<bar)').toBe('(foo<bar)');
239
- expectParseStr('(foo>bar)').toBe('(foo>bar)');
240
- expectParseStr('(foo[bar)').toBe('(foo[bar)');
241
- expectParseStr('(foo]bar)').toBe('(foo]bar)');
242
- expectParseStr('(foo{bar)').toBe('(foo{bar)');
243
- expectParseStr('(foo}bar)').toBe('(foo}bar)');
244
- expectParseStr('(foo/bar)').toBe('(foo/bar)');
245
- expectParseStr('(foo%bar)').toBe('(foo%bar)');
246
- });
247
-
248
- it(`handles comments embedded within the string`, () => {
249
- expectParse('(stuff% and things\n)').toBeInstanceOf(PDFString);
250
- expectParseStr('(stuff% and things\n)').toBe('(stuff% and things\n)');
251
- });
252
-
253
- it(`handles nested parenthesis`, () => {
254
- expectParse('(FOO(BAR(QUX)(BAZ)))').toBeInstanceOf(PDFString);
255
- expectParseStr('(FOO(BAR(QUX)(BAZ)))').toBe('(FOO(BAR(QUX)(BAZ)))');
256
- });
257
-
258
- it(`respects escaped parenthesis`, () => {
259
- expectParse('(FOO\\(BAR)').toBeInstanceOf(PDFString);
260
- expectParseStr('(FOO\\(BAR)').toBe('(FOO\\(BAR)');
261
- });
262
-
263
- it(`respects escaped backslashes`, () => {
264
- expect(() => parse('(FOO\\\\(BAR)')).toThrow();
265
- });
266
- });
267
-
268
- describe(`when parsing hex strings`, () => {
269
- [
270
- ['<4E6F762073686D6F7A206B6120706F702E>'],
271
- ['<901FA3>'],
272
- ['<901FA>'],
273
- ['<01\n23\r45\f67\t89\0ab cdefABCDEF>'],
274
- ].forEach(([input]) => {
275
- it(`handles ${input}`, () => {
276
- expectParse(input).toBeInstanceOf(PDFHexString);
277
- expectParseStr(input).toBe(input);
278
- });
279
- });
280
-
281
- it(`handles whitespace before and after the hex string`, () => {
282
- expectParse('\0\t\n\f\r <ABC123>\0\t\n\f\r ').toBeInstanceOf(
283
- PDFHexString,
284
- );
285
- expectParseStr('\0\t\n\f\r <ABC123>\0\t\n\f\r ').toBe('<ABC123>');
286
- });
287
-
288
- it(`handles comments before and after the hex string`, () => {
289
- expectParse('% Lulz wut?\n<ABC123>% Lulz wut?\n').toBeInstanceOf(
290
- PDFHexString,
291
- );
292
- expectParseStr('% Lulz wut?\n<ABC123>% Lulz wut?\n').toBe('<ABC123>');
293
- });
294
-
295
- it(`does not stop parsing the hex string when whitespace is encountered`, () => {
296
- expectParseStr('<ABC\0D>').toBe('<ABC\0D>');
297
- expectParseStr('<ABC\tD>').toBe('<ABC\tD>');
298
- expectParseStr('<ABC\nD>').toBe('<ABC\nD>');
299
- expectParseStr('<ABC\fD>').toBe('<ABC\fD>');
300
- expectParseStr('<ABC\rD>').toBe('<ABC\rD>');
301
- expectParseStr('<ABC D>').toBe('<ABC D>');
302
- });
303
- });
304
-
305
- describe(`when parsing names`, () => {
306
- [
307
- ['/Name1', 'Name1'],
308
- ['/ASomewhatLongerName', 'ASomewhatLongerName'],
309
- [
310
- '/A;Name_With-Various***Characters?',
311
- 'A;Name_With-Various***Characters?',
312
- ],
313
- ['/1.2', '1.2'],
314
- ['/$$', '$$'],
315
- ['/@pattern', '@pattern'],
316
- ['/.notdef', '.notdef'],
317
- ['/lime#20Green', 'lime Green'],
318
- ['/paired#28#29parentheses', 'paired()parentheses'],
319
- ['/The_Key_of_F#23_Minor', 'The_Key_of_F#_Minor'],
320
- ['/A#42', 'AB'],
321
- ].forEach(([input, output]) => {
322
- it(`handles ${input}`, () => {
323
- expectParse(input).toBe(PDFName.of(output));
324
- });
325
- });
326
-
327
- it(`handles names consisting of a single '/'`, () => {
328
- expectParse('/').toBe(PDFName.of(''));
329
- });
330
-
331
- it(`handles whitespace before and after the name`, () => {
332
- expectParse('\0\t\n\f\r /Foo\0\t\n\f\r ').toBe(PDFName.of('Foo'));
333
- });
334
-
335
- it(`handles comments before and after the name`, () => {
336
- expectParse('% Lulz wut?\n/Foo% Lulz wut?\n').toBe(PDFName.of('Foo'));
337
- });
338
-
339
- it(`stops parsing the name when whitespace is encountered`, () => {
340
- expectParse('/Foo\0Bar').toBe(PDFName.of('Foo'));
341
- expectParse('/Foo\tBar').toBe(PDFName.of('Foo'));
342
- expectParse('/Foo\nBar').toBe(PDFName.of('Foo'));
343
- expectParse('/Foo\fBar').toBe(PDFName.of('Foo'));
344
- expectParse('/Foo\rBar').toBe(PDFName.of('Foo'));
345
- expectParse('/Foo Bar').toBe(PDFName.of('Foo'));
346
- });
347
-
348
- it(`stops parsing the name when a delimiter is encountered`, () => {
349
- expectParse('/Foo(Bar').toBe(PDFName.of('Foo'));
350
- expectParse('/Foo)Bar').toBe(PDFName.of('Foo'));
351
- expectParse('/Foo<Bar').toBe(PDFName.of('Foo'));
352
- expectParse('/Foo>Bar').toBe(PDFName.of('Foo'));
353
- expectParse('/Foo[Bar').toBe(PDFName.of('Foo'));
354
- expectParse('/Foo]Bar').toBe(PDFName.of('Foo'));
355
- expectParse('/Foo{Bar').toBe(PDFName.of('Foo'));
356
- expectParse('/Foo}Bar').toBe(PDFName.of('Foo'));
357
- expectParse('/Foo/Bar').toBe(PDFName.of('Foo'));
358
- expectParse('/Foo%Bar').toBe(PDFName.of('Foo'));
359
- });
360
-
361
- it(`can parse several names mashed together`, () => {
362
- const input = typedArrayFor('/Foo/Bar/Qux//Baz/Bing/Bang');
363
- const context = PDFContext.create();
364
- const parser = PDFObjectParser.forBytes(input, context);
365
- expect(parser.parseObject()).toBe(PDFName.of('Foo'));
366
- expect(parser.parseObject()).toBe(PDFName.of('Bar'));
367
- expect(parser.parseObject()).toBe(PDFName.of('Qux'));
368
- expect(parser.parseObject()).toBe(PDFName.of(''));
369
- expect(parser.parseObject()).toBe(PDFName.of('Baz'));
370
- expect(parser.parseObject()).toBe(PDFName.of('Bing'));
371
- expect(parser.parseObject()).toBe(PDFName.of('Bang'));
372
- });
373
-
374
- it(`handles names containing non-ASCII characters`, () => {
375
- expectParse('/ABCDEE+»ªÎÄÖÐËÎ').toBe(PDFName.of('ABCDEE+»ªÎÄÖÐËÎ'));
376
- });
377
- });
378
-
379
- describe(`when parsing arrays`, () => {
380
- it(`handles empty arrays`, () => {
381
- expectParse('[]').toBeInstanceOf(PDFArray);
382
- expectParseStr('[]').toBe('[ ]');
383
- });
384
-
385
- it(`handles empty arrays with whitespace between braces`, () => {
386
- expectParse('[\0\t\n\f\r ]').toBeInstanceOf(PDFArray);
387
- expectParseStr('[\0\t\n\f\r ]').toBe('[ ]');
388
- });
389
-
390
- it(`handles arrays of all value types seperated by whitespace and (multiple) comments`, () => {
391
- const input = `% Comment
392
- \0\t\n\f\r % Comment
393
- [
394
- \0\t\n\f\r % Comment
395
- /Foo % Comment
396
- \0\t\n\f\r % Comment
397
- << /Key /Val >> % Comment
398
- \0\t\n\f\r % Comment
399
- [] % Comment
400
- \0\t\n\f\r % Comment
401
- (Bar) % Comment
402
- \0\t\n\f\r % Comment
403
- 21 0 R % Comment
404
- \0\t\n\f\r % Comment
405
- 0.56 % Comment
406
- \0\t\n\f\r % Comment
407
- <ABC123> % Comment
408
- \0\t\n\f\r % Comment
409
- true % Comment
410
- \0\t\n\f\r % Comment
411
- null % Comment
412
- \0\t\n\f\r % Comment
413
- ]% Comment
414
- \0\t\n\f\r % Comment`;
415
- const object = parse(input);
416
- expect(object).toBeInstanceOf(PDFArray);
417
-
418
- const array = object as PDFArray;
419
- expect(array.size()).toBe(9);
420
- expect(array.get(0)).toBe(PDFName.of('Foo'));
421
- expect(array.get(1)).toBeInstanceOf(PDFDict);
422
- expect(array.get(2)).toBeInstanceOf(PDFArray);
423
- expect(array.get(3)).toBeInstanceOf(PDFString);
424
- expect(array.get(4)).toBe(PDFRef.of(21));
425
- expect(array.get(5)).toBeInstanceOf(PDFNumber);
426
- expect(array.get(6)).toBeInstanceOf(PDFHexString);
427
- expect(array.get(7)).toBe(PDFBool.True);
428
- expect(array.get(8)).toBe(PDFNull);
429
- });
430
-
431
- it(`handles arrays with no whitespace or comments`, () => {
432
- expectParse('[true/FooBar[]<</Foo/Bar>>21.null]').toBeInstanceOf(
433
- PDFArray,
434
- );
435
- expectParseStr('[true/FooBar[]<</Foo/Bar>>21.null]').toBe(
436
- '[ true /FooBar [ ] <<\n/Foo /Bar\n>> 21 null ]',
437
- );
438
- });
439
-
440
- it(`throws an error when closing delimiter is missing`, () => {
441
- expect(() => parse('[/Foo')).toThrow();
442
- });
443
-
444
- it(`throws an error for mismatches delimiters`, () => {
445
- expect(() => parse('[[]')).toThrow();
446
- });
447
-
448
- it(`throws an error when an invalid element is detected`, () => {
449
- expect(() => parse('[/Foo I_AM_INVALID]')).toThrow();
450
- });
451
- });
452
-
453
- describe(`when parsing dictionaries`, () => {
454
- it(`handles empty dictionaries`, () => {
455
- expectParse('<<>>').toBeInstanceOf(PDFDict);
456
- expectParseStr('<<>>').toBe('<<\n>>');
457
- });
458
-
459
- it(`handles empty dictionaries with whitespace between brackets`, () => {
460
- expectParse('<<\0\t\n\f\r >>').toBeInstanceOf(PDFDict);
461
- expectParseStr('<<\0\t\n\f\r >>').toBe('<<\n>>');
462
- });
463
-
464
- it(`handles dictionaries of all value types seperated by whitespace and (multiplecomments`, () => {
465
- const input = `% Comment
466
- \0\t\n\f\r % Comment
467
- <<
468
- % Entry 1
469
- /PDFName % Key
470
- /Foo % Value
471
-
472
- % Entry 2
473
- /PDFDictionary % Key
474
- << /Key /Val >> % Value
475
-
476
- % Entry 3
477
- /PDFArray % Key
478
- [1 (2)] % Value
479
-
480
- % Entry 4
481
- /PDFString % Key
482
- (Look, a string!) % Value
483
-
484
- % Entry 5
485
- /PDFRef % Key
486
- 21 0 R % Value
487
-
488
- % Entry 6
489
- /PDFNumber % Key
490
- -.123 % Value
491
-
492
- % Entry 7
493
- /PDFHexString % Key
494
- <ABC123> % Value
495
-
496
- % Entry 8
497
- /PDFBool % Key
498
- true % Value
499
-
500
- % Entry 9
501
- /PDFNull % Key
502
- null % Value
503
-
504
- % End
505
- >>% Comment
506
- \0\t\n\f\r % Comment
507
- `;
508
- const object = parse(input);
509
- expect(object).toBeInstanceOf(PDFDict);
510
-
511
- const dict = object as PDFDict;
512
- expect(dict.entries().length).toBe(9);
513
- expect(dict.get(PDFName.of('PDFName'))).toBe(PDFName.of('Foo'));
514
- expect(dict.get(PDFName.of('PDFDictionary'))).toBeInstanceOf(PDFDict);
515
- expect(dict.get(PDFName.of('PDFArray'))).toBeInstanceOf(PDFArray);
516
- expect(dict.get(PDFName.of('PDFString'))).toBeInstanceOf(PDFString);
517
- expect(dict.get(PDFName.of('PDFRef'))).toBe(PDFRef.of(21));
518
- expect(dict.get(PDFName.of('PDFNumber'))).toBeInstanceOf(PDFNumber);
519
- expect(dict.get(PDFName.of('PDFHexString'))).toBeInstanceOf(PDFHexString);
520
- expect(dict.get(PDFName.of('PDFBool'))).toBe(PDFBool.True);
521
- expect(dict.get(PDFName.of('PDFNull'))).toBe(undefined);
522
- });
523
-
524
- it(`handles dictionaries with no whitespace or comments`, () => {
525
- expectParse(
526
- '<</Foo true/Bar[]/Qux<<>>/Baz 21./Bing null>>',
527
- ).toBeInstanceOf(PDFDict);
528
- expectParseStr('<</Foo true/Bar[]/Qux<<>>/Baz 21./Bing null>>').toBe(
529
- '<<\n/Foo true\n/Bar [ ]\n/Qux <<\n>>\n/Baz 21\n/Bing null\n>>',
530
- );
531
- });
532
-
533
- it(`returns the correct subclass based on the dictionary's 'Type'`, () => {
534
- expectParse('<< >>').toBeInstanceOf(PDFDict);
535
- expectParse('<< /Type /Catalog >>').toBeInstanceOf(PDFCatalog);
536
- expectParse('<< /Type /Pages >>').toBeInstanceOf(PDFPageTree);
537
- expectParse('<< /Type /Page >>').toBeInstanceOf(PDFPageLeaf);
538
- });
539
-
540
- it(`throws an error when closing delimiter is missing`, () => {
541
- expect(() => parse('<</Foo/Bar')).toThrow();
542
- });
543
-
544
- it(`throws an error for mismatched delimiters`, () => {
545
- expect(() => parse('<<>')).toThrow();
546
- });
547
-
548
- it(`throws an error when an invalid key is detected`, () => {
549
- expect(() => parse('<</Foo/Bar I_AM_INVALID>>')).toThrow();
550
- });
551
-
552
- it(`throws an error when an invalid value is detected`, () => {
553
- expect(() => parse('<</Foo I_AM_INVALID>>')).toThrow();
554
- });
555
- });
556
-
557
- describe(`when parsing streams`, () => {
558
- [
559
- [
560
- '<< >>\nstream\nstream foobar endstream\nendstream',
561
- '<<\n/Length 23\n>>\nstream\nstream foobar endstream\nendstream',
562
- ],
563
- [
564
- '<</Length 2>>\r\nstream\r\nquxbaz\r\nendstream',
565
- '<<\n/Length 6\n>>\nstream\nquxbaz\nendstream',
566
- ],
567
- [
568
- '<<>>streamfoobarendstream',
569
- '<<\n/Length 6\n>>\nstream\nfoobar\nendstream',
570
- ],
571
- [
572
- '<<>>\rstream\rstuff\rendstream',
573
- '<<\n/Length 5\n>>\nstream\nstuff\nendstream',
574
- ],
575
- [
576
- '<<>>\n\rstream\n\rthingz\n\rendstream',
577
- '<<\n/Length 8\n>>\nstream\n\rthingz\n\nendstream',
578
- ],
579
- ].forEach(([input, output]) => {
580
- it(`can parse ${JSON.stringify(input)}`, () => {
581
- const object = parse(typedArrayFor(input));
582
- expect(object).toBeInstanceOf(PDFRawStream);
583
-
584
- const buffer = new Uint8Array(object.sizeInBytes());
585
- object.copyBytesInto(buffer, 0);
586
- expect(buffer).toEqual(typedArrayFor(output));
587
- });
588
- });
589
-
590
- // Note that the ' \r\n' sequence following the 'stream' keyword is
591
- // technically invalid (per the specification). But some PDFs have it, so
592
- // we will support it anyways.
593
- it(`handles streams with a space, carriage return, and a newline following the 'stream' keyword`, () => {
594
- expectParse(`<<>>\r\nstream \r\n Stuff and Things \nendstream`);
595
- expectParseStr(`<<>>\r\nstream \r\n Stuff and Things \nendstream`).toBe(
596
- '<<\n/Length 18\n>>\nstream\n Stuff and Things \nendstream',
597
- );
598
- });
599
-
600
- it(`handles streams with a carriage return and a newline following the 'stream' keyword`, () => {
601
- expectParse(`<<>>\r\nstream\r\n Stuff and Things \nendstream`);
602
- expectParseStr(`<<>>\r\nstream\r\n Stuff and Things \nendstream`).toBe(
603
- '<<\n/Length 18\n>>\nstream\n Stuff and Things \nendstream',
604
- );
605
- });
606
-
607
- it(`handles streams with only a carriage return following the 'stream' keyword`, () => {
608
- expectParse(`<<>>\rstream\r Stuff and Things \nendstream`);
609
- expectParseStr(`<<>>\nstream\n Stuff and Things \nendstream`).toBe(
610
- '<<\n/Length 18\n>>\nstream\n Stuff and Things \nendstream',
611
- );
612
- });
613
-
614
- it(`handles streams with a carriage return preceding the 'endstream' keyword`, () => {
615
- expectParse(`<<>>\r\nstream\r\n Stuff and Things \rendstream`);
616
- expectParseStr(`<<>>\r\nstream\r\n Stuff and Things \rendstream`).toBe(
617
- '<<\n/Length 18\n>>\nstream\n Stuff and Things \nendstream',
618
- );
619
- });
620
-
621
- it(`handles comments and whitespace preceding the 'stream' keyword`, () => {
622
- expectParse(
623
- `<<>>\0\t\n\f\r % I am a comment\0\t\n\f\r stream\r\n Stuff and Things \nendstream`,
624
- );
625
- expectParseStr(
626
- `<<>>\0\t\n\f\r % I am a comment\0\t\n\f\r stream\r\n Stuff and Things \nendstream`,
627
- ).toBe('<<\n/Length 18\n>>\nstream\n Stuff and Things \nendstream');
628
- });
629
-
630
- it(`handles binary stream content`, () => {
631
- const input = mergeIntoTypedArray(
632
- '<<>>stream',
633
- new Uint8Array([12, 492, 0, 129]),
634
- 'endstream',
635
- );
636
- const output = mergeIntoTypedArray(
637
- '<<\n/Length 4\n>>\nstream\n',
638
- new Uint8Array([12, 492, 0, 129]),
639
- '\nendstream',
640
- );
641
-
642
- const object = parse(typedArrayFor(input));
643
- expect(object).toBeInstanceOf(PDFRawStream);
644
-
645
- const buffer = new Uint8Array(object.sizeInBytes());
646
- object.copyBytesInto(buffer, 0);
647
- expect(buffer).toEqual(typedArrayFor(output));
648
- });
649
- });
650
-
651
- describe(`when parsing null`, () => {
652
- it(`handles just the 'null' keyword`, () => {
653
- expectParse('null').toBe(PDFNull);
654
- });
655
-
656
- it(`handles whitespace before and after the 'null' keyword`, () => {
657
- expectParse('\0\t\n\f\r null\0\t\n\f\r ').toBe(PDFNull);
658
- });
659
-
660
- it(`handles comments before and after the 'null' keyword`, () => {
661
- expectParse('% Lulz wut?\nnull% Lulz wut?\n').toBe(PDFNull);
662
- });
663
- });
664
-
665
- describe(`when parsing indirect object references`, () => {
666
- it(`handles whitespace before and after the ref`, () => {
667
- expectParse('\0\t\n\f\r 1 2 R\0\t\n\f\r ').toBe(PDFRef.of(1, 2));
668
- });
669
-
670
- it(`handles whitespace within the ref`, () => {
671
- expectParse('1\0\t\n\f\r2\0\t\n\f\rR').toBe(PDFRef.of(1, 2));
672
- });
673
-
674
- it(`handles comments before and after the ref`, () => {
675
- expectParse('% Lulz wut?\n1 2 R% Lulz wut?\n').toBe(PDFRef.of(1, 2));
676
- });
677
-
678
- it(`handles comments within the ref`, () => {
679
- expectParse('1% Lulz wut?\r2% Lulz wut?\rR').toBe(PDFRef.of(1, 2));
680
- });
681
-
682
- it(`does not stop parsing the ref when whitespace is encountered`, () => {
683
- expectParse('1\0' + '2\0R').toBe(PDFRef.of(1, 2));
684
- expectParse('1\t2\tR').toBe(PDFRef.of(1, 2));
685
- expectParse('1\n2\nR').toBe(PDFRef.of(1, 2));
686
- expectParse('1\f2\fR').toBe(PDFRef.of(1, 2));
687
- expectParse('1\r2\rR').toBe(PDFRef.of(1, 2));
688
- expectParse('1 2 R').toBe(PDFRef.of(1, 2));
689
- });
690
-
691
- it(`stops parsing the ref when a delimiter is encountered`, () => {
692
- expectParseStr('1 2(R').toBe('1');
693
- expectParseStr('1 2)R').toBe('1');
694
- expectParseStr('1 2<R').toBe('1');
695
- expectParseStr('1 2>R').toBe('1');
696
- expectParseStr('1 2[R').toBe('1');
697
- expectParseStr('1 2]R').toBe('1');
698
- expectParseStr('1 2{R').toBe('1');
699
- expectParseStr('1 2}R').toBe('1');
700
- expectParseStr('1 2/R').toBe('1');
701
- expectParseStr('1 2%R').toBe('1');
702
- });
703
-
704
- it(`can parse several refs mashed together`, () => {
705
- const input = typedArrayFor('0 0R1 1R 2 2R');
706
- const context = PDFContext.create();
707
- const parser = PDFObjectParser.forBytes(input, context);
708
- expect(parser.parseObject()).toBe(PDFRef.of(0, 0));
709
- expect(parser.parseObject()).toBe(PDFRef.of(1, 1));
710
- expect(parser.parseObject()).toBe(PDFRef.of(2, 2));
711
- });
712
-
713
- it(`can parse a number, then a ref, then a number`, () => {
714
- const input = typedArrayFor('0 21 0 R 42');
715
- const context = PDFContext.create();
716
- const parser = PDFObjectParser.forBytes(input, context);
717
-
718
- const object1 = parser.parseObject();
719
- expect(object1).toBeInstanceOf(PDFNumber);
720
- expect(object1.toString()).toBe('0');
721
-
722
- const object2 = parser.parseObject();
723
- expect(object2).toBe(PDFRef.of(21));
724
-
725
- const object3 = parser.parseObject();
726
- expect(object3).toBeInstanceOf(PDFNumber);
727
- expect(object3.toString()).toBe('42');
728
- });
729
- });
730
- });