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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/{src/api/Embeddable.ts → dist/api/Embeddable.d.ts} +1 -1
  2. package/dist/api/PDFDocument.d.ts +778 -0
  3. package/dist/api/PDFDocumentOptions.d.ts +38 -0
  4. package/dist/api/PDFEmbeddedFile.d.ts +38 -0
  5. package/dist/api/PDFEmbeddedPage.d.ts +73 -0
  6. package/dist/api/PDFFont.d.ts +94 -0
  7. package/dist/api/PDFImage.d.ts +95 -0
  8. package/dist/api/PDFJavaScript.d.ts +38 -0
  9. package/dist/api/PDFPage.d.ts +910 -0
  10. package/dist/api/PDFPageOptions.d.ts +172 -0
  11. package/dist/api/StandardFonts.d.ts +16 -0
  12. package/dist/api/colors.d.ts +34 -0
  13. package/dist/api/errors.d.ts +42 -0
  14. package/dist/api/form/PDFButton.d.ts +137 -0
  15. package/dist/api/form/PDFCheckBox.d.ts +142 -0
  16. package/dist/api/form/PDFDropdown.d.ts +402 -0
  17. package/dist/api/form/PDFField.d.ts +203 -0
  18. package/dist/api/form/PDFForm.d.ts +411 -0
  19. package/dist/api/form/PDFOptionList.d.ts +335 -0
  20. package/dist/api/form/PDFRadioGroup.d.ts +252 -0
  21. package/dist/api/form/PDFSignature.d.ts +29 -0
  22. package/dist/api/form/PDFTextField.d.ts +537 -0
  23. package/dist/api/form/appearances.d.ts +41 -0
  24. package/dist/api/image/alignment.d.ts +5 -0
  25. package/dist/api/objects.d.ts +4 -0
  26. package/dist/api/operations.d.ts +226 -0
  27. package/dist/api/operators.d.ts +90 -0
  28. package/dist/api/rotations.d.ts +38 -0
  29. package/dist/api/sizes.d.ts +52 -0
  30. package/dist/api/svg.d.ts +70 -0
  31. package/dist/api/svgPath.d.ts +2 -0
  32. package/dist/api/text/alignment.d.ts +5 -0
  33. package/dist/api/text/layout.d.ts +54 -0
  34. package/dist/core/PDFContext.d.ts +84 -0
  35. package/dist/core/PDFObjectCopier.d.ts +37 -0
  36. package/dist/core/acroform/PDFAcroButton.d.ts +21 -0
  37. package/dist/core/acroform/PDFAcroCheckBox.d.ts +13 -0
  38. package/dist/core/acroform/PDFAcroChoice.d.ts +20 -0
  39. package/dist/core/acroform/PDFAcroComboBox.d.ts +9 -0
  40. package/dist/core/acroform/PDFAcroField.d.ts +36 -0
  41. package/dist/core/acroform/PDFAcroForm.d.ts +20 -0
  42. package/dist/core/acroform/PDFAcroListBox.d.ts +9 -0
  43. package/dist/core/acroform/PDFAcroNonTerminal.d.ts +13 -0
  44. package/dist/core/acroform/PDFAcroPushButton.d.ts +9 -0
  45. package/dist/core/acroform/PDFAcroRadioButton.d.ts +13 -0
  46. package/{src/core/acroform/PDFAcroSignature.ts → dist/core/acroform/PDFAcroSignature.d.ts} +2 -4
  47. package/dist/core/acroform/PDFAcroTerminal.d.ts +16 -0
  48. package/dist/core/acroform/PDFAcroText.d.ts +22 -0
  49. package/dist/core/acroform/flags.d.ts +141 -0
  50. package/dist/core/acroform/utils.d.ts +6 -0
  51. package/dist/core/annotation/AppearanceCharacteristics.d.ts +33 -0
  52. package/dist/core/annotation/BorderStyle.d.ts +11 -0
  53. package/dist/core/annotation/PDFAnnotation.d.ts +51 -0
  54. package/dist/core/annotation/PDFWidgetAnnotation.d.ts +26 -0
  55. package/dist/core/annotation/flags.d.ts +79 -0
  56. package/dist/core/crypto.d.ts +95 -0
  57. package/dist/core/document/PDFCrossRefSection.d.ts +27 -0
  58. package/dist/core/document/PDFHeader.d.ts +10 -0
  59. package/dist/core/document/PDFTrailer.d.ts +9 -0
  60. package/dist/core/document/PDFTrailerDict.d.ts +10 -0
  61. package/dist/core/embedders/CMap.d.ts +3 -0
  62. package/dist/core/embedders/CustomFontEmbedder.d.ts +44 -0
  63. package/dist/core/embedders/CustomFontSubsetEmbedder.d.ts +20 -0
  64. package/dist/core/embedders/FileEmbedder.d.ts +33 -0
  65. package/dist/core/embedders/FontFlags.d.ts +13 -0
  66. package/dist/core/embedders/JavaScriptEmbedder.d.ts +10 -0
  67. package/dist/core/embedders/JpegEmbedder.d.ts +23 -0
  68. package/dist/core/embedders/PDFPageEmbedder.d.ts +37 -0
  69. package/dist/core/embedders/PngEmbedder.d.ts +19 -0
  70. package/dist/core/embedders/StandardFontEmbedder.d.ts +36 -0
  71. package/dist/core/errors.d.ts +94 -0
  72. package/{src/core/index.ts → dist/core/index.d.ts} +1 -17
  73. package/dist/core/interactive/ViewerPreferences.d.ts +347 -0
  74. package/dist/core/objects/PDFArray.d.ts +63 -0
  75. package/dist/core/objects/PDFBool.d.ts +13 -0
  76. package/dist/core/objects/PDFDict.d.ts +62 -0
  77. package/dist/core/objects/PDFHexString.d.ts +16 -0
  78. package/dist/core/objects/PDFInvalidObject.d.ts +11 -0
  79. package/dist/core/objects/PDFName.d.ts +41 -0
  80. package/dist/core/objects/PDFNull.d.ts +10 -0
  81. package/dist/core/objects/PDFNumber.d.ts +15 -0
  82. package/dist/core/objects/PDFObject.d.ts +8 -0
  83. package/dist/core/objects/PDFRawStream.d.ts +16 -0
  84. package/dist/core/objects/PDFRef.d.ts +13 -0
  85. package/dist/core/objects/PDFStream.d.ts +16 -0
  86. package/dist/core/objects/PDFString.d.ts +16 -0
  87. package/dist/core/operators/PDFOperator.d.ts +19 -0
  88. package/dist/core/operators/PDFOperatorNames.d.ts +76 -0
  89. package/dist/core/parser/BaseParser.d.ts +14 -0
  90. package/dist/core/parser/ByteStream.d.ts +26 -0
  91. package/dist/core/parser/PDFObjectParser.d.ts +31 -0
  92. package/dist/core/parser/PDFObjectStreamParser.d.ts +13 -0
  93. package/dist/core/parser/PDFParser.d.ts +46 -0
  94. package/dist/core/parser/PDFXRefStreamParser.d.ts +21 -0
  95. package/dist/core/streams/Ascii85Stream.d.ts +9 -0
  96. package/dist/core/streams/AsciiHexStream.d.ts +9 -0
  97. package/dist/core/streams/DecodeStream.d.ts +26 -0
  98. package/dist/core/streams/DecryptStream.d.ts +12 -0
  99. package/dist/core/streams/FlateStream.d.ts +13 -0
  100. package/dist/core/streams/LZWStream.d.ts +12 -0
  101. package/dist/core/streams/RunLengthStream.d.ts +8 -0
  102. package/dist/core/streams/Stream.d.ts +34 -0
  103. package/dist/core/streams/decode.d.ts +3 -0
  104. package/dist/core/structures/PDFCatalog.d.ts +27 -0
  105. package/dist/core/structures/PDFContentStream.d.ts +15 -0
  106. package/dist/core/structures/PDFCrossRefStream.d.ts +53 -0
  107. package/dist/core/structures/PDFFlateStream.d.ts +13 -0
  108. package/dist/core/structures/PDFObjectStream.d.ts +20 -0
  109. package/dist/core/structures/PDFPageLeaf.d.ts +54 -0
  110. package/dist/core/structures/PDFPageTree.d.ts +41 -0
  111. package/dist/core/syntax/CharCodes.d.ts +61 -0
  112. package/dist/core/syntax/Delimiters.d.ts +1 -0
  113. package/dist/core/syntax/Irregular.d.ts +1 -0
  114. package/dist/core/syntax/Keywords.d.ts +22 -0
  115. package/dist/core/syntax/Numeric.d.ts +3 -0
  116. package/dist/core/syntax/Whitespace.d.ts +1 -0
  117. package/dist/core/writers/PDFStreamWriter.d.ts +19 -0
  118. package/dist/core/writers/PDFWriter.d.ts +29 -0
  119. package/dist/index.js +19124 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/types/fontkit.d.ts +597 -0
  122. package/{src/types/index.ts → dist/types/index.d.ts} +8 -13
  123. package/{src/types/matrix.ts → dist/types/matrix.d.ts} +1 -2
  124. package/dist/utils/Cache.d.ts +10 -0
  125. package/dist/utils/arrays.d.ts +16 -0
  126. package/dist/utils/async.d.ts +5 -0
  127. package/dist/utils/base64.d.ts +10 -0
  128. package/dist/utils/elements/Arc.d.ts +22 -0
  129. package/dist/utils/elements/Circle.d.ts +14 -0
  130. package/dist/utils/elements/Ellipse.d.ts +20 -0
  131. package/dist/utils/elements/GraphElement.d.ts +6 -0
  132. package/dist/utils/elements/Line.d.ts +23 -0
  133. package/dist/utils/elements/Plot.d.ts +11 -0
  134. package/dist/utils/elements/Point.d.ts +18 -0
  135. package/dist/utils/elements/Rectangle.d.ts +21 -0
  136. package/dist/utils/elements/Segment.d.ts +19 -0
  137. package/dist/utils/errors.d.ts +1 -0
  138. package/dist/utils/intersections.d.ts +9 -0
  139. package/dist/utils/maths.d.ts +45 -0
  140. package/dist/utils/numbers.d.ts +23 -0
  141. package/dist/utils/objects.d.ts +15 -0
  142. package/dist/utils/pdfDocEncoding.d.ts +7 -0
  143. package/dist/utils/png.d.ts +17 -0
  144. package/dist/utils/rng.d.ts +13 -0
  145. package/dist/utils/strings.d.ts +25 -0
  146. package/{src/utils/unicode.ts → dist/utils/unicode.d.ts} +8 -195
  147. package/dist/utils/validators.d.ts +26 -0
  148. package/package.json +6 -1
  149. package/__tests__/api/PDFDocument.spec.ts +0 -576
  150. package/__tests__/api/PDFImage.spec.ts +0 -60
  151. package/__tests__/api/PDFPage.spec.ts +0 -151
  152. package/__tests__/api/form/PDFCheckBox.spec.ts +0 -71
  153. package/__tests__/api/form/PDFDropdown.spec.ts +0 -118
  154. package/__tests__/api/form/PDFForm.spec.ts +0 -370
  155. package/__tests__/api/form/PDFOptionList.spec.ts +0 -104
  156. package/__tests__/api/form/PDFRadioGroup.spec.ts +0 -183
  157. package/__tests__/api/form/PDFTextField.spec.ts +0 -148
  158. package/__tests__/api/svgPath.spec.ts +0 -153
  159. package/__tests__/api/text/layout.spec.ts +0 -166
  160. package/__tests__/core/PDFContext.spec.ts +0 -194
  161. package/__tests__/core/PDFObjectCopier.spec.ts +0 -421
  162. package/__tests__/core/acroform/PDFAcroField.spec.ts +0 -98
  163. package/__tests__/core/acroform/PDFAcroTerminal.spec.ts +0 -39
  164. package/__tests__/core/annotation/PDFWidgetAnnotation.spec.ts +0 -40
  165. package/__tests__/core/document/PDFCrossRefSection.spec.ts +0 -88
  166. package/__tests__/core/document/PDFHeader.spec.ts +0 -22
  167. package/__tests__/core/document/PDFTrailer.spec.ts +0 -28
  168. package/__tests__/core/document/PDFTrailerDict.spec.ts +0 -24
  169. package/__tests__/core/embedders/CMap.spec.ts +0 -47
  170. package/__tests__/core/embedders/CustomFontEmbedder.spec.ts +0 -96
  171. package/__tests__/core/embedders/CustomFontSubsetEmbedder.spec.ts +0 -62
  172. package/__tests__/core/embedders/FileEmbedder.spec.ts +0 -54
  173. package/__tests__/core/embedders/JpegEmbedder.spec.ts +0 -67
  174. package/__tests__/core/embedders/PDFPageEmbedder.spec.ts +0 -65
  175. package/__tests__/core/embedders/PngEmbedder.spec.ts +0 -87
  176. package/__tests__/core/embedders/StandardFontEmbedder.spec.ts +0 -79
  177. package/__tests__/core/embedders/data/SourceHanSerifJP-Regular.otf.cmap +0 -16096
  178. package/__tests__/core/embedders/data/Ubuntu-R.ttf.cmap +0 -1211
  179. package/__tests__/core/objects/PDFArray.spec.ts +0 -134
  180. package/__tests__/core/objects/PDFBool.spec.ts +0 -42
  181. package/__tests__/core/objects/PDFDict.spec.ts +0 -195
  182. package/__tests__/core/objects/PDFHexString.spec.ts +0 -168
  183. package/__tests__/core/objects/PDFInvalidObject.spec.ts +0 -32
  184. package/__tests__/core/objects/PDFName.spec.ts +0 -122
  185. package/__tests__/core/objects/PDFNull.spec.ts +0 -30
  186. package/__tests__/core/objects/PDFNumber.spec.ts +0 -50
  187. package/__tests__/core/objects/PDFObject.spec.ts +0 -29
  188. package/__tests__/core/objects/PDFRawStream.spec.ts +0 -45
  189. package/__tests__/core/objects/PDFRef.spec.ts +0 -60
  190. package/__tests__/core/objects/PDFString.spec.ts +0 -237
  191. package/__tests__/core/operators/PDFOperator.spec.ts +0 -77
  192. package/__tests__/core/parser/PDFObjectParser.spec.ts +0 -730
  193. package/__tests__/core/parser/PDFObjectStreamParser.spec.ts +0 -158
  194. package/__tests__/core/parser/PDFParser.spec.ts +0 -398
  195. package/__tests__/core/parser/PDFXRefStreamParser.spec.ts +0 -187
  196. package/__tests__/core/parser/data/object-stream-invalid +0 -2
  197. package/__tests__/core/parser/data/object-stream1 +0 -16
  198. package/__tests__/core/parser/data/object-stream2 +0 -10
  199. package/__tests__/core/parser/data/object-stream3 +0 -0
  200. package/__tests__/core/parser/data/object-stream4 +0 -0
  201. package/__tests__/core/parser/data/xref-stream1 +0 -0
  202. package/__tests__/core/parser/data/xref-stream2 +0 -0
  203. package/__tests__/core/parser/data/xref-stream3 +0 -0
  204. package/__tests__/core/parser/data/xref-stream4 +0 -0
  205. package/__tests__/core/streams/Ascii85Stream.spec.ts +0 -20
  206. package/__tests__/core/streams/AsciiHexStream.spec.ts +0 -20
  207. package/__tests__/core/streams/FlateStream.spec.ts +0 -20
  208. package/__tests__/core/streams/LZWStream.spec.ts +0 -20
  209. package/__tests__/core/streams/RunLengthStream.spec.ts +0 -20
  210. package/__tests__/core/streams/Stream.spec.ts +0 -128
  211. package/__tests__/core/streams/data/ascii85/1.decoded +0 -0
  212. package/__tests__/core/streams/data/ascii85/1.encoded +0 -43
  213. package/__tests__/core/streams/data/asciihex/1.decoded +0 -1
  214. package/__tests__/core/streams/data/asciihex/1.encoded +0 -1
  215. package/__tests__/core/streams/data/asciihex/2.decoded +0 -7
  216. package/__tests__/core/streams/data/asciihex/2.encoded +0 -1
  217. package/__tests__/core/streams/data/flate/1.corrupt.encoded +0 -1
  218. package/__tests__/core/streams/data/flate/1.decoded +0 -0
  219. package/__tests__/core/streams/data/flate/1.encoded +0 -2
  220. package/__tests__/core/streams/data/flate/2.decoded +0 -33
  221. package/__tests__/core/streams/data/flate/2.encoded +0 -0
  222. package/__tests__/core/streams/data/flate/3.decoded +0 -15
  223. package/__tests__/core/streams/data/flate/3.encoded +0 -0
  224. package/__tests__/core/streams/data/flate/4.decoded +0 -16
  225. package/__tests__/core/streams/data/flate/4.encoded +0 -0
  226. package/__tests__/core/streams/data/flate/5.decoded +0 -0
  227. package/__tests__/core/streams/data/flate/5.encoded +0 -0
  228. package/__tests__/core/streams/data/flate/6.decoded +0 -17
  229. package/__tests__/core/streams/data/flate/6.encoded +0 -0
  230. package/__tests__/core/streams/data/flate/7.decoded +0 -20
  231. package/__tests__/core/streams/data/flate/7.encoded +0 -1
  232. package/__tests__/core/streams/data/lzw/1.decoded +0 -0
  233. package/__tests__/core/streams/data/lzw/1.encoded +0 -0
  234. package/__tests__/core/streams/data/lzw/2.decoded +0 -0
  235. package/__tests__/core/streams/data/lzw/2.encoded +0 -0
  236. package/__tests__/core/streams/data/lzw/3.decoded +0 -14
  237. package/__tests__/core/streams/data/lzw/3.encoded +0 -2
  238. package/__tests__/core/streams/data/lzw/4.decoded +0 -14
  239. package/__tests__/core/streams/data/lzw/4.encoded +0 -2
  240. package/__tests__/core/streams/data/runlength/1.decoded +0 -1
  241. package/__tests__/core/streams/data/runlength/1.encoded +0 -1
  242. package/__tests__/core/streams/data/runlength/2.decoded +0 -1
  243. package/__tests__/core/streams/data/runlength/2.encoded +0 -1
  244. package/__tests__/core/streams/data/runlength/3.decoded +0 -0
  245. package/__tests__/core/streams/data/runlength/3.encoded +0 -0
  246. package/__tests__/core/streams/data/runlength/4.decoded +0 -1
  247. package/__tests__/core/streams/data/runlength/4.encoded +0 -1
  248. package/__tests__/core/streams/data/runlength/5.decoded +0 -1
  249. package/__tests__/core/streams/data/runlength/5.encoded +0 -1
  250. package/__tests__/core/streams/data/runlength/empty.encoded +0 -1
  251. package/__tests__/core/structures/PDFCatalog.spec.ts +0 -108
  252. package/__tests__/core/structures/PDFContentStream.spec.ts +0 -117
  253. package/__tests__/core/structures/PDFCrossRefStream.spec.ts +0 -145
  254. package/__tests__/core/structures/PDFObjectStream.spec.ts +0 -138
  255. package/__tests__/core/structures/PDFPageLeaf.spec.ts +0 -355
  256. package/__tests__/core/structures/PDFPageTree.spec.ts +0 -592
  257. package/__tests__/core/writers/PDFStreamWriter.spec.ts +0 -71
  258. package/__tests__/core/writers/PDFWriter.spec.ts +0 -144
  259. package/__tests__/core/writers/data/stream-writer-1.pdf +0 -0
  260. package/__tests__/index.test.ts +0 -12
  261. package/__tests__/utils/base64.spec.ts +0 -61
  262. package/__tests__/utils/data/simple.pdf +0 -201
  263. package/__tests__/utils/data/simple.pdf.base64 +0 -1
  264. package/__tests__/utils/pdfDocEncoding.spec.ts +0 -82
  265. package/__tests__/utils/png.spec.ts +0 -53
  266. package/__tests__/utils/rng.spec.ts +0 -14
  267. package/__tests__/utils/strings.spec.ts +0 -98
  268. package/__tests__/utils/unicode.spec.ts +0 -337
  269. package/assets/fonts/source_hans_jp/SourceHanSerifJP-Regular.otf +0 -0
  270. package/assets/fonts/ubuntu/Ubuntu-B.ttf +0 -0
  271. package/assets/fonts/ubuntu/Ubuntu-R.ttf +0 -0
  272. package/assets/images/cat_riding_unicorn.jpg +0 -0
  273. package/assets/images/cmyk_colorspace.jpg +0 -0
  274. package/assets/images/greyscale_bird.png +0 -0
  275. package/assets/images/minions_banana_alpha.png +0 -0
  276. package/assets/images/minions_banana_no_alpha.png +0 -0
  277. package/assets/images/minions_laughing.jpg +0 -0
  278. package/assets/pdfs/bixby_guide.pdf +0 -0
  279. package/assets/pdfs/encrypted_new.pdf +0 -0
  280. package/assets/pdfs/encrypted_old.pdf +0 -0
  281. package/assets/pdfs/fancy_fields.pdf +0 -0
  282. package/assets/pdfs/giraffe.pdf +0 -0
  283. package/assets/pdfs/invalid_root_ref.pdf +0 -0
  284. package/assets/pdfs/just_metadata.pdf +0 -49
  285. package/assets/pdfs/missing_endobj_keyword.pdf +0 -70
  286. package/assets/pdfs/missing_xref_trailer_dict.pdf +0 -141
  287. package/assets/pdfs/normal.pdf +0 -0
  288. package/assets/pdfs/pdf20examples/PDF 2.0 with offset start.pdf +0 -179
  289. package/assets/pdfs/stuff_following_header.pdf +0 -0
  290. package/assets/pdfs/us_constitution.pdf +0 -0
  291. package/assets/pdfs/with_comments.pdf +0 -0
  292. package/assets/pdfs/with_invalid_objects.pdf +0 -53
  293. package/assets/pdfs/with_invalid_stream_EOL.pdf +0 -0
  294. package/assets/pdfs/with_null_parent_entry.pdf +0 -0
  295. package/assets/pdfs/with_signature.pdf +0 -0
  296. package/assets/pdfs/with_update_sections.pdf +0 -0
  297. package/assets/pdfs/with_viewer_prefs.pdf +0 -0
  298. package/assets/pdfs/with_xfa_fields.pdf +0 -0
  299. package/src/api/PDFDocument.ts +0 -1389
  300. package/src/api/PDFDocumentOptions.ts +0 -45
  301. package/src/api/PDFEmbeddedFile.ts +0 -87
  302. package/src/api/PDFEmbeddedPage.ts +0 -100
  303. package/src/api/PDFFont.ts +0 -149
  304. package/src/api/PDFImage.ts +0 -143
  305. package/src/api/PDFJavaScript.ts +0 -75
  306. package/src/api/PDFPage.ts +0 -1604
  307. package/src/api/PDFPageOptions.ts +0 -175
  308. package/src/api/StandardFonts.ts +0 -16
  309. package/src/api/colors.ts +0 -109
  310. package/src/api/errors.ts +0 -110
  311. package/src/api/form/PDFButton.ts +0 -242
  312. package/src/api/form/PDFCheckBox.ts +0 -247
  313. package/src/api/form/PDFDropdown.ts +0 -637
  314. package/src/api/form/PDFField.ts +0 -491
  315. package/src/api/form/PDFForm.ts +0 -842
  316. package/src/api/form/PDFOptionList.ts +0 -555
  317. package/src/api/form/PDFRadioGroup.ts +0 -455
  318. package/src/api/form/PDFSignature.ts +0 -44
  319. package/src/api/form/PDFTextField.ts +0 -811
  320. package/src/api/form/appearances.ts +0 -655
  321. package/src/api/image/alignment.ts +0 -5
  322. package/src/api/objects.ts +0 -10
  323. package/src/api/operations.ts +0 -873
  324. package/src/api/operators.ts +0 -335
  325. package/src/api/rotations.ts +0 -84
  326. package/src/api/sizes.ts +0 -52
  327. package/src/api/svg.ts +0 -888
  328. package/src/api/svgPath.ts +0 -460
  329. package/src/api/text/alignment.ts +0 -5
  330. package/src/api/text/layout.ts +0 -328
  331. package/src/core/PDFContext.ts +0 -274
  332. package/src/core/PDFObjectCopier.ts +0 -142
  333. package/src/core/acroform/PDFAcroButton.ts +0 -104
  334. package/src/core/acroform/PDFAcroCheckBox.ts +0 -48
  335. package/src/core/acroform/PDFAcroChoice.ts +0 -143
  336. package/src/core/acroform/PDFAcroComboBox.ts +0 -21
  337. package/src/core/acroform/PDFAcroField.ts +0 -168
  338. package/src/core/acroform/PDFAcroForm.ts +0 -96
  339. package/src/core/acroform/PDFAcroListBox.ts +0 -19
  340. package/src/core/acroform/PDFAcroNonTerminal.ts +0 -33
  341. package/src/core/acroform/PDFAcroPushButton.ts +0 -21
  342. package/src/core/acroform/PDFAcroRadioButton.ts +0 -57
  343. package/src/core/acroform/PDFAcroTerminal.ts +0 -70
  344. package/src/core/acroform/PDFAcroText.ts +0 -76
  345. package/src/core/acroform/flags.ts +0 -162
  346. package/src/core/acroform/utils.ts +0 -129
  347. package/src/core/annotation/AppearanceCharacteristics.ts +0 -133
  348. package/src/core/annotation/BorderStyle.ts +0 -31
  349. package/src/core/annotation/PDFAnnotation.ts +0 -148
  350. package/src/core/annotation/PDFWidgetAnnotation.ts +0 -111
  351. package/src/core/annotation/flags.ts +0 -90
  352. package/src/core/crypto.ts +0 -1844
  353. package/src/core/document/PDFCrossRefSection.ts +0 -161
  354. package/src/core/document/PDFHeader.ts +0 -48
  355. package/src/core/document/PDFTrailer.ts +0 -48
  356. package/src/core/document/PDFTrailerDict.ts +0 -39
  357. package/src/core/embedders/CMap.ts +0 -65
  358. package/src/core/embedders/CustomFontEmbedder.ts +0 -237
  359. package/src/core/embedders/CustomFontSubsetEmbedder.ts +0 -89
  360. package/src/core/embedders/FileEmbedder.ts +0 -77
  361. package/src/core/embedders/FontFlags.ts +0 -45
  362. package/src/core/embedders/JavaScriptEmbedder.ts +0 -34
  363. package/src/core/embedders/JpegEmbedder.ts +0 -118
  364. package/src/core/embedders/PDFPageEmbedder.ts +0 -139
  365. package/src/core/embedders/PngEmbedder.ts +0 -69
  366. package/src/core/embedders/StandardFontEmbedder.ts +0 -121
  367. package/src/core/errors.ts +0 -226
  368. package/src/core/interactive/ViewerPreferences.ts +0 -565
  369. package/src/core/objects/PDFArray.ts +0 -179
  370. package/src/core/objects/PDFBool.ts +0 -53
  371. package/src/core/objects/PDFDict.ts +0 -220
  372. package/src/core/objects/PDFHexString.ts +0 -94
  373. package/src/core/objects/PDFInvalidObject.ts +0 -34
  374. package/src/core/objects/PDFName.ts +0 -152
  375. package/src/core/objects/PDFNull.ts +0 -30
  376. package/src/core/objects/PDFNumber.ts +0 -44
  377. package/src/core/objects/PDFObject.ts +0 -22
  378. package/src/core/objects/PDFRawStream.ts +0 -41
  379. package/src/core/objects/PDFRef.ts +0 -51
  380. package/src/core/objects/PDFStream.ts +0 -87
  381. package/src/core/objects/PDFString.ts +0 -118
  382. package/src/core/operators/PDFOperator.ts +0 -72
  383. package/src/core/operators/PDFOperatorNames.ts +0 -92
  384. package/src/core/parser/BaseParser.ts +0 -119
  385. package/src/core/parser/ByteStream.ts +0 -76
  386. package/src/core/parser/PDFObjectParser.ts +0 -302
  387. package/src/core/parser/PDFObjectStreamParser.ts +0 -65
  388. package/src/core/parser/PDFParser.ts +0 -363
  389. package/src/core/parser/PDFXRefStreamParser.ts +0 -129
  390. package/src/core/streams/Ascii85Stream.ts +0 -97
  391. package/src/core/streams/AsciiHexStream.ts +0 -77
  392. package/src/core/streams/DecodeStream.ts +0 -188
  393. package/src/core/streams/DecryptStream.ts +0 -49
  394. package/src/core/streams/FlateStream.ts +0 -397
  395. package/src/core/streams/LZWStream.ts +0 -157
  396. package/src/core/streams/RunLengthStream.ts +0 -55
  397. package/src/core/streams/Stream.ts +0 -126
  398. package/src/core/streams/decode.ts +0 -70
  399. package/src/core/structures/PDFCatalog.ts +0 -81
  400. package/src/core/structures/PDFContentStream.ts +0 -58
  401. package/src/core/structures/PDFCrossRefStream.ts +0 -238
  402. package/src/core/structures/PDFFlateStream.ts +0 -40
  403. package/src/core/structures/PDFObjectStream.ts +0 -91
  404. package/src/core/structures/PDFPageLeaf.ts +0 -244
  405. package/src/core/structures/PDFPageTree.ts +0 -192
  406. package/src/core/syntax/CharCodes.ts +0 -62
  407. package/src/core/syntax/Delimiters.ts +0 -14
  408. package/src/core/syntax/Irregular.ts +0 -10
  409. package/src/core/syntax/Keywords.ts +0 -57
  410. package/src/core/syntax/Numeric.ts +0 -26
  411. package/src/core/syntax/Whitespace.ts +0 -10
  412. package/src/core/writers/PDFStreamWriter.ts +0 -114
  413. package/src/core/writers/PDFWriter.ts +0 -146
  414. package/src/types/fontkit.ts +0 -643
  415. package/src/utils/Cache.ts +0 -26
  416. package/src/utils/arrays.ts +0 -153
  417. package/src/utils/async.ts +0 -8
  418. package/src/utils/base64.ts +0 -98
  419. package/src/utils/elements/Arc.ts +0 -97
  420. package/src/utils/elements/Circle.ts +0 -47
  421. package/src/utils/elements/Ellipse.ts +0 -117
  422. package/src/utils/elements/GraphElement.ts +0 -14
  423. package/src/utils/elements/Line.ts +0 -83
  424. package/src/utils/elements/Plot.ts +0 -50
  425. package/src/utils/elements/Point.ts +0 -37
  426. package/src/utils/elements/Rectangle.ts +0 -65
  427. package/src/utils/elements/Segment.ts +0 -81
  428. package/src/utils/errors.ts +0 -3
  429. package/src/utils/intersections.ts +0 -237
  430. package/src/utils/maths.ts +0 -96
  431. package/src/utils/numbers.ts +0 -55
  432. package/src/utils/objects.ts +0 -13
  433. package/src/utils/pdfDocEncoding.ts +0 -69
  434. package/src/utils/png.ts +0 -100
  435. package/src/utils/rng.ts +0 -21
  436. package/src/utils/strings.ts +0 -191
  437. package/src/utils/validators.ts +0 -192
  438. package/tsconfig.build.json +0 -14
  439. package/tsconfig.json +0 -15
  440. package/vite.config.mts +0 -39
  441. /package/{src/api/form/index.ts → dist/api/form/index.d.ts} +0 -0
  442. /package/{src/api/image/index.ts → dist/api/image/index.d.ts} +0 -0
  443. /package/{src/api/index.ts → dist/api/index.d.ts} +0 -0
  444. /package/{src/api/text/index.ts → dist/api/text/index.d.ts} +0 -0
  445. /package/{src/core/acroform/index.ts → dist/core/acroform/index.d.ts} +0 -0
  446. /package/{src/core/annotation/index.ts → dist/core/annotation/index.d.ts} +0 -0
  447. /package/{src/index.ts → dist/index.d.ts} +0 -0
  448. /package/{src/utils/elements/index.ts → dist/utils/elements/index.d.ts} +0 -0
  449. /package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -0
@@ -1,175 +0,0 @@
1
- import { Color } from './colors';
2
- import PDFFont from './PDFFont';
3
- import { Rotation } from './rotations';
4
- import { FillRule, LineCapStyle } from './operators';
5
- import type { Space, TransformationMatrix } from '../types';
6
-
7
- interface SvgOptions {
8
- matrix?: TransformationMatrix;
9
- clipSpaces?: Space[];
10
- }
11
-
12
- export enum BlendMode {
13
- Normal = 'Normal',
14
- Multiply = 'Multiply',
15
- Screen = 'Screen',
16
- Overlay = 'Overlay',
17
- Darken = 'Darken',
18
- Lighten = 'Lighten',
19
- ColorDodge = 'ColorDodge',
20
- ColorBurn = 'ColorBurn',
21
- HardLight = 'HardLight',
22
- SoftLight = 'SoftLight',
23
- Difference = 'Difference',
24
- Exclusion = 'Exclusion',
25
- }
26
-
27
- export interface PDFPageDrawTextOptions extends SvgOptions {
28
- color?: Color;
29
- opacity?: number;
30
- blendMode?: BlendMode;
31
- font?: PDFFont;
32
- size?: number;
33
- rotate?: Rotation;
34
- xSkew?: Rotation;
35
- ySkew?: Rotation;
36
- x?: number;
37
- y?: number;
38
- lineHeight?: number;
39
- maxWidth?: number;
40
- wordBreaks?: string[];
41
- }
42
-
43
- export interface PDFPageDrawImageOptions extends SvgOptions {
44
- x?: number;
45
- y?: number;
46
- width?: number;
47
- height?: number;
48
- rotate?: Rotation;
49
- xSkew?: Rotation;
50
- ySkew?: Rotation;
51
- opacity?: number;
52
- blendMode?: BlendMode;
53
- }
54
-
55
- export interface PDFPageDrawPageOptions {
56
- x?: number;
57
- y?: number;
58
- xScale?: number;
59
- yScale?: number;
60
- width?: number;
61
- height?: number;
62
- rotate?: Rotation;
63
- xSkew?: Rotation;
64
- ySkew?: Rotation;
65
- opacity?: number;
66
- blendMode?: BlendMode;
67
- }
68
-
69
- export interface PDFPageDrawSVGOptions extends SvgOptions {
70
- x?: number;
71
- y?: number;
72
- scale?: number;
73
- rotate?: Rotation;
74
- borderWidth?: number;
75
- color?: Color;
76
- opacity?: number;
77
- borderColor?: Color;
78
- borderOpacity?: number;
79
- borderDashArray?: number[];
80
- borderDashPhase?: number;
81
- borderLineCap?: LineCapStyle;
82
- blendMode?: BlendMode;
83
- fillRule?: FillRule;
84
- }
85
-
86
- export interface PDFPageDrawLineOptions extends SvgOptions {
87
- start: { x: number; y: number };
88
- end: { x: number; y: number };
89
- thickness?: number;
90
- color?: Color;
91
- opacity?: number;
92
- lineCap?: LineCapStyle;
93
- dashArray?: number[];
94
- dashPhase?: number;
95
- blendMode?: BlendMode;
96
- }
97
-
98
- export interface PDFPageDrawRectangleOptions extends SvgOptions {
99
- x?: number;
100
- y?: number;
101
- width?: number;
102
- height?: number;
103
- rotate?: Rotation;
104
- xSkew?: Rotation;
105
- ySkew?: Rotation;
106
- borderWidth?: number;
107
- color?: Color;
108
- opacity?: number;
109
- borderColor?: Color;
110
- borderOpacity?: number;
111
- borderDashArray?: number[];
112
- borderDashPhase?: number;
113
- borderLineCap?: LineCapStyle;
114
- blendMode?: BlendMode;
115
- radius?: number;
116
- }
117
-
118
- export interface PDFPageDrawSquareOptions extends SvgOptions {
119
- x?: number;
120
- y?: number;
121
- size?: number;
122
- rotate?: Rotation;
123
- xSkew?: Rotation;
124
- ySkew?: Rotation;
125
- borderWidth?: number;
126
- color?: Color;
127
- opacity?: number;
128
- borderColor?: Color;
129
- borderOpacity?: number;
130
- borderDashArray?: number[];
131
- borderDashPhase?: number;
132
- borderLineCap?: LineCapStyle;
133
- blendMode?: BlendMode;
134
- }
135
-
136
- export interface PDFPageDrawEllipseOptions extends SvgOptions {
137
- x?: number;
138
- y?: number;
139
- xScale?: number;
140
- yScale?: number;
141
- rotate?: Rotation;
142
- color?: Color;
143
- opacity?: number;
144
- borderColor?: Color;
145
- borderOpacity?: number;
146
- borderWidth?: number;
147
- borderDashArray?: number[];
148
- borderDashPhase?: number;
149
- borderLineCap?: LineCapStyle;
150
- blendMode?: BlendMode;
151
- }
152
-
153
- export interface PDFPageDrawCircleOptions extends SvgOptions {
154
- x?: number;
155
- y?: number;
156
- size?: number;
157
- color?: Color;
158
- opacity?: number;
159
- borderColor?: Color;
160
- borderOpacity?: number;
161
- borderWidth?: number;
162
- borderDashArray?: number[];
163
- borderDashPhase?: number;
164
- borderLineCap?: LineCapStyle;
165
- blendMode?: BlendMode;
166
- }
167
-
168
- export interface PDFPageDrawSVGElementOptions {
169
- x?: number;
170
- y?: number;
171
- width?: number;
172
- height?: number;
173
- fontSize?: number;
174
- fonts?: { [fontName: string]: PDFFont };
175
- }
@@ -1,16 +0,0 @@
1
- export enum StandardFonts {
2
- Courier = 'Courier',
3
- CourierBold = 'Courier-Bold',
4
- CourierOblique = 'Courier-Oblique',
5
- CourierBoldOblique = 'Courier-BoldOblique',
6
- Helvetica = 'Helvetica',
7
- HelveticaBold = 'Helvetica-Bold',
8
- HelveticaOblique = 'Helvetica-Oblique',
9
- HelveticaBoldOblique = 'Helvetica-BoldOblique',
10
- TimesRoman = 'Times-Roman',
11
- TimesRomanBold = 'Times-Bold',
12
- TimesRomanItalic = 'Times-Italic',
13
- TimesRomanBoldItalic = 'Times-BoldItalic',
14
- Symbol = 'Symbol',
15
- ZapfDingbats = 'ZapfDingbats',
16
- }
package/src/api/colors.ts DELETED
@@ -1,109 +0,0 @@
1
- import {
2
- setFillingCmykColor,
3
- setFillingGrayscaleColor,
4
- setFillingRgbColor,
5
- setStrokingCmykColor,
6
- setStrokingGrayscaleColor,
7
- setStrokingRgbColor,
8
- } from './operators';
9
- import { assertRange, assertIs, error } from '../utils';
10
- import ColorParser from 'color';
11
-
12
- export enum ColorTypes {
13
- Grayscale = 'Grayscale',
14
- RGB = 'RGB',
15
- CMYK = 'CMYK',
16
- }
17
-
18
- export interface Grayscale {
19
- type: ColorTypes.Grayscale;
20
- gray: number;
21
- }
22
-
23
- export interface RGB {
24
- type: ColorTypes.RGB;
25
- red: number;
26
- green: number;
27
- blue: number;
28
- }
29
-
30
- export interface CMYK {
31
- type: ColorTypes.CMYK;
32
- cyan: number;
33
- magenta: number;
34
- yellow: number;
35
- key: number;
36
- }
37
-
38
- export type Color = Grayscale | RGB | CMYK;
39
-
40
- export const grayscale = (gray: number): Grayscale => {
41
- assertRange(gray, 'gray', 0.0, 1.0);
42
- return { type: ColorTypes.Grayscale, gray };
43
- };
44
-
45
- export const rgb = (red: number, green: number, blue: number): RGB => {
46
- assertRange(red, 'red', 0, 1);
47
- assertRange(green, 'green', 0, 1);
48
- assertRange(blue, 'blue', 0, 1);
49
- return { type: ColorTypes.RGB, red, green, blue };
50
- };
51
-
52
- export const cmyk = (cyan: number, magenta: number, yellow: number, key: number): CMYK => {
53
- assertRange(cyan, 'cyan', 0, 1);
54
- assertRange(magenta, 'magenta', 0, 1);
55
- assertRange(yellow, 'yellow', 0, 1);
56
- assertRange(key, 'key', 0, 1);
57
- return { type: ColorTypes.CMYK, cyan, magenta, yellow, key };
58
- };
59
-
60
- export const colorString = (color: string): { rgb: Color; alpha?: number } => {
61
- assertIs(color, 'color', ['string']);
62
- const colorDescription = ColorParser(color).unitObject();
63
- return {
64
- rgb: rgb(colorDescription.r, colorDescription.g, colorDescription.b),
65
- alpha: colorDescription.alpha,
66
- };
67
- };
68
-
69
- const { Grayscale, RGB, CMYK } = ColorTypes;
70
-
71
- // prettier-ignore
72
- export const setFillingColor = (color: Color) =>
73
- color.type === Grayscale ? setFillingGrayscaleColor(color.gray)
74
- : color.type === RGB ? setFillingRgbColor(color.red, color.green, color.blue)
75
- : color.type === CMYK ? setFillingCmykColor(color.cyan, color.magenta, color.yellow, color.key)
76
- : error(`Invalid color: ${JSON.stringify(color)}`);
77
-
78
- // prettier-ignore
79
- export const setStrokingColor = (color: Color) =>
80
- color.type === Grayscale ? setStrokingGrayscaleColor(color.gray)
81
- : color.type === RGB ? setStrokingRgbColor(color.red, color.green, color.blue)
82
- : color.type === CMYK ? setStrokingCmykColor(color.cyan, color.magenta, color.yellow, color.key)
83
- : error(`Invalid color: ${JSON.stringify(color)}`);
84
-
85
- // prettier-ignore
86
- export const componentsToColor = (comps?: number[], scale = 1) => (
87
- comps?.length === 1 ? grayscale(
88
- comps[0] * scale,
89
- )
90
- : comps?.length === 3 ? rgb(
91
- comps[0] * scale,
92
- comps[1] * scale,
93
- comps[2] * scale,
94
- )
95
- : comps?.length === 4 ? cmyk(
96
- comps[0] * scale,
97
- comps[1] * scale,
98
- comps[2] * scale,
99
- comps[3] * scale,
100
- )
101
- : undefined
102
- );
103
-
104
- // prettier-ignore
105
- export const colorToComponents = (color: Color) =>
106
- color.type === Grayscale ? [color.gray]
107
- : color.type === RGB ? [color.red, color.green, color.blue]
108
- : color.type === CMYK ? [color.cyan, color.magenta, color.yellow, color.key]
109
- : error(`Invalid color: ${JSON.stringify(color)}`);
package/src/api/errors.ts DELETED
@@ -1,110 +0,0 @@
1
- // tslint:disable: max-classes-per-file
2
-
3
- // TODO: Include link to documentation with example
4
- export class EncryptedPDFError extends Error {
5
- constructor() {
6
- const msg =
7
- 'Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways.';
8
- super(msg);
9
- }
10
- }
11
-
12
- // TODO: Include link to documentation with example
13
- export class FontkitNotRegisteredError extends Error {
14
- constructor() {
15
- const msg =
16
- 'Input to `PDFDocument.embedFont` was a custom font, but no `fontkit` instance was found. You must register a `fontkit` instance with `PDFDocument.registerFontkit(...)` before embedding custom fonts.';
17
- super(msg);
18
- }
19
- }
20
-
21
- // TODO: Include link to documentation with example
22
- export class ForeignPageError extends Error {
23
- constructor() {
24
- const msg =
25
- 'A `page` passed to `PDFDocument.addPage` or `PDFDocument.insertPage` was from a different (foreign) PDF document. If you want to copy pages from one PDFDocument to another, you must use `PDFDocument.copyPages(...)` to copy the pages before adding or inserting them.';
26
- super(msg);
27
- }
28
- }
29
-
30
- // TODO: Include link to documentation with example
31
- export class RemovePageFromEmptyDocumentError extends Error {
32
- constructor() {
33
- const msg = 'PDFDocument has no pages so `PDFDocument.removePage` cannot be called';
34
- super(msg);
35
- }
36
- }
37
-
38
- export class NoSuchFieldError extends Error {
39
- constructor(name: string) {
40
- const msg = `PDFDocument has no form field with the name "${name}"`;
41
- super(msg);
42
- }
43
- }
44
-
45
- export class UnexpectedFieldTypeError extends Error {
46
- constructor(name: string, expected: any, actual: any) {
47
- const expectedType = expected?.name;
48
- const actualType = actual?.constructor?.name ?? actual;
49
- const msg =
50
- `Expected field "${name}" to be of type ${expectedType}, ` +
51
- `but it is actually of type ${actualType}`;
52
- super(msg);
53
- }
54
- }
55
-
56
- export class MissingOnValueCheckError extends Error {
57
- constructor(onValue: any) {
58
- const msg = `Failed to select check box due to missing onValue: "${onValue}"`;
59
- super(msg);
60
- }
61
- }
62
-
63
- export class FieldAlreadyExistsError extends Error {
64
- constructor(name: string) {
65
- const msg = `A field already exists with the specified name: "${name}"`;
66
- super(msg);
67
- }
68
- }
69
-
70
- export class InvalidFieldNamePartError extends Error {
71
- constructor(namePart: string) {
72
- const msg = `Field name contains invalid component: "${namePart}"`;
73
- super(msg);
74
- }
75
- }
76
-
77
- export class FieldExistsAsNonTerminalError extends Error {
78
- constructor(name: string) {
79
- const msg = `A non-terminal field already exists with the specified name: "${name}"`;
80
- super(msg);
81
- }
82
- }
83
-
84
- export class RichTextFieldReadError extends Error {
85
- constructor(fieldName: string) {
86
- const msg = `Reading rich text fields is not supported: Attempted to read rich text field: ${fieldName}`;
87
- super(msg);
88
- }
89
- }
90
-
91
- export class CombedTextLayoutError extends Error {
92
- constructor(lineLength: number, cellCount: number) {
93
- const msg = `Failed to layout combed text as lineLength=${lineLength} is greater than cellCount=${cellCount}`;
94
- super(msg);
95
- }
96
- }
97
-
98
- export class ExceededMaxLengthError extends Error {
99
- constructor(textLength: number, maxLength: number, name: string) {
100
- const msg = `Attempted to set text with length=${textLength} for TextField with maxLength=${maxLength} and name=${name}`;
101
- super(msg);
102
- }
103
- }
104
-
105
- export class InvalidMaxLengthError extends Error {
106
- constructor(textLength: number, maxLength: number, name: string) {
107
- const msg = `Attempted to set maxLength=${maxLength}, which is less than ${textLength}, the length of this field's current value (name=${name})`;
108
- super(msg);
109
- }
110
- }
@@ -1,242 +0,0 @@
1
- import PDFDocument from '../PDFDocument';
2
- import PDFPage from '../PDFPage';
3
- import PDFFont from '../PDFFont';
4
- import PDFImage from '../PDFImage';
5
- import { ImageAlignment } from '../image/alignment';
6
- import {
7
- AppearanceProviderFor,
8
- normalizeAppearance,
9
- defaultButtonAppearanceProvider,
10
- } from './appearances';
11
- import PDFField, { FieldAppearanceOptions, assertFieldAppearanceOptions } from './PDFField';
12
- import { rgb } from '../colors';
13
- import { degrees } from '../rotations';
14
-
15
- import { PDFRef, PDFStream, PDFAcroPushButton, PDFWidgetAnnotation } from '../../core';
16
- import { assertIs, assertOrUndefined, assertPositive } from '../../utils';
17
-
18
- /**
19
- * Represents a button field of a [[PDFForm]].
20
- *
21
- * [[PDFButton]] fields are interactive controls that users can click with their
22
- * mouse. This type of [[PDFField]] is not stateful. The purpose of a button
23
- * is to perform an action when the user clicks on it, such as opening a print
24
- * modal or resetting the form. Buttons are typically rectangular in shape and
25
- * have a text label describing the action that they perform when clicked.
26
- */
27
- export default class PDFButton extends PDFField {
28
- /**
29
- * > **NOTE:** You probably don't want to call this method directly. Instead,
30
- * > consider using the [[PDFForm.getButton]] method, which will create an
31
- * > instance of [[PDFButton]] for you.
32
- *
33
- * Create an instance of [[PDFButton]] from an existing acroPushButton and ref
34
- *
35
- * @param acroPushButton The underlying `PDFAcroPushButton` for this button.
36
- * @param ref The unique reference for this button.
37
- * @param doc The document to which this button will belong.
38
- */
39
- static of = (acroPushButton: PDFAcroPushButton, ref: PDFRef, doc: PDFDocument) =>
40
- new PDFButton(acroPushButton, ref, doc);
41
-
42
- /** The low-level PDFAcroPushButton wrapped by this button. */
43
- readonly acroField: PDFAcroPushButton;
44
-
45
- private constructor(acroPushButton: PDFAcroPushButton, ref: PDFRef, doc: PDFDocument) {
46
- super(acroPushButton, ref, doc);
47
-
48
- assertIs(acroPushButton, 'acroButton', [[PDFAcroPushButton, 'PDFAcroPushButton']]);
49
-
50
- this.acroField = acroPushButton;
51
- }
52
-
53
- /**
54
- * Display an image inside the bounds of this button's widgets. For example:
55
- * ```js
56
- * const pngImage = await pdfDoc.embedPng(...)
57
- * const button = form.getButton('some.button.field')
58
- * button.setImage(pngImage, ImageAlignment.Center)
59
- * ```
60
- * This will update the appearances streams for each of this button's widgets.
61
- * @param image The image that should be displayed.
62
- * @param alignment The alignment of the image.
63
- */
64
- setImage(image: PDFImage, alignment = ImageAlignment.Center) {
65
- const widgets = this.acroField.getWidgets();
66
- for (let idx = 0, len = widgets.length; idx < len; idx++) {
67
- const widget = widgets[idx];
68
- const streamRef = this.createImageAppearanceStream(widget, image, alignment);
69
- this.updateWidgetAppearances(widget, { normal: streamRef });
70
- }
71
-
72
- this.markAsClean();
73
- }
74
-
75
- /**
76
- * Set the font size for this field. Larger font sizes will result in larger
77
- * text being displayed when PDF readers render this button. Font sizes may
78
- * be integer or floating point numbers. Supplying a negative font size will
79
- * cause this method to throw an error.
80
- *
81
- * For example:
82
- * ```js
83
- * const button = form.getButton('some.button.field')
84
- * button.setFontSize(4)
85
- * button.setFontSize(15.7)
86
- * ```
87
- *
88
- * > This method depends upon the existence of a default appearance
89
- * > (`/DA`) string. If this field does not have a default appearance string,
90
- * > or that string does not contain a font size (via the `Tf` operator),
91
- * > then this method will throw an error.
92
- *
93
- * @param fontSize The font size to be used when rendering text in this field.
94
- */
95
- setFontSize(fontSize: number) {
96
- assertPositive(fontSize, 'fontSize');
97
- this.acroField.setFontSize(fontSize);
98
- this.markAsDirty();
99
- }
100
-
101
- /**
102
- * Show this button on the specified page with the given text. For example:
103
- * ```js
104
- * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)
105
- * const page = pdfDoc.addPage()
106
- *
107
- * const form = pdfDoc.getForm()
108
- * const button = form.createButton('some.button.field')
109
- *
110
- * button.addToPage('Do Stuff', page, {
111
- * x: 50,
112
- * y: 75,
113
- * width: 200,
114
- * height: 100,
115
- * textColor: rgb(1, 0, 0),
116
- * backgroundColor: rgb(0, 1, 0),
117
- * borderColor: rgb(0, 0, 1),
118
- * borderWidth: 2,
119
- * rotate: degrees(90),
120
- * font: ubuntuFont,
121
- * })
122
- * ```
123
- * This will create a new widget for this button field.
124
- * @param text The text to be displayed for this button widget.
125
- * @param page The page to which this button widget should be added.
126
- * @param options The options to be used when adding this button widget.
127
- */
128
- addToPage(
129
- // TODO: This needs to be optional, e.g. for image buttons
130
- text: string,
131
- page: PDFPage,
132
- options?: FieldAppearanceOptions,
133
- ) {
134
- assertOrUndefined(text, 'text', ['string']);
135
- assertOrUndefined(page, 'page', [[PDFPage, 'PDFPage']]);
136
- assertFieldAppearanceOptions(options);
137
-
138
- // Create a widget for this button
139
- const widget = this.createWidget({
140
- x: (options?.x ?? 0) - (options?.borderWidth ?? 0) / 2,
141
- y: (options?.y ?? 0) - (options?.borderWidth ?? 0) / 2,
142
- width: options?.width ?? 100,
143
- height: options?.height ?? 50,
144
- textColor: options?.textColor ?? rgb(0, 0, 0),
145
- backgroundColor: options?.backgroundColor ?? rgb(0.75, 0.75, 0.75),
146
- borderColor: options?.borderColor,
147
- borderWidth: options?.borderWidth ?? 0,
148
- rotate: options?.rotate ?? degrees(0),
149
- caption: text,
150
- hidden: options?.hidden,
151
- page: page.ref,
152
- });
153
- const widgetRef = this.doc.context.register(widget.dict);
154
-
155
- // Add widget to this field
156
- this.acroField.addWidget(widgetRef);
157
-
158
- // Set appearance streams for widget
159
- const font = options?.font ?? this.doc.getForm().getDefaultFont();
160
- this.updateWidgetAppearance(widget, font);
161
-
162
- // Add widget to the given page
163
- page.node.addAnnot(widgetRef);
164
- }
165
-
166
- /**
167
- * Returns `true` if this button has been marked as dirty, or if any of this
168
- * button's widgets do not have an appearance stream. For example:
169
- * ```js
170
- * const button = form.getButton('some.button.field')
171
- * if (button.needsAppearancesUpdate()) console.log('Needs update')
172
- * ```
173
- * @returns Whether or not this button needs an appearance update.
174
- */
175
- needsAppearancesUpdate(): boolean {
176
- if (this.isDirty()) return true;
177
-
178
- const widgets = this.acroField.getWidgets();
179
- for (let idx = 0, len = widgets.length; idx < len; idx++) {
180
- const widget = widgets[idx];
181
- const hasAppearances = widget.getAppearances()?.normal instanceof PDFStream;
182
- if (!hasAppearances) return true;
183
- }
184
-
185
- return false;
186
- }
187
-
188
- /**
189
- * Update the appearance streams for each of this button's widgets using
190
- * the default appearance provider for buttons. For example:
191
- * ```js
192
- * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)
193
- * const button = form.getButton('some.button.field')
194
- * button.defaultUpdateAppearances(helvetica)
195
- * ```
196
- * @param font The font to be used for creating the appearance streams.
197
- */
198
- defaultUpdateAppearances(font: PDFFont) {
199
- assertIs(font, 'font', [[PDFFont, 'PDFFont']]);
200
- this.updateAppearances(font);
201
- }
202
-
203
- /**
204
- * Update the appearance streams for each of this button's widgets using
205
- * the given appearance provider. If no `provider` is passed, the default
206
- * appearance provider for buttons will be used. For example:
207
- * ```js
208
- * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)
209
- * const button = form.getButton('some.button.field')
210
- * button.updateAppearances(helvetica, (field, widget, font) => {
211
- * ...
212
- * return {
213
- * normal: drawButton(...),
214
- * down: drawButton(...),
215
- * }
216
- * })
217
- * ```
218
- * @param font The font to be used for creating the appearance streams.
219
- * @param provider Optionally, the appearance provider to be used for
220
- * generating the contents of the appearance streams.
221
- */
222
- updateAppearances(font: PDFFont, provider?: AppearanceProviderFor<PDFButton>) {
223
- assertIs(font, 'font', [[PDFFont, 'PDFFont']]);
224
- assertOrUndefined(provider, 'provider', [Function]);
225
-
226
- const widgets = this.acroField.getWidgets();
227
- for (let idx = 0, len = widgets.length; idx < len; idx++) {
228
- const widget = widgets[idx];
229
- this.updateWidgetAppearance(widget, font, provider);
230
- }
231
- }
232
-
233
- private updateWidgetAppearance(
234
- widget: PDFWidgetAnnotation,
235
- font: PDFFont,
236
- provider?: AppearanceProviderFor<PDFButton>,
237
- ) {
238
- const apProvider = provider ?? defaultButtonAppearanceProvider;
239
- const appearances = normalizeAppearance(apProvider(this, widget, font));
240
- this.updateWidgetAppearanceWithFont(widget, font, appearances);
241
- }
242
- }