@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,370 +0,0 @@
1
- import fs from 'fs';
2
- import {
3
- PDFDocument,
4
- PDFTextField,
5
- PDFCheckBox,
6
- PDFButton,
7
- PDFRadioGroup,
8
- PDFOptionList,
9
- PDFDropdown,
10
- PDFWidgetAnnotation,
11
- PDFDict,
12
- PDFName,
13
- PDFForm,
14
- PDFAcroForm,
15
- PDFRef,
16
- } from '../../../src/index';
17
-
18
- const getWidgets = (pdfDoc: PDFDocument) =>
19
- pdfDoc.context
20
- .enumerateIndirectObjects()
21
- .map(([, obj]) => obj)
22
- .filter(
23
- (obj) =>
24
- obj instanceof PDFDict &&
25
- obj.get(PDFName.of('Type')) === PDFName.of('Annot') &&
26
- obj.get(PDFName.of('Subtype')) === PDFName.of('Widget'),
27
- )
28
- .map((obj) => obj as PDFDict);
29
-
30
- const getRefs = (pdfDoc: PDFDocument) =>
31
- pdfDoc.context.enumerateIndirectObjects().map(([ref]) => ref as PDFRef);
32
-
33
- const getApRefs = (widget: PDFWidgetAnnotation) => {
34
- const onValue = widget.getOnValue() ?? PDFName.of('Yes');
35
- const aps = widget.getAppearances();
36
- return [
37
- (aps?.normal as PDFDict).get(onValue),
38
- (aps?.rollover as PDFDict | undefined)?.get(onValue),
39
- (aps?.down as PDFDict | undefined)?.get(onValue),
40
- (aps?.normal as PDFDict).get(PDFName.of('Off')),
41
- (aps?.rollover as PDFDict | undefined)?.get(PDFName.of('Off')),
42
- (aps?.down as PDFDict | undefined)?.get(PDFName.of('Off')),
43
- ].filter(Boolean);
44
- };
45
-
46
- const flatten = <T>(arr: T[][]): T[] =>
47
- arr.reduce((curr, acc) => [...acc, ...curr], []);
48
-
49
- const fancyFieldsPdfBytes = fs.readFileSync('assets/pdfs/fancy_fields.pdf');
50
- // const sampleFormPdfBytes = fs.readFileSync('assets/pdfs/sample_form.pdf');
51
- // const combedPdfBytes = fs.readFileSync('assets/pdfs/with_combed_fields.pdf');
52
- // const dodPdfBytes = fs.readFileSync('assets/pdfs/dod_character.pdf');
53
- const xfaPdfBytes = fs.readFileSync('assets/pdfs/with_xfa_fields.pdf');
54
- const signaturePdfBytes = fs.readFileSync('assets/pdfs/with_signature.pdf');
55
-
56
- describe(`PDFForm`, () => {
57
- const origConsoleWarn = console.warn;
58
-
59
- beforeAll(() => {
60
- const ignoredWarnings = [
61
- 'Removing XFA form data as pdf-lib does not support reading or writing XFA',
62
- ];
63
- console.warn = vi.fn((...args) => {
64
- const isIgnored = ignoredWarnings.find((iw) => args[0].includes(iw));
65
- if (!isIgnored) origConsoleWarn(...args);
66
- });
67
- });
68
-
69
- beforeEach(() => {
70
- vi.clearAllMocks();
71
- });
72
-
73
- afterAll(() => {
74
- console.warn = origConsoleWarn;
75
- });
76
-
77
- // prettier-ignore
78
- it(`provides access to all terminal fields in an AcroForm`, async () => {
79
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
80
- const form = pdfDoc.getForm();
81
- const fields = form.getFields();
82
-
83
- expect(fields.length).toBe(15);
84
-
85
- expect(form.getField('Prefix ⚽️')).toBeInstanceOf(PDFTextField);
86
- expect(form.getField('First Name 🚀')).toBeInstanceOf(PDFTextField);
87
- expect(form.getField('MiddleInitial 🎳')).toBeInstanceOf(PDFTextField);
88
- expect(form.getField('LastName 🛩')).toBeInstanceOf(PDFTextField);
89
- expect(form.getField('Are You A Fairy? 🌿')).toBeInstanceOf(PDFCheckBox);
90
- expect(form.getField('Is Your Power Level Over 9000? 💪')).toBeInstanceOf(PDFCheckBox);
91
- expect(form.getField('Can You Defeat Enemies In One Punch? 👊')).toBeInstanceOf(PDFCheckBox);
92
- expect(form.getField('Will You Ever Let Me Down? ☕️')).toBeInstanceOf(PDFCheckBox);
93
- expect(form.getField('Eject 📼')).toBeInstanceOf(PDFButton);
94
- expect(form.getField('Submit 📝')).toBeInstanceOf(PDFButton);
95
- expect(form.getField('Play ▶️')).toBeInstanceOf(PDFButton);
96
- expect(form.getField('Launch 🚀')).toBeInstanceOf(PDFButton);
97
- expect(form.getField('Historical Figures 🐺')).toBeInstanceOf(PDFRadioGroup);
98
- expect(form.getField('Which Are Planets? 🌎')).toBeInstanceOf(PDFOptionList);
99
- expect(form.getField('Choose A Gundam 🤖')).toBeInstanceOf(PDFDropdown);
100
-
101
- const fieldDicts = fields.map(f => f.acroField.dict);
102
- const getFieldDict = (name: string) => form.getField(name)?.acroField.dict;
103
-
104
- expect(fieldDicts).toContain(getFieldDict('Prefix ⚽️'));
105
- expect(fieldDicts).toContain(getFieldDict('First Name 🚀'));
106
- expect(fieldDicts).toContain(getFieldDict('MiddleInitial 🎳'));
107
- expect(fieldDicts).toContain(getFieldDict('LastName 🛩'));
108
- expect(fieldDicts).toContain(getFieldDict('Are You A Fairy? 🌿'));
109
- expect(fieldDicts).toContain(getFieldDict('Is Your Power Level Over 9000? 💪'));
110
- expect(fieldDicts).toContain(getFieldDict('Can You Defeat Enemies In One Punch? 👊'));
111
- expect(fieldDicts).toContain(getFieldDict('Will You Ever Let Me Down? ☕️'));
112
- expect(fieldDicts).toContain(getFieldDict('Eject 📼'));
113
- expect(fieldDicts).toContain(getFieldDict('Submit 📝'));
114
- expect(fieldDicts).toContain(getFieldDict('Play ▶️'));
115
- expect(fieldDicts).toContain(getFieldDict('Launch 🚀'));
116
- expect(fieldDicts).toContain(getFieldDict('Historical Figures 🐺'));
117
- expect(fieldDicts).toContain(getFieldDict('Which Are Planets? 🌎'));
118
- expect(fieldDicts).toContain(getFieldDict('Choose A Gundam 🤖'));
119
- });
120
-
121
- // Need to also run this test with assets/pdfs/with_xfa_fields.pdf as it has "partial/50%" APs for checkboxes (is only missing the /Off APs)
122
- it(`does not override existing appearance streams for check boxes and radio groups if they already exist`, async () => {
123
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
124
- const form = pdfDoc.getForm();
125
-
126
- // Get fields
127
- const cb1 = form.getCheckBox('Are You A Fairy? 🌿');
128
- const cb2 = form.getCheckBox('Is Your Power Level Over 9000? 💪');
129
- const cb3 = form.getCheckBox('Can You Defeat Enemies In One Punch? 👊');
130
- const cb4 = form.getCheckBox('Will You Ever Let Me Down? ☕️');
131
- const rg1 = form.getRadioGroup('Historical Figures 🐺');
132
-
133
- // Assert preconditions
134
- expect(cb1.isChecked()).toBe(true);
135
- expect(cb2.isChecked()).toBe(false);
136
- expect(cb3.isChecked()).toBe(true);
137
- expect(cb4.isChecked()).toBe(false);
138
- expect(rg1.getSelected()).toEqual('Marcus Aurelius 🏛️');
139
-
140
- // Collect all existing appearance streams
141
- const fields = [cb1, cb2, cb3, cb4, rg1];
142
- const widgets = flatten(fields.map((f) => f.acroField.getWidgets()));
143
- const originalAps = flatten(widgets.map(getApRefs));
144
-
145
- // (1) Run appearance update
146
- form.updateFieldAppearances();
147
-
148
- // (1) Make sure no new appearance streams were created
149
- expect(flatten(widgets.map(getApRefs))).toEqual(originalAps);
150
-
151
- // (2) Flip check box values
152
- cb1.uncheck();
153
- cb2.check();
154
- cb3.uncheck();
155
- cb4.check();
156
-
157
- // (2) un appearance update
158
- form.updateFieldAppearances();
159
-
160
- // (2) Make sure no new appearance streams were created
161
- expect(flatten(widgets.map(getApRefs))).toEqual(originalAps);
162
-
163
- // (3) Change radio group value
164
- rg1.select('Alexander Hamilton 🇺🇸');
165
-
166
- // (3) Run appearance update
167
- form.updateFieldAppearances();
168
-
169
- // (3) Make sure no new appearance streams were created
170
- expect(flatten(widgets.map(getApRefs))).toEqual(originalAps);
171
- });
172
-
173
- it(`creates appearance streams for widgets that do not have any`, async () => {
174
- const pdfDoc = await PDFDocument.create();
175
-
176
- const page = pdfDoc.addPage();
177
-
178
- const form = pdfDoc.getForm();
179
-
180
- const btn = form.createButton('a.button.field');
181
- const cb = form.createCheckBox('a.checkbox.field');
182
- const dd = form.createDropdown('a.dropdown.field');
183
- const ol = form.createOptionList('a.optionlist.field');
184
- const tf = form.createTextField('a.text.field');
185
-
186
- // Skipping Radio Groups for this test as they _must_ have APs or else the
187
- // value represented by each radio button is undefined.
188
- // const rg = form.createRadioGroup('a.radiogroup.field');
189
-
190
- btn.addToPage('foo', page);
191
- cb.addToPage(page);
192
- dd.addToPage(page);
193
- ol.addToPage(page);
194
- tf.addToPage(page);
195
- // rg.addOptionToPage('bar', page);
196
-
197
- const widgets = getWidgets(pdfDoc);
198
-
199
- expect(widgets.length).toBe(5);
200
-
201
- const aps = () => widgets.filter((w) => w.has(PDFName.of('AP'))).length;
202
-
203
- expect(aps()).toBe(5);
204
-
205
- widgets.forEach((w) => w.delete(PDFName.of('AP')));
206
-
207
- expect(aps()).toBe(0);
208
-
209
- form.updateFieldAppearances();
210
-
211
- expect(aps()).toBe(5);
212
- });
213
-
214
- it(`removes XFA entries when it is accessed`, async () => {
215
- const pdfDoc = await PDFDocument.load(xfaPdfBytes);
216
- const acroForm = pdfDoc.catalog.getOrCreateAcroForm();
217
- expect(acroForm.dict.has(PDFName.of('XFA'))).toBe(true);
218
- expect(pdfDoc.getForm()).toBeInstanceOf(PDFForm);
219
- expect(acroForm.dict.has(PDFName.of('XFA'))).toBe(false);
220
- });
221
-
222
- it(`is only created if it is accessed`, async () => {
223
- const pdfDoc = await PDFDocument.create();
224
- expect(pdfDoc.catalog.getAcroForm()).toBe(undefined);
225
- expect(pdfDoc.getForm()).toBeInstanceOf(PDFForm);
226
- expect(pdfDoc.catalog.getAcroForm()).toBeInstanceOf(PDFAcroForm);
227
- });
228
-
229
- it(`does not update appearance streams if "updateFieldAppearances" is true, but no fields are dirty`, async () => {
230
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
231
-
232
- const widgets = getWidgets(pdfDoc);
233
- expect(widgets.length).toBe(24);
234
-
235
- const aps = () => widgets.filter((w) => w.has(PDFName.of('AP'))).length;
236
- expect(aps()).toBe(24);
237
-
238
- widgets.forEach((w) => w.delete(PDFName.of('AP')));
239
- expect(aps()).toBe(0);
240
-
241
- await pdfDoc.save({ updateFieldAppearances: true });
242
- expect(aps()).toBe(0);
243
- });
244
-
245
- it(`does not update appearance streams if "updateFieldAppearances" is false, even if fields are dirty`, async () => {
246
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
247
-
248
- const widgets = getWidgets(pdfDoc);
249
- expect(widgets.length).toBe(24);
250
-
251
- const aps = () => widgets.filter((w) => w.has(PDFName.of('AP'))).length;
252
- expect(aps()).toBe(24);
253
-
254
- widgets.forEach((w) => w.delete(PDFName.of('AP')));
255
- expect(aps()).toBe(0);
256
-
257
- const form = pdfDoc.getForm();
258
- form.getFields().forEach((f) => form.markFieldAsDirty(f.ref));
259
-
260
- await pdfDoc.save({ updateFieldAppearances: false });
261
- expect(aps()).toBe(0);
262
- });
263
-
264
- it(`does update appearance streams if "updateFieldAppearances" is true, and fields are dirty`, async () => {
265
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
266
-
267
- const widgets = getWidgets(pdfDoc);
268
- expect(widgets.length).toBe(24);
269
-
270
- const aps = () => widgets.filter((w) => w.has(PDFName.of('AP'))).length;
271
- expect(aps()).toBe(24);
272
-
273
- widgets.forEach((w) => w.delete(PDFName.of('AP')));
274
- expect(aps()).toBe(0);
275
-
276
- const form = pdfDoc.getForm();
277
- form.getFields().forEach((f) => form.markFieldAsDirty(f.ref));
278
-
279
- await pdfDoc.save({ updateFieldAppearances: true });
280
- expect(aps()).toBe(20);
281
- });
282
-
283
- it(`does not throw errors for PDFSignature fields`, async () => {
284
- const pdfDoc = await PDFDocument.load(signaturePdfBytes);
285
-
286
- const widgets = getWidgets(pdfDoc);
287
- expect(widgets.length).toBe(1);
288
-
289
- const form = pdfDoc.getForm();
290
-
291
- expect(() => form.updateFieldAppearances()).not.toThrow();
292
-
293
- expect(
294
- pdfDoc.save({ updateFieldAppearances: true }),
295
- ).resolves.toBeInstanceOf(Uint8Array);
296
- });
297
-
298
- it(`it cleans references of removed fields and their widgets`, async () => {
299
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
300
- const form = pdfDoc.getForm();
301
-
302
- const refs1 = getRefs(pdfDoc);
303
-
304
- const cb = form.getCheckBox('Will You Ever Let Me Down? ☕️');
305
- const rg = form.getRadioGroup('Historical Figures 🐺');
306
-
307
- const cbWidgetRefs = cb.acroField.normalizedEntries().Kids.asArray();
308
- const rgWidgetRefs = cb.acroField.normalizedEntries().Kids.asArray();
309
-
310
- expect(cbWidgetRefs.length).toBeGreaterThan(0);
311
- expect(rgWidgetRefs.length).toBeGreaterThan(0);
312
-
313
- // Assert that refs are present before their fields have been removed
314
- expect(refs1.includes(cb.ref)).toBe(true);
315
- expect(refs1.includes(rg.ref)).toBe(true);
316
- cbWidgetRefs.forEach((ref) => expect(refs1).toContain(ref));
317
- rgWidgetRefs.forEach((ref) => expect(refs1).toContain(ref));
318
-
319
- form.removeField(cb);
320
- form.removeField(rg);
321
-
322
- const refs2 = getRefs(pdfDoc);
323
-
324
- // Assert that refs are not present after their fields have been removed
325
- expect(refs2.includes(cb.ref)).toBe(false);
326
- expect(refs2.includes(rg.ref)).toBe(false);
327
- cbWidgetRefs.forEach((ref) => expect(refs2).not.toContain(ref));
328
- rgWidgetRefs.forEach((ref) => expect(refs2).not.toContain(ref));
329
- });
330
-
331
- it(`it cleans references of removed fields and their widgets when created with pdf-lib`, async () => {
332
- const pdfDoc = await PDFDocument.create();
333
- const page = pdfDoc.addPage();
334
- const form = pdfDoc.getForm();
335
-
336
- const cb = form.createCheckBox('a.new.check.box');
337
- const tf = form.createTextField('a.new.text.field');
338
-
339
- cb.addToPage(page);
340
- tf.addToPage(page);
341
-
342
- const refs1 = getRefs(pdfDoc);
343
-
344
- const cbWidgetRefs = cb.acroField.normalizedEntries().Kids.asArray();
345
- const tfWidgetRefs = cb.acroField.normalizedEntries().Kids.asArray();
346
-
347
- expect(cbWidgetRefs.length).toBeGreaterThan(0);
348
- expect(tfWidgetRefs.length).toBeGreaterThan(0);
349
-
350
- // Assert that refs are present before their fields have been removed
351
- expect(refs1.includes(cb.ref)).toBe(true);
352
- expect(refs1.includes(tf.ref)).toBe(true);
353
- cbWidgetRefs.forEach((ref) => expect(refs1).toContain(ref));
354
- tfWidgetRefs.forEach((ref) => expect(refs1).toContain(ref));
355
-
356
- form.removeField(cb);
357
- form.removeField(tf);
358
-
359
- const refs2 = getRefs(pdfDoc);
360
-
361
- // Assert that refs are not present after their fields have been removed
362
- expect(refs2.includes(cb.ref)).toBe(false);
363
- expect(refs2.includes(tf.ref)).toBe(false);
364
- cbWidgetRefs.forEach((ref) => expect(refs2).not.toContain(ref));
365
- tfWidgetRefs.forEach((ref) => expect(refs2).not.toContain(ref));
366
- });
367
-
368
- // TODO: Add method to remove APs and use `NeedsAppearances`? How would this
369
- // work with RadioGroups? Just set the APs to `null`but keep the keys?
370
- });
@@ -1,104 +0,0 @@
1
- import fs from 'fs';
2
- import { PDFDocument, AnnotationFlags } from '../../../src/index';
3
-
4
- const fancyFieldsPdfBytes = fs.readFileSync('assets/pdfs/fancy_fields.pdf');
5
-
6
- describe(`PDFOptionList`, () => {
7
- it(`can read its options`, async () => {
8
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
9
- const form = pdfDoc.getForm();
10
- const planets = form.getOptionList('Which Are Planets? 🌎');
11
- expect(planets.getOptions()).toEqual(['Earth', 'Mars', 'Pluto', 'Neptune']);
12
- });
13
-
14
- it(`can read its selected value`, async () => {
15
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
16
- const form = pdfDoc.getForm();
17
- const planets = form.getOptionList('Which Are Planets? 🌎');
18
- expect(planets.getSelected()).toEqual(['Mars']);
19
- });
20
-
21
- it(`can clear its value`, async () => {
22
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
23
- const form = pdfDoc.getForm();
24
- const planets = form.getOptionList('Which Are Planets? 🌎');
25
- planets.clear();
26
- expect(planets.getSelected()).toEqual([]);
27
- });
28
-
29
- it(`can select a single value`, async () => {
30
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
31
- const form = pdfDoc.getForm();
32
- const planets = form.getOptionList('Which Are Planets? 🌎');
33
- planets.select('Neptune');
34
- expect(planets.getSelected()).toEqual(['Neptune']);
35
- });
36
-
37
- it(`can select multiple values`, async () => {
38
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
39
- const form = pdfDoc.getForm();
40
- const planets = form.getOptionList('Which Are Planets? 🌎');
41
- planets.select(['Pluto', 'Neptune']);
42
- expect(planets.getSelected()).toEqual(['Pluto', 'Neptune']);
43
- });
44
-
45
- it(`can't select a value not in the options list`, async () => {
46
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
47
- const form = pdfDoc.getForm();
48
- const planets = form.getOptionList('Which Are Planets? 🌎');
49
- expect(() => planets.select('One Punch Man')).toThrow();
50
- });
51
-
52
- it(`can merge options when selecting`, async () => {
53
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
54
- const form = pdfDoc.getForm();
55
- const planets = form.getOptionList('Which Are Planets? 🌎');
56
- planets.select(['Pluto'], true);
57
- expect(planets.getSelected()).toEqual(['Mars', 'Pluto']);
58
- });
59
-
60
- it(`can read its flag states`, async () => {
61
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
62
- const form = pdfDoc.getForm();
63
- const planets = form.getOptionList('Which Are Planets? 🌎');
64
-
65
- expect(planets.isExported()).toBe(true);
66
- expect(planets.isReadOnly()).toBe(false);
67
- expect(planets.isRequired()).toBe(false);
68
- expect(planets.isMultiselect()).toBe(false);
69
- expect(planets.isSelectOnClick()).toBe(false);
70
- expect(planets.isSorted()).toBe(false);
71
- });
72
-
73
- it(`produces printable widgets when added to a page`, async () => {
74
- const pdfDoc = await PDFDocument.create();
75
- const page = pdfDoc.addPage();
76
-
77
- const form = pdfDoc.getForm();
78
-
79
- const optionList = form.createOptionList('a.new.option.list');
80
-
81
- const widgets = () => optionList.acroField.getWidgets();
82
- expect(widgets().length).toBe(0);
83
-
84
- optionList.addToPage(page);
85
- expect(widgets().length).toBe(1);
86
- expect(widgets()[0].hasFlag(AnnotationFlags.Print)).toBe(true);
87
- });
88
-
89
- it(`sets page reference when added to a page`, async () => {
90
- const pdfDoc = await PDFDocument.create();
91
- const page = pdfDoc.addPage();
92
-
93
- const form = pdfDoc.getForm();
94
-
95
- const optionList = form.createOptionList('a.new.option.list');
96
-
97
- const widgets = () => optionList.acroField.getWidgets();
98
- expect(widgets().length).toBe(0);
99
-
100
- optionList.addToPage(page);
101
- expect(widgets().length).toBe(1);
102
- expect(widgets()[0].P()).toBe(page.ref);
103
- });
104
- });
@@ -1,183 +0,0 @@
1
- import fs from 'fs';
2
- import {
3
- PDFDocument,
4
- PDFName,
5
- PDFArray,
6
- PDFHexString,
7
- AnnotationFlags,
8
- } from '../../../src/index';
9
-
10
- const fancyFieldsPdfBytes = fs.readFileSync('assets/pdfs/fancy_fields.pdf');
11
-
12
- describe(`PDFRadioGroup`, () => {
13
- it(`can read its options`, async () => {
14
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
15
- const form = pdfDoc.getForm();
16
- const historicalFigures = form.getRadioGroup('Historical Figures 🐺');
17
- expect(historicalFigures.getOptions()).toEqual([
18
- 'Marcus Aurelius 🏛️',
19
- 'Ada Lovelace 💻',
20
- 'Marie Curie ☢️',
21
- 'Alexander Hamilton 🇺🇸',
22
- ]);
23
- });
24
-
25
- it(`can read its selected value`, async () => {
26
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
27
- const form = pdfDoc.getForm();
28
- const historicalFigures = form.getRadioGroup('Historical Figures 🐺');
29
- expect(historicalFigures.getSelected()).toEqual('Marcus Aurelius 🏛️');
30
- });
31
-
32
- it(`can clear its value`, async () => {
33
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
34
- const form = pdfDoc.getForm();
35
- const historicalFigures = form.getRadioGroup('Historical Figures 🐺');
36
- historicalFigures.clear();
37
- expect(historicalFigures.getSelected()).toBe(undefined);
38
- });
39
-
40
- it(`can select a value`, async () => {
41
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
42
- const form = pdfDoc.getForm();
43
- const historicalFigures = form.getRadioGroup('Historical Figures 🐺');
44
- historicalFigures.select('Marie Curie ☢️');
45
- expect(historicalFigures.getSelected()).toBe('Marie Curie ☢️');
46
- });
47
-
48
- it(`can read its flag states`, async () => {
49
- const pdfDoc = await PDFDocument.load(fancyFieldsPdfBytes);
50
- const form = pdfDoc.getForm();
51
- const historicalFigures = form.getRadioGroup('Historical Figures 🐺');
52
-
53
- expect(historicalFigures.isExported()).toBe(true);
54
- expect(historicalFigures.isReadOnly()).toBe(false);
55
- expect(historicalFigures.isRequired()).toBe(false);
56
- expect(historicalFigures.isMutuallyExclusive()).toBe(true);
57
- expect(historicalFigures.isOffToggleable()).toBe(false);
58
- });
59
-
60
- it(`supports mutualExclusion=true`, async () => {
61
- const pdfDoc = await PDFDocument.create();
62
- const page = pdfDoc.addPage();
63
- const form = pdfDoc.getForm();
64
-
65
- const radioGroup = form.createRadioGroup('test.group');
66
- radioGroup.enableMutualExclusion();
67
-
68
- radioGroup.addOptionToPage('foo', page);
69
- radioGroup.addOptionToPage('bar', page);
70
- radioGroup.addOptionToPage('foo', page);
71
- radioGroup.addOptionToPage('qux', page);
72
-
73
- const getOnWidgets = () =>
74
- radioGroup.acroField
75
- .getWidgets()
76
- .filter((w) => w.getOnValue() === radioGroup.acroField.getValue());
77
-
78
- expect(getOnWidgets().length).toBe(0);
79
-
80
- radioGroup.select('foo');
81
-
82
- expect(getOnWidgets().length).toBe(1);
83
-
84
- expect(radioGroup.getOptions()).toEqual(['foo', 'bar', 'foo', 'qux']);
85
-
86
- const onValues = radioGroup.acroField
87
- .getWidgets()
88
- .map((w) => w.getOnValue());
89
-
90
- expect(onValues).toEqual([
91
- PDFName.of('0'),
92
- PDFName.of('1'),
93
- PDFName.of('2'),
94
- PDFName.of('3'),
95
- ]);
96
-
97
- const opt = radioGroup.acroField.Opt() as PDFArray;
98
- expect(opt).toBeInstanceOf(PDFArray);
99
- expect(opt.size()).toBe(4);
100
- expect((opt.get(0) as PDFHexString).decodeText()).toBe('foo');
101
- expect((opt.get(1) as PDFHexString).decodeText()).toBe('bar');
102
- expect((opt.get(2) as PDFHexString).decodeText()).toBe('foo');
103
- expect((opt.get(3) as PDFHexString).decodeText()).toBe('qux');
104
- });
105
-
106
- it(`supports mutualExclusion=false`, async () => {
107
- const pdfDoc = await PDFDocument.create();
108
- const page = pdfDoc.addPage();
109
- const form = pdfDoc.getForm();
110
-
111
- const radioGroup = form.createRadioGroup('test.group');
112
- radioGroup.disableMutualExclusion();
113
-
114
- radioGroup.addOptionToPage('foo', page);
115
- radioGroup.addOptionToPage('bar', page);
116
- radioGroup.addOptionToPage('foo', page);
117
- radioGroup.addOptionToPage('qux', page);
118
-
119
- const getOnWidgets = () =>
120
- radioGroup.acroField
121
- .getWidgets()
122
- .filter((w) => w.getOnValue() === radioGroup.acroField.getValue());
123
-
124
- expect(getOnWidgets().length).toBe(0);
125
-
126
- radioGroup.select('foo');
127
-
128
- expect(getOnWidgets().length).toBe(2);
129
-
130
- expect(radioGroup.getOptions()).toEqual(['foo', 'bar', 'foo', 'qux']);
131
-
132
- const onValues = radioGroup.acroField
133
- .getWidgets()
134
- .map((w) => w.getOnValue());
135
-
136
- expect(onValues).toEqual([
137
- PDFName.of('0'),
138
- PDFName.of('1'),
139
- PDFName.of('0'),
140
- PDFName.of('3'),
141
- ]);
142
-
143
- const opt = radioGroup.acroField.Opt() as PDFArray;
144
- expect(opt).toBeInstanceOf(PDFArray);
145
- expect(opt.size()).toBe(4);
146
- expect((opt.get(0) as PDFHexString).decodeText()).toBe('foo');
147
- expect((opt.get(1) as PDFHexString).decodeText()).toBe('bar');
148
- expect((opt.get(2) as PDFHexString).decodeText()).toBe('foo');
149
- expect((opt.get(3) as PDFHexString).decodeText()).toBe('qux');
150
- });
151
-
152
- it(`produces printable widgets when added to a page`, async () => {
153
- const pdfDoc = await PDFDocument.create();
154
- const page = pdfDoc.addPage();
155
-
156
- const form = pdfDoc.getForm();
157
-
158
- const radioGroup = form.createRadioGroup('a.new.radio.group');
159
-
160
- const widgets = () => radioGroup.acroField.getWidgets();
161
- expect(widgets().length).toBe(0);
162
-
163
- radioGroup.addOptionToPage('foo', page);
164
- expect(widgets().length).toBe(1);
165
- expect(widgets()[0].hasFlag(AnnotationFlags.Print)).toBe(true);
166
- });
167
-
168
- it(`sets page reference when added to a page`, async () => {
169
- const pdfDoc = await PDFDocument.create();
170
- const page = pdfDoc.addPage();
171
-
172
- const form = pdfDoc.getForm();
173
-
174
- const radioGroup = form.createRadioGroup('a.new.radio.group');
175
-
176
- const widgets = () => radioGroup.acroField.getWidgets();
177
- expect(widgets().length).toBe(0);
178
-
179
- radioGroup.addOptionToPage('foo', page);
180
- expect(widgets().length).toBe(1);
181
- expect(widgets()[0].P()).toBe(page.ref);
182
- });
183
- });