@pdfme/pdf-lib 5.4.0-dev.63 → 5.4.0-dev.65

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 (487) hide show
  1. package/dist/cjs/src/api/PDFDocument.js +3 -11
  2. package/dist/cjs/src/api/PDFDocument.js.map +1 -1
  3. package/dist/cjs/src/api/PDFEmbeddedFile.js.map +1 -1
  4. package/dist/cjs/src/api/PDFEmbeddedPage.js.map +1 -1
  5. package/dist/cjs/src/api/PDFFont.js.map +1 -1
  6. package/dist/cjs/src/api/PDFJavaScript.js.map +1 -1
  7. package/dist/cjs/src/api/PDFPage.js +16 -42
  8. package/dist/cjs/src/api/PDFPage.js.map +1 -1
  9. package/dist/cjs/src/api/colors.js.map +1 -1
  10. package/dist/cjs/src/api/errors.js.map +1 -1
  11. package/dist/cjs/src/api/form/PDFButton.js +1 -3
  12. package/dist/cjs/src/api/form/PDFButton.js.map +1 -1
  13. package/dist/cjs/src/api/form/PDFCheckBox.js +1 -3
  14. package/dist/cjs/src/api/form/PDFCheckBox.js.map +1 -1
  15. package/dist/cjs/src/api/form/PDFDropdown.js +1 -3
  16. package/dist/cjs/src/api/form/PDFDropdown.js.map +1 -1
  17. package/dist/cjs/src/api/form/PDFField.js +4 -10
  18. package/dist/cjs/src/api/form/PDFField.js.map +1 -1
  19. package/dist/cjs/src/api/form/PDFForm.js +1 -3
  20. package/dist/cjs/src/api/form/PDFForm.js.map +1 -1
  21. package/dist/cjs/src/api/form/PDFOptionList.js.map +1 -1
  22. package/dist/cjs/src/api/form/PDFRadioGroup.js +1 -3
  23. package/dist/cjs/src/api/form/PDFRadioGroup.js.map +1 -1
  24. package/dist/cjs/src/api/form/PDFSignature.js +1 -3
  25. package/dist/cjs/src/api/form/PDFSignature.js.map +1 -1
  26. package/dist/cjs/src/api/form/PDFTextField.js.map +1 -1
  27. package/dist/cjs/src/api/form/appearances.js.map +1 -1
  28. package/dist/cjs/src/api/operations.js.map +1 -1
  29. package/dist/cjs/src/api/operators.js +1 -5
  30. package/dist/cjs/src/api/operators.js.map +1 -1
  31. package/dist/cjs/src/api/rotations.js.map +1 -1
  32. package/dist/cjs/src/api/svg.js +25 -23
  33. package/dist/cjs/src/api/svg.js.map +1 -1
  34. package/dist/cjs/src/api/svgPath.js +1 -2
  35. package/dist/cjs/src/api/svgPath.js.map +1 -1
  36. package/dist/cjs/src/api/text/layout.js.map +1 -1
  37. package/dist/cjs/src/core/PDFContext.js.map +1 -1
  38. package/dist/cjs/src/core/PDFObjectCopier.js.map +1 -1
  39. package/dist/cjs/src/core/acroform/PDFAcroButton.js +1 -2
  40. package/dist/cjs/src/core/acroform/PDFAcroButton.js.map +1 -1
  41. package/dist/cjs/src/core/acroform/PDFAcroCheckBox.js.map +1 -1
  42. package/dist/cjs/src/core/acroform/PDFAcroChoice.js.map +1 -1
  43. package/dist/cjs/src/core/acroform/PDFAcroComboBox.js.map +1 -1
  44. package/dist/cjs/src/core/acroform/PDFAcroField.js.map +1 -1
  45. package/dist/cjs/src/core/acroform/PDFAcroForm.js.map +1 -1
  46. package/dist/cjs/src/core/acroform/PDFAcroListBox.js.map +1 -1
  47. package/dist/cjs/src/core/acroform/PDFAcroNonTerminal.js.map +1 -1
  48. package/dist/cjs/src/core/acroform/PDFAcroPushButton.js.map +1 -1
  49. package/dist/cjs/src/core/acroform/PDFAcroRadioButton.js.map +1 -1
  50. package/dist/cjs/src/core/acroform/PDFAcroSignature.js.map +1 -1
  51. package/dist/cjs/src/core/acroform/PDFAcroTerminal.js.map +1 -1
  52. package/dist/cjs/src/core/acroform/utils.js.map +1 -1
  53. package/dist/cjs/src/core/annotation/PDFWidgetAnnotation.js.map +1 -1
  54. package/dist/cjs/src/core/crypto.js +122 -179
  55. package/dist/cjs/src/core/crypto.js.map +1 -1
  56. package/dist/cjs/src/core/document/PDFCrossRefSection.js.map +1 -1
  57. package/dist/cjs/src/core/document/PDFHeader.js.map +1 -1
  58. package/dist/cjs/src/core/document/PDFTrailer.js.map +1 -1
  59. package/dist/cjs/src/core/embedders/CMap.js.map +1 -1
  60. package/dist/cjs/src/core/embedders/CustomFontEmbedder.js +1 -2
  61. package/dist/cjs/src/core/embedders/CustomFontEmbedder.js.map +1 -1
  62. package/dist/cjs/src/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
  63. package/dist/cjs/src/core/embedders/FileEmbedder.js +3 -7
  64. package/dist/cjs/src/core/embedders/FileEmbedder.js.map +1 -1
  65. package/dist/cjs/src/core/embedders/JpegEmbedder.js +1 -3
  66. package/dist/cjs/src/core/embedders/JpegEmbedder.js.map +1 -1
  67. package/dist/cjs/src/core/embedders/PDFPageEmbedder.js +11 -7
  68. package/dist/cjs/src/core/embedders/PDFPageEmbedder.js.map +1 -1
  69. package/dist/cjs/src/core/embedders/StandardFontEmbedder.js.map +1 -1
  70. package/dist/cjs/src/core/errors.js +1 -3
  71. package/dist/cjs/src/core/errors.js.map +1 -1
  72. package/dist/cjs/src/core/index.js.map +1 -1
  73. package/dist/cjs/src/core/interactive/ViewerPreferences.js.map +1 -1
  74. package/dist/cjs/src/core/objects/PDFArray.js.map +1 -1
  75. package/dist/cjs/src/core/objects/PDFDict.js.map +1 -1
  76. package/dist/cjs/src/core/objects/PDFName.js +1 -3
  77. package/dist/cjs/src/core/objects/PDFName.js.map +1 -1
  78. package/dist/cjs/src/core/objects/PDFRawStream.js.map +1 -1
  79. package/dist/cjs/src/core/objects/PDFRef.js.map +1 -1
  80. package/dist/cjs/src/core/objects/PDFStream.js.map +1 -1
  81. package/dist/cjs/src/core/operators/PDFOperator.js.map +1 -1
  82. package/dist/cjs/src/core/parser/PDFObjectParser.js +1 -2
  83. package/dist/cjs/src/core/parser/PDFObjectParser.js.map +1 -1
  84. package/dist/cjs/src/core/parser/PDFObjectStreamParser.js.map +1 -1
  85. package/dist/cjs/src/core/parser/PDFParser.js +1 -2
  86. package/dist/cjs/src/core/parser/PDFParser.js.map +1 -1
  87. package/dist/cjs/src/core/parser/PDFXRefStreamParser.js.map +1 -1
  88. package/dist/cjs/src/core/streams/Ascii85Stream.js.map +1 -1
  89. package/dist/cjs/src/core/streams/DecryptStream.js.map +1 -1
  90. package/dist/cjs/src/core/streams/FlateStream.js.map +1 -1
  91. package/dist/cjs/src/core/streams/LZWStream.js.map +1 -1
  92. package/dist/cjs/src/core/streams/Stream.js.map +1 -1
  93. package/dist/cjs/src/core/streams/decode.js +1 -1
  94. package/dist/cjs/src/core/streams/decode.js.map +1 -1
  95. package/dist/cjs/src/core/structures/PDFCatalog.js.map +1 -1
  96. package/dist/cjs/src/core/structures/PDFCrossRefStream.js.map +1 -1
  97. package/dist/cjs/src/core/structures/PDFFlateStream.js.map +1 -1
  98. package/dist/cjs/src/core/structures/PDFObjectStream.js +1 -4
  99. package/dist/cjs/src/core/structures/PDFObjectStream.js.map +1 -1
  100. package/dist/cjs/src/core/structures/PDFPageLeaf.js +1 -6
  101. package/dist/cjs/src/core/structures/PDFPageLeaf.js.map +1 -1
  102. package/dist/cjs/src/core/structures/PDFPageTree.js +1 -1
  103. package/dist/cjs/src/core/structures/PDFPageTree.js.map +1 -1
  104. package/dist/cjs/src/core/syntax/Keywords.js +4 -30
  105. package/dist/cjs/src/core/syntax/Keywords.js.map +1 -1
  106. package/dist/cjs/src/core/writers/PDFStreamWriter.js.map +1 -1
  107. package/dist/cjs/src/core/writers/PDFWriter.js.map +1 -1
  108. package/dist/cjs/src/types/matrix.js.map +1 -1
  109. package/dist/cjs/src/utils/arrays.js +2 -5
  110. package/dist/cjs/src/utils/arrays.js.map +1 -1
  111. package/dist/cjs/src/utils/base64.js.map +1 -1
  112. package/dist/cjs/src/utils/elements/Arc.js +3 -6
  113. package/dist/cjs/src/utils/elements/Arc.js.map +1 -1
  114. package/dist/cjs/src/utils/elements/Circle.js.map +1 -1
  115. package/dist/cjs/src/utils/elements/Ellipse.js +1 -1
  116. package/dist/cjs/src/utils/elements/Ellipse.js.map +1 -1
  117. package/dist/cjs/src/utils/elements/Line.js +1 -3
  118. package/dist/cjs/src/utils/elements/Line.js.map +1 -1
  119. package/dist/cjs/src/utils/elements/Segment.js +1 -2
  120. package/dist/cjs/src/utils/elements/Segment.js.map +1 -1
  121. package/dist/cjs/src/utils/intersections.js.map +1 -1
  122. package/dist/cjs/src/utils/maths.js.map +1 -1
  123. package/dist/cjs/src/utils/strings.js.map +1 -1
  124. package/dist/cjs/src/utils/unicode.js.map +1 -1
  125. package/dist/cjs/src/utils/validators.js.map +1 -1
  126. package/dist/esm/src/api/PDFDocument.js +3 -11
  127. package/dist/esm/src/api/PDFDocument.js.map +1 -1
  128. package/dist/esm/src/api/PDFEmbeddedFile.js.map +1 -1
  129. package/dist/esm/src/api/PDFEmbeddedPage.js.map +1 -1
  130. package/dist/esm/src/api/PDFFont.js +1 -1
  131. package/dist/esm/src/api/PDFFont.js.map +1 -1
  132. package/dist/esm/src/api/PDFJavaScript.js.map +1 -1
  133. package/dist/esm/src/api/PDFPage.js +16 -42
  134. package/dist/esm/src/api/PDFPage.js.map +1 -1
  135. package/dist/esm/src/api/colors.js.map +1 -1
  136. package/dist/esm/src/api/errors.js.map +1 -1
  137. package/dist/esm/src/api/form/PDFButton.js +3 -5
  138. package/dist/esm/src/api/form/PDFButton.js.map +1 -1
  139. package/dist/esm/src/api/form/PDFCheckBox.js +3 -5
  140. package/dist/esm/src/api/form/PDFCheckBox.js.map +1 -1
  141. package/dist/esm/src/api/form/PDFDropdown.js +2 -4
  142. package/dist/esm/src/api/form/PDFDropdown.js.map +1 -1
  143. package/dist/esm/src/api/form/PDFField.js +4 -10
  144. package/dist/esm/src/api/form/PDFField.js.map +1 -1
  145. package/dist/esm/src/api/form/PDFForm.js +2 -4
  146. package/dist/esm/src/api/form/PDFForm.js.map +1 -1
  147. package/dist/esm/src/api/form/PDFOptionList.js +2 -2
  148. package/dist/esm/src/api/form/PDFOptionList.js.map +1 -1
  149. package/dist/esm/src/api/form/PDFRadioGroup.js +2 -4
  150. package/dist/esm/src/api/form/PDFRadioGroup.js.map +1 -1
  151. package/dist/esm/src/api/form/PDFSignature.js +1 -3
  152. package/dist/esm/src/api/form/PDFSignature.js.map +1 -1
  153. package/dist/esm/src/api/form/PDFTextField.js +2 -2
  154. package/dist/esm/src/api/form/PDFTextField.js.map +1 -1
  155. package/dist/esm/src/api/form/appearances.js +1 -1
  156. package/dist/esm/src/api/form/appearances.js.map +1 -1
  157. package/dist/esm/src/api/operations.js.map +1 -1
  158. package/dist/esm/src/api/operators.js +2 -6
  159. package/dist/esm/src/api/operators.js.map +1 -1
  160. package/dist/esm/src/api/rotations.js.map +1 -1
  161. package/dist/esm/src/api/svg.js +26 -24
  162. package/dist/esm/src/api/svg.js.map +1 -1
  163. package/dist/esm/src/api/svgPath.js +2 -3
  164. package/dist/esm/src/api/svgPath.js.map +1 -1
  165. package/dist/esm/src/api/text/layout.js +1 -1
  166. package/dist/esm/src/api/text/layout.js.map +1 -1
  167. package/dist/esm/src/core/PDFContext.js.map +1 -1
  168. package/dist/esm/src/core/PDFObjectCopier.js.map +1 -1
  169. package/dist/esm/src/core/acroform/PDFAcroButton.js +1 -2
  170. package/dist/esm/src/core/acroform/PDFAcroButton.js.map +1 -1
  171. package/dist/esm/src/core/acroform/PDFAcroCheckBox.js.map +1 -1
  172. package/dist/esm/src/core/acroform/PDFAcroChoice.js.map +1 -1
  173. package/dist/esm/src/core/acroform/PDFAcroComboBox.js.map +1 -1
  174. package/dist/esm/src/core/acroform/PDFAcroField.js.map +1 -1
  175. package/dist/esm/src/core/acroform/PDFAcroForm.js.map +1 -1
  176. package/dist/esm/src/core/acroform/PDFAcroListBox.js.map +1 -1
  177. package/dist/esm/src/core/acroform/PDFAcroNonTerminal.js.map +1 -1
  178. package/dist/esm/src/core/acroform/PDFAcroPushButton.js.map +1 -1
  179. package/dist/esm/src/core/acroform/PDFAcroRadioButton.js.map +1 -1
  180. package/dist/esm/src/core/acroform/PDFAcroSignature.js.map +1 -1
  181. package/dist/esm/src/core/acroform/PDFAcroTerminal.js.map +1 -1
  182. package/dist/esm/src/core/acroform/utils.js.map +1 -1
  183. package/dist/esm/src/core/annotation/PDFWidgetAnnotation.js.map +1 -1
  184. package/dist/esm/src/core/crypto.js +122 -179
  185. package/dist/esm/src/core/crypto.js.map +1 -1
  186. package/dist/esm/src/core/document/PDFCrossRefSection.js.map +1 -1
  187. package/dist/esm/src/core/document/PDFHeader.js.map +1 -1
  188. package/dist/esm/src/core/document/PDFTrailer.js.map +1 -1
  189. package/dist/esm/src/core/embedders/CMap.js +1 -1
  190. package/dist/esm/src/core/embedders/CMap.js.map +1 -1
  191. package/dist/esm/src/core/embedders/CustomFontEmbedder.js +2 -3
  192. package/dist/esm/src/core/embedders/CustomFontEmbedder.js.map +1 -1
  193. package/dist/esm/src/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
  194. package/dist/esm/src/core/embedders/FileEmbedder.js +3 -7
  195. package/dist/esm/src/core/embedders/FileEmbedder.js.map +1 -1
  196. package/dist/esm/src/core/embedders/JpegEmbedder.js +1 -3
  197. package/dist/esm/src/core/embedders/JpegEmbedder.js.map +1 -1
  198. package/dist/esm/src/core/embedders/PDFPageEmbedder.js +12 -8
  199. package/dist/esm/src/core/embedders/PDFPageEmbedder.js.map +1 -1
  200. package/dist/esm/src/core/embedders/StandardFontEmbedder.js +1 -1
  201. package/dist/esm/src/core/embedders/StandardFontEmbedder.js.map +1 -1
  202. package/dist/esm/src/core/errors.js +1 -3
  203. package/dist/esm/src/core/errors.js.map +1 -1
  204. package/dist/esm/src/core/index.js +2 -2
  205. package/dist/esm/src/core/index.js.map +1 -1
  206. package/dist/esm/src/core/interactive/ViewerPreferences.js +1 -1
  207. package/dist/esm/src/core/interactive/ViewerPreferences.js.map +1 -1
  208. package/dist/esm/src/core/objects/PDFArray.js.map +1 -1
  209. package/dist/esm/src/core/objects/PDFDict.js.map +1 -1
  210. package/dist/esm/src/core/objects/PDFName.js +2 -4
  211. package/dist/esm/src/core/objects/PDFName.js.map +1 -1
  212. package/dist/esm/src/core/objects/PDFRawStream.js.map +1 -1
  213. package/dist/esm/src/core/objects/PDFRef.js.map +1 -1
  214. package/dist/esm/src/core/objects/PDFStream.js.map +1 -1
  215. package/dist/esm/src/core/operators/PDFOperator.js.map +1 -1
  216. package/dist/esm/src/core/parser/PDFObjectParser.js +1 -2
  217. package/dist/esm/src/core/parser/PDFObjectParser.js.map +1 -1
  218. package/dist/esm/src/core/parser/PDFObjectStreamParser.js.map +1 -1
  219. package/dist/esm/src/core/parser/PDFParser.js +1 -2
  220. package/dist/esm/src/core/parser/PDFParser.js.map +1 -1
  221. package/dist/esm/src/core/parser/PDFXRefStreamParser.js.map +1 -1
  222. package/dist/esm/src/core/streams/Ascii85Stream.js.map +1 -1
  223. package/dist/esm/src/core/streams/DecryptStream.js.map +1 -1
  224. package/dist/esm/src/core/streams/FlateStream.js.map +1 -1
  225. package/dist/esm/src/core/streams/LZWStream.js.map +1 -1
  226. package/dist/esm/src/core/streams/Stream.js.map +1 -1
  227. package/dist/esm/src/core/streams/decode.js +1 -1
  228. package/dist/esm/src/core/streams/decode.js.map +1 -1
  229. package/dist/esm/src/core/structures/PDFCatalog.js.map +1 -1
  230. package/dist/esm/src/core/structures/PDFCrossRefStream.js.map +1 -1
  231. package/dist/esm/src/core/structures/PDFFlateStream.js.map +1 -1
  232. package/dist/esm/src/core/structures/PDFObjectStream.js +1 -4
  233. package/dist/esm/src/core/structures/PDFObjectStream.js.map +1 -1
  234. package/dist/esm/src/core/structures/PDFPageLeaf.js +1 -6
  235. package/dist/esm/src/core/structures/PDFPageLeaf.js.map +1 -1
  236. package/dist/esm/src/core/structures/PDFPageTree.js +1 -1
  237. package/dist/esm/src/core/structures/PDFPageTree.js.map +1 -1
  238. package/dist/esm/src/core/syntax/Keywords.js +4 -30
  239. package/dist/esm/src/core/syntax/Keywords.js.map +1 -1
  240. package/dist/esm/src/core/writers/PDFStreamWriter.js.map +1 -1
  241. package/dist/esm/src/core/writers/PDFWriter.js.map +1 -1
  242. package/dist/esm/src/types/matrix.js.map +1 -1
  243. package/dist/esm/src/utils/arrays.js +2 -5
  244. package/dist/esm/src/utils/arrays.js.map +1 -1
  245. package/dist/esm/src/utils/base64.js.map +1 -1
  246. package/dist/esm/src/utils/elements/Arc.js +3 -6
  247. package/dist/esm/src/utils/elements/Arc.js.map +1 -1
  248. package/dist/esm/src/utils/elements/Circle.js +1 -1
  249. package/dist/esm/src/utils/elements/Circle.js.map +1 -1
  250. package/dist/esm/src/utils/elements/Ellipse.js +1 -1
  251. package/dist/esm/src/utils/elements/Ellipse.js.map +1 -1
  252. package/dist/esm/src/utils/elements/Line.js +1 -3
  253. package/dist/esm/src/utils/elements/Line.js.map +1 -1
  254. package/dist/esm/src/utils/elements/Segment.js +2 -3
  255. package/dist/esm/src/utils/elements/Segment.js.map +1 -1
  256. package/dist/esm/src/utils/intersections.js.map +1 -1
  257. package/dist/esm/src/utils/maths.js.map +1 -1
  258. package/dist/esm/src/utils/strings.js.map +1 -1
  259. package/dist/esm/src/utils/unicode.js.map +1 -1
  260. package/dist/esm/src/utils/validators.js.map +1 -1
  261. package/dist/node/src/api/PDFDocument.js +3 -11
  262. package/dist/node/src/api/PDFDocument.js.map +1 -1
  263. package/dist/node/src/api/PDFEmbeddedFile.js.map +1 -1
  264. package/dist/node/src/api/PDFEmbeddedPage.js.map +1 -1
  265. package/dist/node/src/api/PDFFont.js.map +1 -1
  266. package/dist/node/src/api/PDFJavaScript.js.map +1 -1
  267. package/dist/node/src/api/PDFPage.js +16 -42
  268. package/dist/node/src/api/PDFPage.js.map +1 -1
  269. package/dist/node/src/api/colors.js.map +1 -1
  270. package/dist/node/src/api/errors.js.map +1 -1
  271. package/dist/node/src/api/form/PDFButton.js +1 -3
  272. package/dist/node/src/api/form/PDFButton.js.map +1 -1
  273. package/dist/node/src/api/form/PDFCheckBox.js +1 -3
  274. package/dist/node/src/api/form/PDFCheckBox.js.map +1 -1
  275. package/dist/node/src/api/form/PDFDropdown.js +1 -3
  276. package/dist/node/src/api/form/PDFDropdown.js.map +1 -1
  277. package/dist/node/src/api/form/PDFField.js +4 -10
  278. package/dist/node/src/api/form/PDFField.js.map +1 -1
  279. package/dist/node/src/api/form/PDFForm.js +1 -3
  280. package/dist/node/src/api/form/PDFForm.js.map +1 -1
  281. package/dist/node/src/api/form/PDFOptionList.js.map +1 -1
  282. package/dist/node/src/api/form/PDFRadioGroup.js +1 -3
  283. package/dist/node/src/api/form/PDFRadioGroup.js.map +1 -1
  284. package/dist/node/src/api/form/PDFSignature.js +1 -3
  285. package/dist/node/src/api/form/PDFSignature.js.map +1 -1
  286. package/dist/node/src/api/form/PDFTextField.js.map +1 -1
  287. package/dist/node/src/api/form/appearances.js.map +1 -1
  288. package/dist/node/src/api/operations.js.map +1 -1
  289. package/dist/node/src/api/operators.js +1 -5
  290. package/dist/node/src/api/operators.js.map +1 -1
  291. package/dist/node/src/api/rotations.js.map +1 -1
  292. package/dist/node/src/api/svg.js +25 -23
  293. package/dist/node/src/api/svg.js.map +1 -1
  294. package/dist/node/src/api/svgPath.js +1 -2
  295. package/dist/node/src/api/svgPath.js.map +1 -1
  296. package/dist/node/src/api/text/layout.js.map +1 -1
  297. package/dist/node/src/core/PDFContext.js.map +1 -1
  298. package/dist/node/src/core/PDFObjectCopier.js.map +1 -1
  299. package/dist/node/src/core/acroform/PDFAcroButton.js +1 -2
  300. package/dist/node/src/core/acroform/PDFAcroButton.js.map +1 -1
  301. package/dist/node/src/core/acroform/PDFAcroCheckBox.js.map +1 -1
  302. package/dist/node/src/core/acroform/PDFAcroChoice.js.map +1 -1
  303. package/dist/node/src/core/acroform/PDFAcroComboBox.js.map +1 -1
  304. package/dist/node/src/core/acroform/PDFAcroField.js.map +1 -1
  305. package/dist/node/src/core/acroform/PDFAcroForm.js.map +1 -1
  306. package/dist/node/src/core/acroform/PDFAcroListBox.js.map +1 -1
  307. package/dist/node/src/core/acroform/PDFAcroNonTerminal.js.map +1 -1
  308. package/dist/node/src/core/acroform/PDFAcroPushButton.js.map +1 -1
  309. package/dist/node/src/core/acroform/PDFAcroRadioButton.js.map +1 -1
  310. package/dist/node/src/core/acroform/PDFAcroSignature.js.map +1 -1
  311. package/dist/node/src/core/acroform/PDFAcroTerminal.js.map +1 -1
  312. package/dist/node/src/core/acroform/utils.js.map +1 -1
  313. package/dist/node/src/core/annotation/PDFWidgetAnnotation.js.map +1 -1
  314. package/dist/node/src/core/crypto.js +122 -179
  315. package/dist/node/src/core/crypto.js.map +1 -1
  316. package/dist/node/src/core/document/PDFCrossRefSection.js.map +1 -1
  317. package/dist/node/src/core/document/PDFHeader.js.map +1 -1
  318. package/dist/node/src/core/document/PDFTrailer.js.map +1 -1
  319. package/dist/node/src/core/embedders/CMap.js.map +1 -1
  320. package/dist/node/src/core/embedders/CustomFontEmbedder.js +1 -2
  321. package/dist/node/src/core/embedders/CustomFontEmbedder.js.map +1 -1
  322. package/dist/node/src/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
  323. package/dist/node/src/core/embedders/FileEmbedder.js +3 -7
  324. package/dist/node/src/core/embedders/FileEmbedder.js.map +1 -1
  325. package/dist/node/src/core/embedders/JpegEmbedder.js +1 -3
  326. package/dist/node/src/core/embedders/JpegEmbedder.js.map +1 -1
  327. package/dist/node/src/core/embedders/PDFPageEmbedder.js +11 -7
  328. package/dist/node/src/core/embedders/PDFPageEmbedder.js.map +1 -1
  329. package/dist/node/src/core/embedders/StandardFontEmbedder.js.map +1 -1
  330. package/dist/node/src/core/errors.js +1 -3
  331. package/dist/node/src/core/errors.js.map +1 -1
  332. package/dist/node/src/core/index.js.map +1 -1
  333. package/dist/node/src/core/interactive/ViewerPreferences.js.map +1 -1
  334. package/dist/node/src/core/objects/PDFArray.js.map +1 -1
  335. package/dist/node/src/core/objects/PDFDict.js.map +1 -1
  336. package/dist/node/src/core/objects/PDFName.js +1 -3
  337. package/dist/node/src/core/objects/PDFName.js.map +1 -1
  338. package/dist/node/src/core/objects/PDFRawStream.js.map +1 -1
  339. package/dist/node/src/core/objects/PDFRef.js.map +1 -1
  340. package/dist/node/src/core/objects/PDFStream.js.map +1 -1
  341. package/dist/node/src/core/operators/PDFOperator.js.map +1 -1
  342. package/dist/node/src/core/parser/PDFObjectParser.js +1 -2
  343. package/dist/node/src/core/parser/PDFObjectParser.js.map +1 -1
  344. package/dist/node/src/core/parser/PDFObjectStreamParser.js.map +1 -1
  345. package/dist/node/src/core/parser/PDFParser.js +1 -2
  346. package/dist/node/src/core/parser/PDFParser.js.map +1 -1
  347. package/dist/node/src/core/parser/PDFXRefStreamParser.js.map +1 -1
  348. package/dist/node/src/core/streams/Ascii85Stream.js.map +1 -1
  349. package/dist/node/src/core/streams/DecryptStream.js.map +1 -1
  350. package/dist/node/src/core/streams/FlateStream.js.map +1 -1
  351. package/dist/node/src/core/streams/LZWStream.js.map +1 -1
  352. package/dist/node/src/core/streams/Stream.js.map +1 -1
  353. package/dist/node/src/core/streams/decode.js +1 -1
  354. package/dist/node/src/core/streams/decode.js.map +1 -1
  355. package/dist/node/src/core/structures/PDFCatalog.js.map +1 -1
  356. package/dist/node/src/core/structures/PDFCrossRefStream.js.map +1 -1
  357. package/dist/node/src/core/structures/PDFFlateStream.js.map +1 -1
  358. package/dist/node/src/core/structures/PDFObjectStream.js +1 -4
  359. package/dist/node/src/core/structures/PDFObjectStream.js.map +1 -1
  360. package/dist/node/src/core/structures/PDFPageLeaf.js +1 -6
  361. package/dist/node/src/core/structures/PDFPageLeaf.js.map +1 -1
  362. package/dist/node/src/core/structures/PDFPageTree.js +1 -1
  363. package/dist/node/src/core/structures/PDFPageTree.js.map +1 -1
  364. package/dist/node/src/core/syntax/Keywords.js +4 -30
  365. package/dist/node/src/core/syntax/Keywords.js.map +1 -1
  366. package/dist/node/src/core/writers/PDFStreamWriter.js.map +1 -1
  367. package/dist/node/src/core/writers/PDFWriter.js.map +1 -1
  368. package/dist/node/src/types/matrix.js.map +1 -1
  369. package/dist/node/src/utils/arrays.js +2 -5
  370. package/dist/node/src/utils/arrays.js.map +1 -1
  371. package/dist/node/src/utils/base64.js.map +1 -1
  372. package/dist/node/src/utils/elements/Arc.js +3 -6
  373. package/dist/node/src/utils/elements/Arc.js.map +1 -1
  374. package/dist/node/src/utils/elements/Circle.js.map +1 -1
  375. package/dist/node/src/utils/elements/Ellipse.js +1 -1
  376. package/dist/node/src/utils/elements/Ellipse.js.map +1 -1
  377. package/dist/node/src/utils/elements/Line.js +1 -3
  378. package/dist/node/src/utils/elements/Line.js.map +1 -1
  379. package/dist/node/src/utils/elements/Segment.js +1 -2
  380. package/dist/node/src/utils/elements/Segment.js.map +1 -1
  381. package/dist/node/src/utils/intersections.js.map +1 -1
  382. package/dist/node/src/utils/maths.js.map +1 -1
  383. package/dist/node/src/utils/strings.js.map +1 -1
  384. package/dist/node/src/utils/unicode.js.map +1 -1
  385. package/dist/node/src/utils/validators.js.map +1 -1
  386. package/dist/types/src/api/form/PDFField.d.ts +1 -1
  387. package/dist/types/src/core/index.d.ts +2 -2
  388. package/dist/types/src/core/streams/decode.d.ts +1 -1
  389. package/dist/types/src/core/writers/PDFWriter.d.ts +1 -4
  390. package/dist/types/src/types/matrix.d.ts +1 -8
  391. package/package.json +1 -1
  392. package/src/api/PDFDocument.ts +11 -44
  393. package/src/api/PDFEmbeddedFile.ts +1 -4
  394. package/src/api/PDFEmbeddedPage.ts +1 -5
  395. package/src/api/PDFFont.ts +1 -6
  396. package/src/api/PDFJavaScript.ts +2 -9
  397. package/src/api/PDFPage.ts +26 -93
  398. package/src/api/PDFPageOptions.ts +4 -4
  399. package/src/api/colors.ts +1 -6
  400. package/src/api/errors.ts +1 -2
  401. package/src/api/form/PDFButton.ts +9 -34
  402. package/src/api/form/PDFCheckBox.ts +4 -19
  403. package/src/api/form/PDFDropdown.ts +6 -21
  404. package/src/api/form/PDFField.ts +11 -41
  405. package/src/api/form/PDFForm.ts +11 -29
  406. package/src/api/form/PDFOptionList.ts +5 -21
  407. package/src/api/form/PDFRadioGroup.ts +6 -22
  408. package/src/api/form/PDFSignature.ts +4 -13
  409. package/src/api/form/PDFTextField.ts +5 -20
  410. package/src/api/form/appearances.ts +33 -33
  411. package/src/api/operations.ts +23 -25
  412. package/src/api/operators.ts +11 -43
  413. package/src/api/rotations.ts +1 -4
  414. package/src/api/svg.ts +145 -195
  415. package/src/api/svgPath.ts +5 -32
  416. package/src/api/text/layout.ts +3 -18
  417. package/src/core/PDFContext.ts +10 -36
  418. package/src/core/PDFObjectCopier.ts +1 -2
  419. package/src/core/acroform/PDFAcroButton.ts +3 -13
  420. package/src/core/acroform/PDFAcroCheckBox.ts +1 -2
  421. package/src/core/acroform/PDFAcroChoice.ts +2 -9
  422. package/src/core/acroform/PDFAcroComboBox.ts +1 -2
  423. package/src/core/acroform/PDFAcroField.ts +1 -2
  424. package/src/core/acroform/PDFAcroForm.ts +2 -5
  425. package/src/core/acroform/PDFAcroListBox.ts +1 -2
  426. package/src/core/acroform/PDFAcroNonTerminal.ts +1 -2
  427. package/src/core/acroform/PDFAcroPushButton.ts +1 -2
  428. package/src/core/acroform/PDFAcroRadioButton.ts +1 -2
  429. package/src/core/acroform/PDFAcroSignature.ts +1 -2
  430. package/src/core/acroform/PDFAcroTerminal.ts +1 -2
  431. package/src/core/acroform/utils.ts +3 -9
  432. package/src/core/annotation/PDFWidgetAnnotation.ts +1 -2
  433. package/src/core/crypto.ts +143 -287
  434. package/src/core/document/PDFCrossRefSection.ts +3 -15
  435. package/src/core/document/PDFHeader.ts +1 -2
  436. package/src/core/document/PDFTrailer.ts +1 -2
  437. package/src/core/embedders/CMap.ts +1 -6
  438. package/src/core/embedders/CustomFontEmbedder.ts +4 -16
  439. package/src/core/embedders/CustomFontSubsetEmbedder.ts +2 -13
  440. package/src/core/embedders/FileEmbedder.ts +5 -23
  441. package/src/core/embedders/JpegEmbedder.ts +2 -11
  442. package/src/core/embedders/PDFPageEmbedder.ts +12 -14
  443. package/src/core/embedders/StandardFontEmbedder.ts +3 -12
  444. package/src/core/errors.ts +1 -3
  445. package/src/core/index.ts +2 -8
  446. package/src/core/interactive/ViewerPreferences.ts +4 -18
  447. package/src/core/objects/PDFArray.ts +2 -8
  448. package/src/core/objects/PDFDict.ts +3 -11
  449. package/src/core/objects/PDFName.ts +2 -9
  450. package/src/core/objects/PDFRawStream.ts +3 -10
  451. package/src/core/objects/PDFRef.ts +1 -5
  452. package/src/core/objects/PDFStream.ts +2 -8
  453. package/src/core/operators/PDFOperator.ts +2 -9
  454. package/src/core/parser/PDFObjectParser.ts +5 -14
  455. package/src/core/parser/PDFObjectStreamParser.ts +2 -4
  456. package/src/core/parser/PDFParser.ts +5 -21
  457. package/src/core/parser/PDFXRefStreamParser.ts +1 -2
  458. package/src/core/streams/Ascii85Stream.ts +1 -2
  459. package/src/core/streams/DecryptStream.ts +2 -9
  460. package/src/core/streams/FlateStream.ts +4 -14
  461. package/src/core/streams/LZWStream.ts +2 -9
  462. package/src/core/streams/Stream.ts +2 -8
  463. package/src/core/streams/decode.ts +2 -10
  464. package/src/core/structures/PDFCatalog.ts +2 -6
  465. package/src/core/structures/PDFCrossRefStream.ts +2 -10
  466. package/src/core/structures/PDFFlateStream.ts +1 -4
  467. package/src/core/structures/PDFObjectStream.ts +4 -14
  468. package/src/core/structures/PDFPageLeaf.ts +9 -28
  469. package/src/core/structures/PDFPageTree.ts +2 -5
  470. package/src/core/syntax/Keywords.ts +4 -30
  471. package/src/core/writers/PDFStreamWriter.ts +2 -11
  472. package/src/core/writers/PDFWriter.ts +2 -6
  473. package/src/types/fontkit.ts +3 -16
  474. package/src/types/index.ts +6 -14
  475. package/src/types/matrix.ts +1 -8
  476. package/src/utils/arrays.ts +3 -8
  477. package/src/utils/base64.ts +2 -4
  478. package/src/utils/elements/Arc.ts +5 -15
  479. package/src/utils/elements/Circle.ts +1 -9
  480. package/src/utils/elements/Ellipse.ts +6 -24
  481. package/src/utils/elements/Line.ts +1 -3
  482. package/src/utils/elements/Segment.ts +3 -14
  483. package/src/utils/intersections.ts +20 -65
  484. package/src/utils/maths.ts +10 -22
  485. package/src/utils/strings.ts +6 -16
  486. package/src/utils/unicode.ts +9 -22
  487. package/src/utils/validators.ts +9 -45
package/src/api/svg.ts CHANGED
@@ -6,15 +6,12 @@ import {
6
6
  NodeType,
7
7
  } from 'node-html-better-parser';
8
8
  import { Color, colorString } from './colors';
9
- import {
10
- Degrees,
11
- degreesToRadians,
12
- } from './rotations';
9
+ import { Degrees, degreesToRadians } from './rotations';
13
10
  import PDFFont from './PDFFont';
14
11
  import PDFPage from './PDFPage';
15
12
  import { PDFPageDrawSVGElementOptions } from './PDFPageOptions';
16
13
  import { LineCapStyle, LineJoinStyle, FillRule } from './operators';
17
- import { TransformationMatrix, identityMatrix } from '../types/matrix'
14
+ import { TransformationMatrix, identityMatrix } from '../types/matrix';
18
15
  import { Coordinates, Space } from '../types';
19
16
 
20
17
  interface Position {
@@ -77,9 +74,9 @@ type SVGAttributes = {
77
74
  };
78
75
 
79
76
  type TransformAttributes = {
80
- matrix: TransformationMatrix
81
- clipSpaces: Space[]
82
- }
77
+ matrix: TransformationMatrix;
78
+ clipSpaces: Space[];
79
+ };
83
80
 
84
81
  export type SVGElement = HTMLElement & {
85
82
  svgAttributes: InheritedAttributes & SVGAttributes & TransformAttributes;
@@ -91,7 +88,7 @@ interface SVGElementToDrawMap {
91
88
 
92
89
  const combineMatrix = (
93
90
  [a, b, c, d, e, f]: TransformationMatrix,
94
- [a2, b2, c2, d2, e2, f2]: TransformationMatrix
91
+ [a2, b2, c2, d2, e2, f2]: TransformationMatrix,
95
92
  ): TransformationMatrix => [
96
93
  a * a2 + c * b2,
97
94
  b * a2 + d * b2,
@@ -99,66 +96,89 @@ const combineMatrix = (
99
96
  b * c2 + d * d2,
100
97
  a * e2 + c * f2 + e,
101
98
  b * e2 + d * f2 + f,
102
- ]
99
+ ];
103
100
 
104
- const applyTransformation = ([a, b, c, d, e, f]: TransformationMatrix, { x, y }: Coordinates): Coordinates => ({
101
+ const applyTransformation = (
102
+ [a, b, c, d, e, f]: TransformationMatrix,
103
+ { x, y }: Coordinates,
104
+ ): Coordinates => ({
105
105
  x: a * x + c * y + e,
106
- y: b * x + d * y + f
107
- })
108
-
106
+ y: b * x + d * y + f,
107
+ });
109
108
 
110
- type TransformationName = 'scale' | 'scaleX' | 'scaleY' | 'translate' | 'translateX' | 'translateY' | 'rotate' | 'skewX' | 'skewY' | 'matrix'
111
- const transformationToMatrix = (name: TransformationName, args: number[]) : TransformationMatrix => {
109
+ type TransformationName =
110
+ | 'scale'
111
+ | 'scaleX'
112
+ | 'scaleY'
113
+ | 'translate'
114
+ | 'translateX'
115
+ | 'translateY'
116
+ | 'rotate'
117
+ | 'skewX'
118
+ | 'skewY'
119
+ | 'matrix';
120
+ const transformationToMatrix = (name: TransformationName, args: number[]): TransformationMatrix => {
112
121
  switch (name) {
113
122
  case 'scale':
114
123
  case 'scaleX':
115
124
  case 'scaleY': {
116
125
  // [sx 0 0 sy 0 0]
117
- const [sx, sy = sx] = args
118
- return [name === 'scaleY' ? 1 : sx, 0, 0, name === 'scaleX' ? 1 : sy, 0, 0]
126
+ const [sx, sy = sx] = args;
127
+ return [name === 'scaleY' ? 1 : sx, 0, 0, name === 'scaleX' ? 1 : sy, 0, 0];
119
128
  }
120
129
  case 'translate':
121
130
  case 'translateX':
122
131
  case 'translateY': {
123
132
  // [1 0 0 1 tx ty]
124
- const [tx, ty = tx] = args
133
+ const [tx, ty = tx] = args;
125
134
  // -ty is necessary because the pdf's y axis is inverted
126
- return [1, 0, 0, 1, name === 'translateY' ? 0 : tx, name === 'translateX' ? 0 : -ty]
135
+ return [1, 0, 0, 1, name === 'translateY' ? 0 : tx, name === 'translateX' ? 0 : -ty];
127
136
  }
128
137
  case 'rotate': {
129
138
  // [cos(a) sin(a) -sin(a) cos(a) 0 0]
130
- const [a, x = 0, y = 0] = args
131
- const t1 = transformationToMatrix('translate', [x, y])
132
- const t2 = transformationToMatrix('translate', [-x, -y])
139
+ const [a, x = 0, y = 0] = args;
140
+ const t1 = transformationToMatrix('translate', [x, y]);
141
+ const t2 = transformationToMatrix('translate', [-x, -y]);
133
142
  // -args[0] -> the '-' operator is necessary because the pdf rotation system is inverted
134
- const aRadians = degreesToRadians(-a)
135
- const r: TransformationMatrix = [Math.cos(aRadians), Math.sin(aRadians), -Math.sin(aRadians), Math.cos(aRadians), 0, 0]
143
+ const aRadians = degreesToRadians(-a);
144
+ const r: TransformationMatrix = [
145
+ Math.cos(aRadians),
146
+ Math.sin(aRadians),
147
+ -Math.sin(aRadians),
148
+ Math.cos(aRadians),
149
+ 0,
150
+ 0,
151
+ ];
136
152
  // rotation around a point is the combination of: translate * rotate * (-translate)
137
- return combineMatrix(combineMatrix(t1, r), t2)
153
+ return combineMatrix(combineMatrix(t1, r), t2);
138
154
  }
139
155
  case 'skewY':
140
156
  case 'skewX': {
141
157
  // [1 tan(a) 0 1 0 0]
142
158
  // [1 0 tan(a) 1 0 0]
143
159
  // -args[0] -> the '-' operator is necessary because the pdf rotation system is inverted
144
- const a = degreesToRadians(-args[0])
145
- const skew = Math.tan(a)
146
- const skewX = name === 'skewX' ? skew : 0
147
- const skewY = name === 'skewY' ? skew : 0
148
- return [1, skewY, skewX, 1, 0, 0]
160
+ const a = degreesToRadians(-args[0]);
161
+ const skew = Math.tan(a);
162
+ const skewX = name === 'skewX' ? skew : 0;
163
+ const skewY = name === 'skewY' ? skew : 0;
164
+ return [1, skewY, skewX, 1, 0, 0];
149
165
  }
150
166
  case 'matrix': {
151
- const [a, b, c, d, e, f] = args
152
- const r = transformationToMatrix('scale', [1, -1])
153
- const m: TransformationMatrix = [a, b, c, d, e, f]
154
- return combineMatrix(combineMatrix(r, m), r)
167
+ const [a, b, c, d, e, f] = args;
168
+ const r = transformationToMatrix('scale', [1, -1]);
169
+ const m: TransformationMatrix = [a, b, c, d, e, f];
170
+ return combineMatrix(combineMatrix(r, m), r);
155
171
  }
156
172
  default:
157
- return identityMatrix
173
+ return identityMatrix;
158
174
  }
159
- }
175
+ };
160
176
 
161
- const combineTransformation = (matrix: TransformationMatrix, name: TransformationName, args: number[]) => combineMatrix(matrix, transformationToMatrix(name, args))
177
+ const combineTransformation = (
178
+ matrix: TransformationMatrix,
179
+ name: TransformationName,
180
+ args: number[],
181
+ ) => combineMatrix(matrix, transformationToMatrix(name, args));
162
182
 
163
183
  const StrokeLineCapMap: Record<string, LineCapStyle> = {
164
184
  butt: LineCapStyle.Butt,
@@ -168,7 +188,7 @@ const StrokeLineCapMap: Record<string, LineCapStyle> = {
168
188
 
169
189
  const FillRuleMap: Record<string, FillRule> = {
170
190
  evenodd: FillRule.EvenOdd,
171
- nonzero: FillRule.NonZero
191
+ nonzero: FillRule.NonZero,
172
192
  };
173
193
 
174
194
  const StrokeLineJoinMap: Record<string, LineJoinStyle> = {
@@ -184,20 +204,16 @@ const runnersToPage = (
184
204
  options: PDFPageDrawSVGElementOptions,
185
205
  ): SVGElementToDrawMap => ({
186
206
  async text(element) {
187
- const anchor = element.svgAttributes.textAnchor;
188
- const dominantBaseline = element.svgAttributes.dominantBaseline
207
+ const anchor = element.svgAttributes.textAnchor;
208
+ const dominantBaseline = element.svgAttributes.dominantBaseline;
189
209
  const text = element.text.trim().replace(/\s/g, ' ');
190
210
  const fontSize = element.svgAttributes.fontSize || 12;
191
211
 
192
212
  /** This will find the best font for the provided style in the list */
193
- function getBestFont(
194
- style: InheritedAttributes,
195
- fonts: { [fontName: string]: PDFFont },
196
- ) {
213
+ function getBestFont(style: InheritedAttributes, fonts: { [fontName: string]: PDFFont }) {
197
214
  const family = style.fontFamily;
198
215
  if (!family) return undefined;
199
- const isBold =
200
- style.fontWeight === 'bold' || Number(style.fontWeight) >= 700;
216
+ const isBold = style.fontWeight === 'bold' || Number(style.fontWeight) >= 700;
201
217
  const isItalic = style.fontStyle === 'italic';
202
218
  const getFont = (bold: boolean, italic: boolean, family: string) =>
203
219
  fonts[family + (bold ? '_bold' : '') + (italic ? '_italic' : '')];
@@ -210,25 +226,20 @@ const anchor = element.svgAttributes.textAnchor;
210
226
  );
211
227
  }
212
228
 
213
- const font =
214
- options.fonts && getBestFont(element.svgAttributes, options.fonts);
215
- const textWidth = (font || page.getFont()[0]).widthOfTextAtSize(
216
- text,
217
- fontSize,
218
- );
229
+ const font = options.fonts && getBestFont(element.svgAttributes, options.fonts);
230
+ const textWidth = (font || page.getFont()[0]).widthOfTextAtSize(text, fontSize);
219
231
 
220
- const textHeight = (font || page.getFont()[0]).heightAtSize(fontSize)
221
- const offsetX =
222
- anchor === 'middle' ? textWidth / 2 : anchor === 'end' ? textWidth : 0;
232
+ const textHeight = (font || page.getFont()[0]).heightAtSize(fontSize);
233
+ const offsetX = anchor === 'middle' ? textWidth / 2 : anchor === 'end' ? textWidth : 0;
223
234
 
224
235
  const offsetY =
225
236
  dominantBaseline === 'text-before-edge'
226
237
  ? textHeight
227
238
  : dominantBaseline === 'text-after-edge'
228
- ? -textHeight
229
- : dominantBaseline === 'middle'
230
- ? textHeight / 2
231
- : 0
239
+ ? -textHeight
240
+ : dominantBaseline === 'middle'
241
+ ? textHeight / 2
242
+ : 0;
232
243
 
233
244
  page.drawText(text, {
234
245
  x: -offsetX,
@@ -261,7 +272,7 @@ const textWidth = (font || page.getFont()[0]).widthOfTextAtSize(
261
272
  });
262
273
  },
263
274
  async path(element) {
264
- if (!element.svgAttributes.d) return
275
+ if (!element.svgAttributes.d) return;
265
276
  // See https://jsbin.com/kawifomupa/edit?html,output and
266
277
  page.drawSvgPath(element.svgAttributes.d, {
267
278
  x: 0,
@@ -281,9 +292,7 @@ const textWidth = (font || page.getFont()[0]).widthOfTextAtSize(
281
292
  const { src } = element.svgAttributes;
282
293
  if (!src) return;
283
294
  const isPng = src.match(/\.png(\?|$)|^data:image\/png;base64/gim);
284
- const img = isPng
285
- ? await page.doc.embedPng(src)
286
- : await page.doc.embedJpg(src);
295
+ const img = isPng ? await page.doc.embedPng(src) : await page.doc.embedJpg(src);
287
296
 
288
297
  const { x, y, width, height } = getFittingRectangle(
289
298
  img.width,
@@ -396,26 +405,10 @@ const parseAttributes = (
396
405
  const fillOpacityRaw = styleOrAttribute(attributes, style, 'fill-opacity');
397
406
  const opacityRaw = styleOrAttribute(attributes, style, 'opacity');
398
407
  const strokeRaw = parseColor(styleOrAttribute(attributes, style, 'stroke'));
399
- const strokeOpacityRaw = styleOrAttribute(
400
- attributes,
401
- style,
402
- 'stroke-opacity',
403
- );
404
- const strokeLineCapRaw = styleOrAttribute(
405
- attributes,
406
- style,
407
- 'stroke-linecap',
408
- );
409
- const strokeLineJoinRaw = styleOrAttribute(
410
- attributes,
411
- style,
412
- 'stroke-linejoin',
413
- );
414
- const fillRuleRaw = styleOrAttribute(
415
- attributes,
416
- style,
417
- 'fill-rule',
418
- );
408
+ const strokeOpacityRaw = styleOrAttribute(attributes, style, 'stroke-opacity');
409
+ const strokeLineCapRaw = styleOrAttribute(attributes, style, 'stroke-linecap');
410
+ const strokeLineJoinRaw = styleOrAttribute(attributes, style, 'stroke-linejoin');
411
+ const fillRuleRaw = styleOrAttribute(attributes, style, 'fill-rule');
419
412
  const strokeWidthRaw = styleOrAttribute(attributes, style, 'stroke-width');
420
413
  const fontFamilyRaw = styleOrAttribute(attributes, style, 'font-family');
421
414
  const fontStyleRaw = styleOrAttribute(attributes, style, 'font-style');
@@ -442,18 +435,15 @@ const parseAttributes = (
442
435
  fontSize: parseFloatValue(fontSizeRaw) ?? inherited.fontSize,
443
436
  fill: fillRaw?.rgb || inherited.fill,
444
437
  fillOpacity:
445
- parseFloatValue(fillOpacityRaw || opacityRaw || fillRaw?.alpha) ??
446
- inherited.fillOpacity,
438
+ parseFloatValue(fillOpacityRaw || opacityRaw || fillRaw?.alpha) ?? inherited.fillOpacity,
447
439
  fillRule: FillRuleMap[fillRuleRaw] || inherited.fillRule,
448
440
  stroke: strokeRaw?.rgb || inherited.stroke,
449
441
  strokeWidth: parseFloatValue(strokeWidthRaw) ?? inherited.strokeWidth,
450
442
  strokeOpacity:
451
443
  parseFloatValue(strokeOpacityRaw || opacityRaw || strokeRaw?.alpha) ??
452
444
  inherited.strokeOpacity,
453
- strokeLineCap:
454
- StrokeLineCapMap[strokeLineCapRaw] || inherited.strokeLineCap,
455
- strokeLineJoin:
456
- StrokeLineJoinMap[strokeLineJoinRaw] || inherited.strokeLineJoin,
445
+ strokeLineCap: StrokeLineCapMap[strokeLineCapRaw] || inherited.strokeLineCap,
446
+ strokeLineJoin: StrokeLineJoinMap[strokeLineJoinRaw] || inherited.strokeLineJoin,
457
447
  width: width || inherited.width,
458
448
  height: height || inherited.height,
459
449
  rotation: inherited.rotation,
@@ -493,7 +483,7 @@ const parseAttributes = (
493
483
  if (x || y) {
494
484
  transformList = transformList + `translate(${x || 0} ${y || 0}) `;
495
485
  }
496
- let newMatrix = matrix
486
+ let newMatrix = matrix;
497
487
  // Apply the transformations
498
488
  if (transformList) {
499
489
  const regexTransform = /(\w+)\((.+?)\)/g;
@@ -504,7 +494,7 @@ const parseAttributes = (
504
494
  .split(/\s*,\s*|\s+/)
505
495
  .filter((value) => value.length > 0)
506
496
  .map((value) => parseFloat(value));
507
- newMatrix = combineTransformation(newMatrix, name as TransformationName, args)
497
+ newMatrix = combineTransformation(newMatrix, name as TransformationName, args);
508
498
  parsed = regexTransform.exec(transformList);
509
499
  }
510
500
  }
@@ -529,17 +519,17 @@ const parseAttributes = (
529
519
  svgAttributes.y2 = y2;
530
520
  }
531
521
  if (attributes.width || attributes.height) {
532
- svgAttributes.width = width ?? inherited.width
533
- svgAttributes.height = height ?? inherited.height
522
+ svgAttributes.width = width ?? inherited.width;
523
+ svgAttributes.height = height ?? inherited.height;
534
524
  }
535
525
 
536
526
  if (attributes.d) {
537
- newMatrix = combineTransformation(newMatrix, 'scale', [1, -1])
538
- svgAttributes.d = attributes.d
527
+ newMatrix = combineTransformation(newMatrix, 'scale', [1, -1]);
528
+ svgAttributes.d = attributes.d;
539
529
  }
540
530
 
541
531
  if (fontSizeRaw && newInherited.fontSize) {
542
- newInherited.fontSize = newInherited.fontSize
532
+ newInherited.fontSize = newInherited.fontSize;
543
533
  }
544
534
  if (newInherited.fontFamily) {
545
535
  // Handle complex fontFamily like `"Linux Libertine O", serif`
@@ -548,7 +538,7 @@ const parseAttributes = (
548
538
  }
549
539
 
550
540
  if (newInherited.strokeWidth) {
551
- svgAttributes.strokeWidth = newInherited.strokeWidth
541
+ svgAttributes.strokeWidth = newInherited.strokeWidth;
552
542
  }
553
543
 
554
544
  return {
@@ -571,10 +561,8 @@ const getFittingRectangle = (
571
561
  }
572
562
  const originalRatio = originalWidth / originalHeight;
573
563
  const targetRatio = targetWidth / targetHeight;
574
- const width =
575
- targetRatio > originalRatio ? originalRatio * targetHeight : targetWidth;
576
- const height =
577
- targetRatio >= originalRatio ? targetHeight : targetWidth / originalRatio;
564
+ const width = targetRatio > originalRatio ? originalRatio * targetHeight : targetWidth;
565
+ const height = targetRatio >= originalRatio ? targetHeight : targetWidth / originalRatio;
578
566
  const dx = targetWidth - width;
579
567
  const dy = targetHeight - height;
580
568
  const [x, y] = (() => {
@@ -611,30 +599,22 @@ const getAspectRatioTransformation = (
611
599
  targetHeight: number,
612
600
  preserveAspectRatio?: string,
613
601
  ): {
614
- clipBox: TransformationMatrix
615
- content: TransformationMatrix
602
+ clipBox: TransformationMatrix;
603
+ content: TransformationMatrix;
616
604
  } => {
617
- const scaleX = targetWidth / originalWidth
618
- const scaleY = targetHeight / originalHeight
619
- const boxScale = combineTransformation(
620
- matrix,
621
- 'scale',
622
- [
623
- scaleX,
624
- scaleY
625
- ]
626
- )
605
+ const scaleX = targetWidth / originalWidth;
606
+ const scaleY = targetHeight / originalHeight;
607
+ const boxScale = combineTransformation(matrix, 'scale', [scaleX, scaleY]);
627
608
  if (preserveAspectRatio === 'none') {
628
609
  return {
629
610
  clipBox: boxScale,
630
- content: boxScale
631
- }
611
+ content: boxScale,
612
+ };
632
613
  }
633
614
  // TODO: the following code works for the 'meet' param but not for the 'slice'
634
- const scale =
635
- targetWidth > targetHeight ? scaleY : scaleX
636
- const dx = targetWidth - (originalWidth * scale)
637
- const dy = targetHeight - (originalHeight * scale)
615
+ const scale = targetWidth > targetHeight ? scaleY : scaleX;
616
+ const dx = targetWidth - originalWidth * scale;
617
+ const dy = targetHeight - originalHeight * scale;
638
618
  const [x, y] = (() => {
639
619
  switch (preserveAspectRatio) {
640
620
  case 'xMinYMin':
@@ -660,23 +640,17 @@ const getAspectRatioTransformation = (
660
640
  })();
661
641
 
662
642
  const contentTransform = combineTransformation(
663
- combineTransformation(
664
- matrix,
665
- 'translate',
666
- [x, y]
667
- ),
643
+ combineTransformation(matrix, 'translate', [x, y]),
668
644
  'scale',
669
- [scale]
670
- )
645
+ [scale],
646
+ );
671
647
 
672
648
  return {
673
649
  clipBox: boxScale,
674
- content: contentTransform
675
- }
676
-
650
+ content: contentTransform,
651
+ };
677
652
  };
678
653
 
679
-
680
654
  const parseHTMLNode = (
681
655
  node: Node,
682
656
  inherited: InheritedAttributes,
@@ -686,19 +660,9 @@ const parseHTMLNode = (
686
660
  if (node.nodeType === NodeType.COMMENT_NODE) return [];
687
661
  else if (node.nodeType === NodeType.TEXT_NODE) return [];
688
662
  else if (node.tagName === 'g') {
689
- return parseGroupNode(
690
- node as HTMLElement & { tagName: 'g' },
691
- inherited,
692
- matrix,
693
- clipSpaces,
694
- );
663
+ return parseGroupNode(node as HTMLElement & { tagName: 'g' }, inherited, matrix, clipSpaces);
695
664
  } else if (node.tagName === 'svg') {
696
- return parseSvgNode(
697
- node as HTMLElement & { tagName: 'svg' },
698
- inherited,
699
- matrix,
700
- clipSpaces,
701
- );
665
+ return parseSvgNode(node as HTMLElement & { tagName: 'svg' }, inherited, matrix, clipSpaces);
702
666
  } else {
703
667
  if (node.tagName === 'polygon') {
704
668
  node.tagName = 'path';
@@ -710,7 +674,7 @@ const parseHTMLNode = (
710
674
  ...attributes.inherited,
711
675
  ...attributes.svgAttributes,
712
676
  matrix: attributes.matrix,
713
- clipSpaces
677
+ clipSpaces,
714
678
  };
715
679
  Object.assign(node, { svgAttributes });
716
680
  return [node as SVGElement];
@@ -724,10 +688,8 @@ const parseSvgNode = (
724
688
  clipSpaces: Space[],
725
689
  ): SVGElement[] => {
726
690
  // if the width/height aren't set, the svg will have the same dimension as the current drawing space
727
- node.attributes.width ??
728
- node.setAttribute('width', inherited.viewBox.width + '');
729
- node.attributes.height ??
730
- node.setAttribute('height', inherited.viewBox.height + '');
691
+ node.attributes.width ?? node.setAttribute('width', inherited.viewBox.width + '');
692
+ node.attributes.height ?? node.setAttribute('height', inherited.viewBox.height + '');
731
693
  const attributes = parseAttributes(node, inherited, matrix);
732
694
  const result: SVGElement[] = [];
733
695
  const viewBox = node.attributes.viewBox
@@ -735,59 +697,56 @@ const parseSvgNode = (
735
697
  : node.attributes.width && node.attributes.height
736
698
  ? parseViewBox(`0 0 ${node.attributes.width} ${node.attributes.height}`)!
737
699
  : inherited.viewBox;
738
- const x = parseFloat(node.attributes.x) || 0
739
- const y = parseFloat(node.attributes.y) || 0
740
-
741
- let newMatrix = combineTransformation(matrix, 'translate', [x, y])
742
-
743
- const { clipBox: clipBoxTransform, content: contentTransform } =
744
- getAspectRatioTransformation(
745
- newMatrix,
746
- viewBox.width,
747
- viewBox.height,
748
- parseFloat(node.attributes.width),
749
- parseFloat(node.attributes.height),
750
- node.attributes.preserveAspectRatio || 'xMidYMid'
751
- )
700
+ const x = parseFloat(node.attributes.x) || 0;
701
+ const y = parseFloat(node.attributes.y) || 0;
702
+
703
+ let newMatrix = combineTransformation(matrix, 'translate', [x, y]);
704
+
705
+ const { clipBox: clipBoxTransform, content: contentTransform } = getAspectRatioTransformation(
706
+ newMatrix,
707
+ viewBox.width,
708
+ viewBox.height,
709
+ parseFloat(node.attributes.width),
710
+ parseFloat(node.attributes.height),
711
+ node.attributes.preserveAspectRatio || 'xMidYMid',
712
+ );
752
713
 
753
714
  const topLeft = applyTransformation(clipBoxTransform, {
754
715
  x: 0,
755
716
  y: 0,
756
- })
757
-
717
+ });
718
+
758
719
  const topRight = applyTransformation(clipBoxTransform, {
759
720
  x: viewBox.width,
760
721
  y: 0,
761
- })
762
-
722
+ });
723
+
763
724
  const bottomRight = applyTransformation(clipBoxTransform, {
764
725
  x: viewBox.width,
765
726
  y: -viewBox.height,
766
- })
727
+ });
767
728
 
768
729
  const bottomLeft = applyTransformation(clipBoxTransform, {
769
730
  x: 0,
770
731
  y: -viewBox.height,
771
- })
732
+ });
772
733
 
773
734
  const baseClipSpace: Space = {
774
735
  topLeft,
775
736
  topRight,
776
737
  bottomRight,
777
- bottomLeft
778
- }
738
+ bottomLeft,
739
+ };
779
740
 
780
741
  // TODO: maybe this is the correct transformation
781
742
  // newMatrix = combineTransformation(newMatrix, 'translate', [-baseClipSpace.xMin, -baseClipSpace.yMin])
782
- newMatrix = combineTransformation(contentTransform, 'translate', [-viewBox.x, -viewBox.y])
743
+ newMatrix = combineTransformation(contentTransform, 'translate', [-viewBox.x, -viewBox.y]);
783
744
 
784
745
  node.childNodes.forEach((child) => {
785
- const parsedNodes = parseHTMLNode(
786
- child,
787
- { ...attributes.inherited, viewBox },
788
- newMatrix,
789
- [...clipSpaces, baseClipSpace],
790
- )
746
+ const parsedNodes = parseHTMLNode(child, { ...attributes.inherited, viewBox }, newMatrix, [
747
+ ...clipSpaces,
748
+ baseClipSpace,
749
+ ]);
791
750
  result.push(...parsedNodes);
792
751
  });
793
752
  return result;
@@ -802,9 +761,7 @@ const parseGroupNode = (
802
761
  const attributes = parseAttributes(node, inherited, matrix);
803
762
  const result: SVGElement[] = [];
804
763
  node.childNodes.forEach((child) => {
805
- result.push(
806
- ...parseHTMLNode(child, attributes.inherited, attributes.matrix, clipSpaces),
807
- );
764
+ result.push(...parseHTMLNode(child, attributes.inherited, attributes.matrix, clipSpaces));
808
765
  });
809
766
  return result;
810
767
  };
@@ -819,9 +776,7 @@ const parseFloatValue = (value?: string, reference = 1) => {
819
776
 
820
777
  const parseViewBox = (viewBox?: string): Box | undefined => {
821
778
  if (!viewBox) return;
822
- const [xViewBox = 0, yViewBox = 0, widthViewBox = 1, heightViewBox = 1] = (
823
- viewBox || ''
824
- )
779
+ const [xViewBox = 0, yViewBox = 0, widthViewBox = 1, heightViewBox = 1] = (viewBox || '')
825
780
  .split(' ')
826
781
  .map((val) => parseFloatValue(val));
827
782
  return {
@@ -836,7 +791,7 @@ const parse = (
836
791
  svg: string,
837
792
  { width, height, fontSize }: PDFPageDrawSVGElementOptions,
838
793
  size: Size,
839
- matrix: TransformationMatrix
794
+ matrix: TransformationMatrix,
840
795
  ): SVGElement[] => {
841
796
  const htmlElement = parseHtml(svg).firstChild as HTMLElement;
842
797
  if (width) htmlElement.setAttribute('width', width + '');
@@ -850,7 +805,7 @@ const parse = (
850
805
  viewBox: parseViewBox(htmlElement.attributes.viewBox || '0 0 1 1')!,
851
806
  },
852
807
  matrix,
853
- []
808
+ [],
854
809
  );
855
810
  };
856
811
 
@@ -869,17 +824,12 @@ export const drawSvg = async (
869
824
  const widthRaw = styleOrAttribute(attributes, style, 'width', '');
870
825
  const heightRaw = styleOrAttribute(attributes, style, 'height', '');
871
826
 
872
- const width =
873
- options.width !== undefined ? options.width : parseFloat(widthRaw);
874
- const height =
875
- options.height !== undefined ? options.height : parseFloat(heightRaw);
827
+ const width = options.width !== undefined ? options.width : parseFloat(widthRaw);
828
+ const height = options.height !== undefined ? options.height : parseFloat(heightRaw);
876
829
 
877
830
  // it's important to add the viewBox to allow svg resizing through the options
878
831
  if (!attributes.viewBox) {
879
- firstChild.setAttribute(
880
- 'viewBox',
881
- `0 0 ${widthRaw || width} ${heightRaw || height}`,
882
- );
832
+ firstChild.setAttribute('viewBox', `0 0 ${widthRaw || width} ${heightRaw || height}`);
883
833
  }
884
834
 
885
835
  if (options.width || options.height) {
@@ -895,7 +845,7 @@ export const drawSvg = async (
895
845
  );
896
846
  }
897
847
 
898
- const baseTransformation: TransformationMatrix = [1, 0, 0, 1, options.x || 0, options.y || 0]
848
+ const baseTransformation: TransformationMatrix = [1, 0, 0, 1, options.x || 0, options.y || 0];
899
849
 
900
850
  const runners = runnersToPage(page, options);
901
851
  const elements = parse(firstChild.outerHTML, options, size, baseTransformation);
@@ -934,4 +884,4 @@ export const drawSvg = async (
934
884
  // })
935
885
  return runners[elt.tagName]?.(elt);
936
886
  }, Promise.resolve());
937
- };
887
+ };