dompdf.js 1.1.1 → 1.2.0

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 (427) hide show
  1. package/.versionrc +8 -0
  2. package/CHANGELOG.md +32 -543
  3. package/README.md +172 -160
  4. package/README_CN.md +233 -238
  5. package/dist/dompdf.esm.js +124 -124
  6. package/dist/dompdf.esm.js.map +1 -1
  7. package/dist/dompdf.js +124 -124
  8. package/dist/dompdf.js.map +1 -1
  9. package/dist/dompdf.min.js +67 -0
  10. package/dist/index.d.ts +2 -1
  11. package/dist/lib/__tests__/index.js +144 -0
  12. package/dist/lib/__tests__/index.js.map +1 -0
  13. package/dist/lib/core/__mocks__/cache-storage.js +10 -0
  14. package/dist/lib/core/__mocks__/cache-storage.js.map +1 -0
  15. package/dist/lib/core/__mocks__/context.js +22 -0
  16. package/dist/lib/core/__mocks__/context.js.map +1 -0
  17. package/dist/lib/core/__mocks__/features.js +12 -0
  18. package/dist/lib/core/__mocks__/features.js.map +1 -0
  19. package/dist/lib/core/__mocks__/logger.js +24 -0
  20. package/dist/lib/core/__mocks__/logger.js.map +1 -0
  21. package/dist/lib/core/__tests__/cache-storage.js +420 -0
  22. package/dist/lib/core/__tests__/cache-storage.js.map +1 -0
  23. package/dist/lib/core/__tests__/logger.js +28 -0
  24. package/dist/lib/core/__tests__/logger.js.map +1 -0
  25. package/dist/lib/core/bitwise.js +6 -0
  26. package/dist/lib/core/bitwise.js.map +1 -0
  27. package/dist/lib/core/cache-storage.js +198 -0
  28. package/dist/lib/core/cache-storage.js.map +1 -0
  29. package/dist/lib/core/context.js +18 -0
  30. package/dist/lib/core/context.js.map +1 -0
  31. package/dist/lib/core/debugger.js +25 -0
  32. package/dist/lib/core/debugger.js.map +1 -0
  33. package/dist/lib/core/features.js +193 -0
  34. package/dist/lib/core/features.js.map +1 -0
  35. package/dist/lib/core/logger.js +92 -0
  36. package/dist/lib/core/logger.js.map +1 -0
  37. package/dist/lib/core/util.js +5 -0
  38. package/dist/lib/core/util.js.map +1 -0
  39. package/dist/lib/css/IPropertyDescriptor.js +3 -0
  40. package/dist/lib/css/IPropertyDescriptor.js.map +1 -0
  41. package/dist/lib/css/ITypeDescriptor.js +3 -0
  42. package/dist/lib/css/ITypeDescriptor.js.map +1 -0
  43. package/dist/lib/css/index.js +216 -0
  44. package/dist/lib/css/index.js.map +1 -0
  45. package/dist/lib/css/layout/__mocks__/bounds.js +9 -0
  46. package/dist/lib/css/layout/__mocks__/bounds.js.map +1 -0
  47. package/dist/lib/css/layout/bounds.js +42 -0
  48. package/dist/lib/css/layout/bounds.js.map +1 -0
  49. package/dist/lib/css/layout/text.js +137 -0
  50. package/dist/lib/css/layout/text.js.map +1 -0
  51. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +48 -0
  52. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -0
  53. package/dist/lib/css/property-descriptors/__tests__/font-family.js +25 -0
  54. package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +1 -0
  55. package/dist/lib/css/property-descriptors/__tests__/paint-order.js +88 -0
  56. package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +1 -0
  57. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +94 -0
  58. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +1 -0
  59. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +18 -0
  60. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +1 -0
  61. package/dist/lib/css/property-descriptors/background-clip.js +24 -0
  62. package/dist/lib/css/property-descriptors/background-clip.js.map +1 -0
  63. package/dist/lib/css/property-descriptors/background-color.js +11 -0
  64. package/dist/lib/css/property-descriptors/background-color.js.map +1 -0
  65. package/dist/lib/css/property-descriptors/background-image.js +24 -0
  66. package/dist/lib/css/property-descriptors/background-image.js.map +1 -0
  67. package/dist/lib/css/property-descriptors/background-origin.js +24 -0
  68. package/dist/lib/css/property-descriptors/background-origin.js.map +1 -0
  69. package/dist/lib/css/property-descriptors/background-position.js +17 -0
  70. package/dist/lib/css/property-descriptors/background-position.js.map +1 -0
  71. package/dist/lib/css/property-descriptors/background-repeat.js +36 -0
  72. package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -0
  73. package/dist/lib/css/property-descriptors/background-size.js +24 -0
  74. package/dist/lib/css/property-descriptors/background-size.js.map +1 -0
  75. package/dist/lib/css/property-descriptors/border-color.js +15 -0
  76. package/dist/lib/css/property-descriptors/border-color.js.map +1 -0
  77. package/dist/lib/css/property-descriptors/border-radius.js +18 -0
  78. package/dist/lib/css/property-descriptors/border-radius.js.map +1 -0
  79. package/dist/lib/css/property-descriptors/border-style.js +30 -0
  80. package/dist/lib/css/property-descriptors/border-style.js.map +1 -0
  81. package/dist/lib/css/property-descriptors/border-width.js +21 -0
  82. package/dist/lib/css/property-descriptors/border-width.js.map +1 -0
  83. package/dist/lib/css/property-descriptors/box-shadow.js +55 -0
  84. package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -0
  85. package/dist/lib/css/property-descriptors/color.js +11 -0
  86. package/dist/lib/css/property-descriptors/color.js.map +1 -0
  87. package/dist/lib/css/property-descriptors/content.js +20 -0
  88. package/dist/lib/css/property-descriptors/content.js.map +1 -0
  89. package/dist/lib/css/property-descriptors/counter-increment.js +31 -0
  90. package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -0
  91. package/dist/lib/css/property-descriptors/counter-reset.js +27 -0
  92. package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -0
  93. package/dist/lib/css/property-descriptors/direction.js +19 -0
  94. package/dist/lib/css/property-descriptors/direction.js.map +1 -0
  95. package/dist/lib/css/property-descriptors/display.js +82 -0
  96. package/dist/lib/css/property-descriptors/display.js.map +1 -0
  97. package/dist/lib/css/property-descriptors/duration.js +15 -0
  98. package/dist/lib/css/property-descriptors/duration.js.map +1 -0
  99. package/dist/lib/css/property-descriptors/float.js +23 -0
  100. package/dist/lib/css/property-descriptors/float.js.map +1 -0
  101. package/dist/lib/css/property-descriptors/font-family.js +33 -0
  102. package/dist/lib/css/property-descriptors/font-family.js.map +1 -0
  103. package/dist/lib/css/property-descriptors/font-size.js +11 -0
  104. package/dist/lib/css/property-descriptors/font-size.js.map +1 -0
  105. package/dist/lib/css/property-descriptors/font-style.js +21 -0
  106. package/dist/lib/css/property-descriptors/font-style.js.map +1 -0
  107. package/dist/lib/css/property-descriptors/font-variant.js +14 -0
  108. package/dist/lib/css/property-descriptors/font-variant.js.map +1 -0
  109. package/dist/lib/css/property-descriptors/font-weight.js +26 -0
  110. package/dist/lib/css/property-descriptors/font-weight.js.map +1 -0
  111. package/dist/lib/css/property-descriptors/letter-spacing.js +22 -0
  112. package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -0
  113. package/dist/lib/css/property-descriptors/line-break.js +24 -0
  114. package/dist/lib/css/property-descriptors/line-break.js.map +1 -0
  115. package/dist/lib/css/property-descriptors/line-height.js +25 -0
  116. package/dist/lib/css/property-descriptors/line-height.js.map +1 -0
  117. package/dist/lib/css/property-descriptors/list-style-image.js +17 -0
  118. package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -0
  119. package/dist/lib/css/property-descriptors/list-style-position.js +19 -0
  120. package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -0
  121. package/dist/lib/css/property-descriptors/list-style-type.js +123 -0
  122. package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -0
  123. package/dist/lib/css/property-descriptors/margin.js +14 -0
  124. package/dist/lib/css/property-descriptors/margin.js.map +1 -0
  125. package/dist/lib/css/property-descriptors/opacity.js +17 -0
  126. package/dist/lib/css/property-descriptors/opacity.js.map +1 -0
  127. package/dist/lib/css/property-descriptors/overflow-wrap.js +19 -0
  128. package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -0
  129. package/dist/lib/css/property-descriptors/overflow.js +28 -0
  130. package/dist/lib/css/property-descriptors/overflow.js.map +1 -0
  131. package/dist/lib/css/property-descriptors/padding.js +15 -0
  132. package/dist/lib/css/property-descriptors/padding.js.map +1 -0
  133. package/dist/lib/css/property-descriptors/paint-order.js +34 -0
  134. package/dist/lib/css/property-descriptors/paint-order.js.map +1 -0
  135. package/dist/lib/css/property-descriptors/position.js +23 -0
  136. package/dist/lib/css/property-descriptors/position.js.map +1 -0
  137. package/dist/lib/css/property-descriptors/quotes.js +42 -0
  138. package/dist/lib/css/property-descriptors/quotes.js.map +1 -0
  139. package/dist/lib/css/property-descriptors/text-align.js +22 -0
  140. package/dist/lib/css/property-descriptors/text-align.js.map +1 -0
  141. package/dist/lib/css/property-descriptors/text-decoration-color.js +11 -0
  142. package/dist/lib/css/property-descriptors/text-decoration-color.js.map +1 -0
  143. package/dist/lib/css/property-descriptors/text-decoration-line.js +29 -0
  144. package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -0
  145. package/dist/lib/css/property-descriptors/text-shadow.js +47 -0
  146. package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -0
  147. package/dist/lib/css/property-descriptors/text-transform.js +21 -0
  148. package/dist/lib/css/property-descriptors/text-transform.js.map +1 -0
  149. package/dist/lib/css/property-descriptors/transform-origin.js +25 -0
  150. package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -0
  151. package/dist/lib/css/property-descriptors/transform.js +37 -0
  152. package/dist/lib/css/property-descriptors/transform.js.map +1 -0
  153. package/dist/lib/css/property-descriptors/visibility.js +21 -0
  154. package/dist/lib/css/property-descriptors/visibility.js.map +1 -0
  155. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +11 -0
  156. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js.map +1 -0
  157. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +17 -0
  158. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -0
  159. package/dist/lib/css/property-descriptors/word-break.js +27 -0
  160. package/dist/lib/css/property-descriptors/word-break.js.map +1 -0
  161. package/dist/lib/css/property-descriptors/z-index.js +20 -0
  162. package/dist/lib/css/property-descriptors/z-index.js.map +1 -0
  163. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +34 -0
  164. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +1 -0
  165. package/dist/lib/css/syntax/parser.js +147 -0
  166. package/dist/lib/css/syntax/parser.js.map +1 -0
  167. package/dist/lib/css/syntax/tokenizer.js +630 -0
  168. package/dist/lib/css/syntax/tokenizer.js.map +1 -0
  169. package/dist/lib/css/types/__tests__/color-tests.js +66 -0
  170. package/dist/lib/css/types/__tests__/color-tests.js.map +1 -0
  171. package/dist/lib/css/types/__tests__/image-tests.js +233 -0
  172. package/dist/lib/css/types/__tests__/image-tests.js.map +1 -0
  173. package/dist/lib/css/types/angle.js +81 -0
  174. package/dist/lib/css/types/angle.js.map +1 -0
  175. package/dist/lib/css/types/color.js +311 -0
  176. package/dist/lib/css/types/color.js.map +1 -0
  177. package/dist/lib/css/types/functions/-prefix-linear-gradient.js +33 -0
  178. package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -0
  179. package/dist/lib/css/types/functions/-prefix-radial-gradient.js +84 -0
  180. package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -0
  181. package/dist/lib/css/types/functions/-webkit-gradient.js +60 -0
  182. package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -0
  183. package/dist/lib/css/types/functions/__tests__/radial-gradient.js +68 -0
  184. package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +1 -0
  185. package/dist/lib/css/types/functions/counter.js +374 -0
  186. package/dist/lib/css/types/functions/counter.js.map +1 -0
  187. package/dist/lib/css/types/functions/gradient.js +165 -0
  188. package/dist/lib/css/types/functions/gradient.js.map +1 -0
  189. package/dist/lib/css/types/functions/linear-gradient.js +28 -0
  190. package/dist/lib/css/types/functions/linear-gradient.js.map +1 -0
  191. package/dist/lib/css/types/functions/radial-gradient.js +91 -0
  192. package/dist/lib/css/types/functions/radial-gradient.js.map +1 -0
  193. package/dist/lib/css/types/image.js +53 -0
  194. package/dist/lib/css/types/image.js.map +1 -0
  195. package/dist/lib/css/types/index.js +3 -0
  196. package/dist/lib/css/types/index.js.map +1 -0
  197. package/dist/lib/css/types/length-percentage.js +52 -0
  198. package/dist/lib/css/types/length-percentage.js.map +1 -0
  199. package/dist/lib/css/types/length.js +8 -0
  200. package/dist/lib/css/types/length.js.map +1 -0
  201. package/dist/lib/css/types/time.js +18 -0
  202. package/dist/lib/css/types/time.js.map +1 -0
  203. package/dist/lib/dom/__mocks__/document-cloner.js +24 -0
  204. package/dist/lib/dom/__mocks__/document-cloner.js.map +1 -0
  205. package/dist/lib/dom/document-cloner.js +530 -0
  206. package/dist/lib/dom/document-cloner.js.map +1 -0
  207. package/dist/lib/dom/element-container.js +39 -0
  208. package/dist/lib/dom/element-container.js.map +1 -0
  209. package/dist/lib/dom/elements/li-element-container.js +30 -0
  210. package/dist/lib/dom/elements/li-element-container.js.map +1 -0
  211. package/dist/lib/dom/elements/ol-element-container.js +31 -0
  212. package/dist/lib/dom/elements/ol-element-container.js.map +1 -0
  213. package/dist/lib/dom/elements/select-element-container.js +31 -0
  214. package/dist/lib/dom/elements/select-element-container.js.map +1 -0
  215. package/dist/lib/dom/elements/textarea-element-container.js +30 -0
  216. package/dist/lib/dom/elements/textarea-element-container.js.map +1 -0
  217. package/dist/lib/dom/node-parser.js +306 -0
  218. package/dist/lib/dom/node-parser.js.map +1 -0
  219. package/dist/lib/dom/replaced-elements/canvas-element-container.js +32 -0
  220. package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -0
  221. package/dist/lib/dom/replaced-elements/iframe-element-container.js +54 -0
  222. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -0
  223. package/dist/lib/dom/replaced-elements/image-element-container.js +33 -0
  224. package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -0
  225. package/dist/lib/dom/replaced-elements/index.js +3 -0
  226. package/dist/lib/dom/replaced-elements/index.js.map +1 -0
  227. package/dist/lib/dom/replaced-elements/input-element-container.js +102 -0
  228. package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -0
  229. package/dist/lib/dom/replaced-elements/pseudo-elements.js +1 -0
  230. package/dist/lib/dom/replaced-elements/pseudo-elements.js.map +1 -0
  231. package/dist/lib/dom/replaced-elements/svg-element-container.js +38 -0
  232. package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -0
  233. package/dist/lib/dom/text-container.js +32 -0
  234. package/dist/lib/dom/text-container.js.map +1 -0
  235. package/dist/lib/index.js +274 -0
  236. package/dist/lib/index.js.map +1 -0
  237. package/dist/lib/invariant.js +10 -0
  238. package/dist/lib/invariant.js.map +1 -0
  239. package/dist/lib/render/background.js +187 -0
  240. package/dist/lib/render/background.js.map +1 -0
  241. package/dist/lib/render/bezier-curve.js +36 -0
  242. package/dist/lib/render/bezier-curve.js.map +1 -0
  243. package/dist/lib/render/border.js +105 -0
  244. package/dist/lib/render/border.js.map +1 -0
  245. package/dist/lib/render/bound-curves.js +190 -0
  246. package/dist/lib/render/bound-curves.js.map +1 -0
  247. package/dist/lib/render/box-sizing.js +21 -0
  248. package/dist/lib/render/box-sizing.js.map +1 -0
  249. package/dist/lib/render/canvas/foreignobject-renderer.js +108 -0
  250. package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -0
  251. package/dist/lib/render/canvas/pdf-renderer.js +1340 -0
  252. package/dist/lib/render/canvas/pdf-renderer.js.map +1 -0
  253. package/dist/lib/render/effects.js +41 -0
  254. package/dist/lib/render/effects.js.map +1 -0
  255. package/dist/lib/render/font-metrics.js +55 -0
  256. package/dist/lib/render/font-metrics.js.map +1 -0
  257. package/dist/lib/render/page-format-map.js +54 -0
  258. package/dist/lib/render/page-format-map.js.map +1 -0
  259. package/dist/lib/render/paginate copy 2.js +178 -0
  260. package/dist/lib/render/paginate copy 2.js.map +1 -0
  261. package/dist/lib/render/paginate.js +211 -0
  262. package/dist/lib/render/paginate.js.map +1 -0
  263. package/dist/lib/render/path.js +27 -0
  264. package/dist/lib/render/path.js.map +1 -0
  265. package/dist/lib/render/renderer.js +12 -0
  266. package/dist/lib/render/renderer.js.map +1 -0
  267. package/dist/lib/render/stacking-context.js +172 -0
  268. package/dist/lib/render/stacking-context.js.map +1 -0
  269. package/dist/lib/render/vector.js +18 -0
  270. package/dist/lib/render/vector.js.map +1 -0
  271. package/dist/lib/utils/css-utils.js +19 -0
  272. package/dist/lib/utils/css-utils.js.map +1 -0
  273. package/dist/lib/utils/element-utils.js +25 -0
  274. package/dist/lib/utils/element-utils.js.map +1 -0
  275. package/dist/lib/utils/font-utils.js +70 -0
  276. package/dist/lib/utils/font-utils.js.map +1 -0
  277. package/dist/lib/utils/index.js +22 -0
  278. package/dist/lib/utils/index.js.map +1 -0
  279. package/dist/lib/utils/type-utils.js +40 -0
  280. package/dist/lib/utils/type-utils.js.map +1 -0
  281. package/dist/lib/utils/url-path.js +22 -0
  282. package/dist/lib/utils/url-path.js.map +1 -0
  283. package/dist/render/canvas/pdf-renderer.d.ts +2 -2
  284. package/dist/render/paginate copy 2.d.ts +3 -0
  285. package/dist/render/paginate.d.ts +1 -1
  286. package/dist/types/__tests__/index.d.ts +1 -0
  287. package/dist/types/core/__mocks__/cache-storage.d.ts +2 -0
  288. package/dist/types/core/__mocks__/context.d.ts +9 -0
  289. package/dist/types/core/__mocks__/features.d.ts +8 -0
  290. package/dist/types/core/__mocks__/logger.d.ts +9 -0
  291. package/dist/types/core/__tests__/cache-storage.d.ts +1 -0
  292. package/dist/types/core/__tests__/logger.d.ts +1 -0
  293. package/dist/types/core/bitwise.d.ts +1 -0
  294. package/dist/types/core/cache-storage.d.ts +26 -0
  295. package/dist/types/core/context.d.ts +15 -0
  296. package/dist/types/core/debugger.d.ts +8 -0
  297. package/dist/types/core/features.d.ts +12 -0
  298. package/dist/types/core/logger.d.ts +18 -0
  299. package/dist/types/core/util.d.ts +1 -0
  300. package/dist/types/css/IPropertyDescriptor.d.ts +36 -0
  301. package/dist/types/css/ITypeDescriptor.d.ts +6 -0
  302. package/dist/types/css/index.d.ts +132 -0
  303. package/dist/types/css/layout/__mocks__/bounds.d.ts +2 -0
  304. package/dist/types/css/layout/bounds.d.ts +14 -0
  305. package/dist/types/css/layout/text.d.ts +10 -0
  306. package/dist/types/css/property-descriptors/__tests__/background-tests.d.ts +1 -0
  307. package/dist/types/css/property-descriptors/__tests__/font-family.d.ts +1 -0
  308. package/dist/types/css/property-descriptors/__tests__/paint-order.d.ts +1 -0
  309. package/dist/types/css/property-descriptors/__tests__/text-shadow.d.ts +1 -0
  310. package/dist/types/css/property-descriptors/__tests__/transform-tests.d.ts +1 -0
  311. package/dist/types/css/property-descriptors/background-clip.d.ts +8 -0
  312. package/dist/types/css/property-descriptors/background-color.d.ts +2 -0
  313. package/dist/types/css/property-descriptors/background-image.d.ts +3 -0
  314. package/dist/types/css/property-descriptors/background-origin.d.ts +8 -0
  315. package/dist/types/css/property-descriptors/background-position.d.ts +5 -0
  316. package/dist/types/css/property-descriptors/background-repeat.d.ts +9 -0
  317. package/dist/types/css/property-descriptors/background-size.d.ts +11 -0
  318. package/dist/types/css/property-descriptors/border-color.d.ts +5 -0
  319. package/dist/types/css/property-descriptors/border-radius.d.ts +7 -0
  320. package/dist/types/css/property-descriptors/border-style.d.ts +12 -0
  321. package/dist/types/css/property-descriptors/border-width.d.ts +5 -0
  322. package/dist/types/css/property-descriptors/box-shadow.d.ts +14 -0
  323. package/dist/types/css/property-descriptors/color.d.ts +2 -0
  324. package/dist/types/css/property-descriptors/content.d.ts +4 -0
  325. package/dist/types/css/property-descriptors/counter-increment.d.ts +7 -0
  326. package/dist/types/css/property-descriptors/counter-reset.d.ts +7 -0
  327. package/dist/types/css/property-descriptors/direction.d.ts +6 -0
  328. package/dist/types/css/property-descriptors/display.d.ts +35 -0
  329. package/dist/types/css/property-descriptors/duration.d.ts +2 -0
  330. package/dist/types/css/property-descriptors/float.d.ts +9 -0
  331. package/dist/types/css/property-descriptors/font-family.d.ts +4 -0
  332. package/dist/types/css/property-descriptors/font-size.d.ts +2 -0
  333. package/dist/types/css/property-descriptors/font-style.d.ts +7 -0
  334. package/dist/types/css/property-descriptors/font-variant.d.ts +2 -0
  335. package/dist/types/css/property-descriptors/font-weight.d.ts +2 -0
  336. package/dist/types/css/property-descriptors/letter-spacing.d.ts +2 -0
  337. package/dist/types/css/property-descriptors/line-break.d.ts +6 -0
  338. package/dist/types/css/property-descriptors/line-height.d.ts +4 -0
  339. package/dist/types/css/property-descriptors/list-style-image.d.ts +3 -0
  340. package/dist/types/css/property-descriptors/list-style-position.d.ts +6 -0
  341. package/dist/types/css/property-descriptors/list-style-type.d.ts +58 -0
  342. package/dist/types/css/property-descriptors/margin.d.ts +5 -0
  343. package/dist/types/css/property-descriptors/opacity.d.ts +2 -0
  344. package/dist/types/css/property-descriptors/overflow-wrap.d.ts +6 -0
  345. package/dist/types/css/property-descriptors/overflow.d.ts +9 -0
  346. package/dist/types/css/property-descriptors/padding.d.ts +5 -0
  347. package/dist/types/css/property-descriptors/paint-order.d.ts +8 -0
  348. package/dist/types/css/property-descriptors/position.d.ts +9 -0
  349. package/dist/types/css/property-descriptors/quotes.d.ts +8 -0
  350. package/dist/types/css/property-descriptors/text-align.d.ts +7 -0
  351. package/dist/types/css/property-descriptors/text-decoration-color.d.ts +2 -0
  352. package/dist/types/css/property-descriptors/text-decoration-line.d.ts +10 -0
  353. package/dist/types/css/property-descriptors/text-shadow.d.ts +12 -0
  354. package/dist/types/css/property-descriptors/text-transform.d.ts +8 -0
  355. package/dist/types/css/property-descriptors/transform-origin.d.ts +4 -0
  356. package/dist/types/css/property-descriptors/transform.d.ts +4 -0
  357. package/dist/types/css/property-descriptors/visibility.d.ts +7 -0
  358. package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +2 -0
  359. package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +2 -0
  360. package/dist/types/css/property-descriptors/word-break.d.ts +7 -0
  361. package/dist/types/css/property-descriptors/z-index.d.ts +7 -0
  362. package/dist/types/css/syntax/__tests__/tokernizer-tests.d.ts +1 -0
  363. package/dist/types/css/syntax/parser.d.ts +34 -0
  364. package/dist/types/css/syntax/tokenizer.d.ts +94 -0
  365. package/dist/types/css/types/__tests__/color-tests.d.ts +1 -0
  366. package/dist/types/css/types/__tests__/image-tests.d.ts +1 -0
  367. package/dist/types/css/types/angle.d.ts +7 -0
  368. package/dist/types/css/types/color.d.ts +11 -0
  369. package/dist/types/css/types/functions/-prefix-linear-gradient.d.ts +4 -0
  370. package/dist/types/css/types/functions/-prefix-radial-gradient.d.ts +4 -0
  371. package/dist/types/css/types/functions/-webkit-gradient.d.ts +4 -0
  372. package/dist/types/css/types/functions/__tests__/radial-gradient.d.ts +1 -0
  373. package/dist/types/css/types/functions/counter.d.ts +10 -0
  374. package/dist/types/css/types/functions/gradient.d.ts +7 -0
  375. package/dist/types/css/types/functions/linear-gradient.d.ts +4 -0
  376. package/dist/types/css/types/functions/radial-gradient.d.ts +12 -0
  377. package/dist/types/css/types/image.d.ts +54 -0
  378. package/dist/types/css/types/index.d.ts +1 -0
  379. package/dist/types/css/types/length-percentage.d.ts +11 -0
  380. package/dist/types/css/types/length.d.ts +4 -0
  381. package/dist/types/css/types/time.d.ts +2 -0
  382. package/dist/types/dom/__mocks__/document-cloner.d.ts +6 -0
  383. package/dist/types/dom/document-cloner.d.ts +45 -0
  384. package/dist/types/dom/element-container.d.ts +23 -0
  385. package/dist/types/dom/elements/li-element-container.d.ts +6 -0
  386. package/dist/types/dom/elements/ol-element-container.d.ts +7 -0
  387. package/dist/types/dom/elements/select-element-container.d.ts +6 -0
  388. package/dist/types/dom/elements/textarea-element-container.d.ts +6 -0
  389. package/dist/types/dom/node-parser.d.ts +23 -0
  390. package/dist/types/dom/replaced-elements/canvas-element-container.d.ts +8 -0
  391. package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +11 -0
  392. package/dist/types/dom/replaced-elements/image-element-container.d.ts +8 -0
  393. package/dist/types/dom/replaced-elements/index.d.ts +4 -0
  394. package/dist/types/dom/replaced-elements/input-element-container.d.ts +12 -0
  395. package/dist/types/dom/replaced-elements/pseudo-elements.d.ts +0 -0
  396. package/dist/types/dom/replaced-elements/svg-element-container.d.ts +8 -0
  397. package/dist/types/dom/text-container.d.ts +8 -0
  398. package/dist/types/index.d.ts +17 -0
  399. package/dist/types/invariant.d.ts +1 -0
  400. package/dist/types/render/background.d.ts +16 -0
  401. package/dist/types/render/bezier-curve.d.ts +14 -0
  402. package/dist/types/render/border.d.ts +6 -0
  403. package/dist/types/render/bound-curves.d.ts +32 -0
  404. package/dist/types/render/box-sizing.d.ts +4 -0
  405. package/dist/types/render/canvas/foreignobject-renderer.d.ts +11 -0
  406. package/dist/types/render/canvas/pdf-renderer.d.ts +110 -0
  407. package/dist/types/render/effects.d.ts +38 -0
  408. package/dist/types/render/font-metrics.d.ts +11 -0
  409. package/dist/types/render/page-format-map.d.ts +4 -0
  410. package/dist/types/render/paginate copy 2.d.ts +3 -0
  411. package/dist/types/render/paginate.d.ts +3 -0
  412. package/dist/types/render/path.d.ts +13 -0
  413. package/dist/types/render/renderer.d.ts +7 -0
  414. package/dist/types/render/stacking-context.d.ts +24 -0
  415. package/dist/types/render/vector.d.ts +9 -0
  416. package/dist/types/utils/css-utils.d.ts +2 -0
  417. package/dist/types/utils/element-utils.d.ts +7 -0
  418. package/dist/types/utils/font-utils.d.ts +9 -0
  419. package/dist/types/utils/index.d.ts +5 -0
  420. package/dist/types/utils/type-utils.d.ts +4 -0
  421. package/dist/types/utils/url-path.d.ts +7 -0
  422. package/dist/utils/font-utils.d.ts +2 -0
  423. package/fontconverter/fontconverter.html +2 -2
  424. package/package.json +135 -135
  425. package/page_sizes.md +50 -0
  426. package/.vscode/settings.json +0 -5
  427. package/html2pdf-userscript.js +0 -936
@@ -0,0 +1,6 @@
1
+ export declare class DocumentCloner {
2
+ clonedReferenceElement?: HTMLElement;
3
+ constructor();
4
+ toIFrame(): Promise<HTMLIFrameElement>;
5
+ static destroy(): boolean;
6
+ }
@@ -0,0 +1,45 @@
1
+ import { Bounds } from '../css/layout/bounds';
2
+ import { Context } from '../core/context';
3
+ export interface CloneOptions {
4
+ ignoreElements?: (element: Element) => boolean;
5
+ onclone?: (document: Document, element: HTMLElement) => void;
6
+ allowTaint?: boolean;
7
+ }
8
+ export interface WindowOptions {
9
+ scrollX: number;
10
+ scrollY: number;
11
+ windowWidth: number;
12
+ windowHeight: number;
13
+ }
14
+ export type CloneConfigurations = CloneOptions & {
15
+ inlineImages: boolean;
16
+ copyStyles: boolean;
17
+ };
18
+ export declare class DocumentCloner {
19
+ private readonly context;
20
+ private readonly options;
21
+ private readonly scrolledElements;
22
+ private readonly referenceElement;
23
+ clonedReferenceElement?: HTMLElement;
24
+ private readonly documentElement;
25
+ private readonly counters;
26
+ private quoteDepth;
27
+ constructor(context: Context, element: HTMLElement, options: CloneConfigurations);
28
+ toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement>;
29
+ createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement;
30
+ createCustomElementClone(node: HTMLElement): HTMLElement;
31
+ createStyleClone(node: HTMLStyleElement): HTMLStyleElement;
32
+ createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement;
33
+ createVideoClone(video: HTMLVideoElement): HTMLCanvasElement;
34
+ appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void;
35
+ cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void;
36
+ cloneNode(node: Node, copyStyles: boolean): Node;
37
+ resolvePseudoContent(node: Element, clone: Element, style: CSSStyleDeclaration, pseudoElt: PseudoElementType): HTMLElement | void;
38
+ static destroy(container: HTMLIFrameElement): boolean;
39
+ }
40
+ declare enum PseudoElementType {
41
+ BEFORE = 0,
42
+ AFTER = 1
43
+ }
44
+ export declare const copyCSSStyles: <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T) => T;
45
+ export {};
@@ -0,0 +1,23 @@
1
+ import { Context } from '../core/context';
2
+ import { CSSParsedDeclaration } from '../css/index';
3
+ import { Bounds } from '../css/layout/bounds';
4
+ import { TextContainer } from './text-container';
5
+ export declare const enum FLAGS {
6
+ CREATES_STACKING_CONTEXT = 2,
7
+ CREATES_REAL_STACKING_CONTEXT = 4,
8
+ IS_LIST_OWNER = 8,
9
+ DEBUG_RENDER = 16
10
+ }
11
+ export declare class ElementContainer {
12
+ protected readonly context: Context;
13
+ readonly styles: CSSParsedDeclaration;
14
+ readonly textNodes: TextContainer[];
15
+ readonly elements: ElementContainer[];
16
+ bounds: Bounds;
17
+ flags: number;
18
+ foreignobjectrendering: boolean;
19
+ parentforeignobjectrendering: boolean;
20
+ divisionDisable: boolean;
21
+ offset: number;
22
+ constructor(context: Context, element: Element);
23
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class LIElementContainer extends ElementContainer {
4
+ readonly value: number;
5
+ constructor(context: Context, element: HTMLLIElement);
6
+ }
@@ -0,0 +1,7 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class OLElementContainer extends ElementContainer {
4
+ readonly start: number;
5
+ readonly reversed: boolean;
6
+ constructor(context: Context, element: HTMLOListElement);
7
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class SelectElementContainer extends ElementContainer {
4
+ readonly value: string;
5
+ constructor(context: Context, element: HTMLSelectElement);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class TextareaElementContainer extends ElementContainer {
4
+ readonly value: string;
5
+ constructor(context: Context, element: HTMLTextAreaElement);
6
+ }
@@ -0,0 +1,23 @@
1
+ import { Context } from '../core/context';
2
+ import { ElementContainer } from './element-container';
3
+ export declare const parseTree: (context: Context, element: HTMLElement) => Promise<ElementContainer>;
4
+ export declare const isTextNode: (node: Node) => node is Text;
5
+ export declare const isElementNode: (node: Node) => node is Element;
6
+ export declare const isHTMLElementNode: (node: Node) => node is HTMLElement;
7
+ export declare const isSVGElementNode: (element: Element) => element is SVGElement;
8
+ export declare const isLIElement: (node: Element) => node is HTMLLIElement;
9
+ export declare const isOLElement: (node: Element) => node is HTMLOListElement;
10
+ export declare const isInputElement: (node: Element) => node is HTMLInputElement;
11
+ export declare const isHTMLElement: (node: Element) => node is HTMLHtmlElement;
12
+ export declare const isSVGElement: (node: Element) => node is SVGSVGElement;
13
+ export declare const isBodyElement: (node: Element) => node is HTMLBodyElement;
14
+ export declare const isCanvasElement: (node: Element) => node is HTMLCanvasElement;
15
+ export declare const isVideoElement: (node: Element) => node is HTMLVideoElement;
16
+ export declare const isImageElement: (node: Element) => node is HTMLImageElement;
17
+ export declare const isIFrameElement: (node: Element) => node is HTMLIFrameElement;
18
+ export declare const isStyleElement: (node: Element) => node is HTMLStyleElement;
19
+ export declare const isScriptElement: (node: Element) => node is HTMLScriptElement;
20
+ export declare const isTextareaElement: (node: Element) => node is HTMLTextAreaElement;
21
+ export declare const isSelectElement: (node: Element) => node is HTMLSelectElement;
22
+ export declare const isSlotElement: (node: Element) => node is HTMLSlotElement;
23
+ export declare const isCustomElement: (node: Element) => node is HTMLElement;
@@ -0,0 +1,8 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class CanvasElementContainer extends ElementContainer {
4
+ canvas: HTMLCanvasElement;
5
+ intrinsicWidth: number;
6
+ intrinsicHeight: number;
7
+ constructor(context: Context, canvas: HTMLCanvasElement);
8
+ }
@@ -0,0 +1,11 @@
1
+ import { Context } from '../../core/context';
2
+ import { Color } from '../../css/types/color';
3
+ import { ElementContainer } from '../element-container';
4
+ export declare class IFrameElementContainer extends ElementContainer {
5
+ src: string;
6
+ width: number;
7
+ height: number;
8
+ tree?: ElementContainer;
9
+ backgroundColor: Color;
10
+ constructor(context: Context, iframe: HTMLIFrameElement);
11
+ }
@@ -0,0 +1,8 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class ImageElementContainer extends ElementContainer {
4
+ src: string;
5
+ intrinsicWidth: number;
6
+ intrinsicHeight: number;
7
+ constructor(context: Context, img: HTMLImageElement);
8
+ }
@@ -0,0 +1,4 @@
1
+ import { CanvasElementContainer } from './canvas-element-container';
2
+ import { ImageElementContainer } from './image-element-container';
3
+ import { SVGElementContainer } from './svg-element-container';
4
+ export type ReplacedElementContainer = CanvasElementContainer | ImageElementContainer | SVGElementContainer;
@@ -0,0 +1,12 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare const CHECKBOX = "checkbox";
4
+ export declare const RADIO = "radio";
5
+ export declare const PASSWORD = "password";
6
+ export declare const INPUT_COLOR = 707406591;
7
+ export declare class InputElementContainer extends ElementContainer {
8
+ readonly type: string;
9
+ readonly checked: boolean;
10
+ readonly value: string;
11
+ constructor(context: Context, input: HTMLInputElement);
12
+ }
@@ -0,0 +1,8 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class SVGElementContainer extends ElementContainer {
4
+ svg: string;
5
+ intrinsicWidth: number;
6
+ intrinsicHeight: number;
7
+ constructor(context: Context, img: SVGSVGElement);
8
+ }
@@ -0,0 +1,8 @@
1
+ import { CSSParsedDeclaration } from '../css/index';
2
+ import { TextBounds } from '../css/layout/text';
3
+ import { Context } from '../core/context';
4
+ export declare class TextContainer {
5
+ text: string;
6
+ textBounds: TextBounds[];
7
+ constructor(context: Context, node: Text, styles: CSSParsedDeclaration);
8
+ }
@@ -0,0 +1,17 @@
1
+ import { jsPDF } from 'jspdf';
2
+ import { ContextOptions } from './core/context';
3
+ import { CloneOptions, WindowOptions } from './dom/document-cloner';
4
+ import { RenderOptions } from './render/canvas/pdf-renderer';
5
+ import { FontConfig } from './utils';
6
+ export type Options = CloneOptions & WindowOptions & RenderOptions & ContextOptions & {
7
+ backgroundColor: string | null;
8
+ foreignObjectRendering: boolean;
9
+ divisionDisable?: boolean;
10
+ removeContainer?: boolean;
11
+ fontConfig?: FontConfig | FontConfig[] | undefined;
12
+ onJspdfReady?: (jspdfCtx: jsPDF) => void;
13
+ onJspdfFinish?: (jspdfCtx: jsPDF) => void;
14
+ };
15
+ export type DompdfResult = HTMLCanvasElement | Blob;
16
+ declare const dompdf: (element: HTMLElement, options?: Partial<Options>) => Promise<DompdfResult>;
17
+ export default dompdf;
@@ -0,0 +1 @@
1
+ export declare const invariant: (assertion: boolean, error: string) => void;
@@ -0,0 +1,16 @@
1
+ import { Bounds } from '../css/layout/bounds';
2
+ import { BACKGROUND_ORIGIN } from '../css/property-descriptors/background-origin';
3
+ import { ElementContainer } from '../dom/element-container';
4
+ import { BackgroundSizeInfo } from '../css/property-descriptors/background-size';
5
+ import { Vector } from './vector';
6
+ import { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';
7
+ import { CSSValue } from '../css/syntax/parser';
8
+ import { Path } from './path';
9
+ import { BACKGROUND_CLIP } from '../css/property-descriptors/background-clip';
10
+ export declare const calculateBackgroundPositioningArea: (backgroundOrigin: BACKGROUND_ORIGIN, element: ElementContainer) => Bounds;
11
+ export declare const calculateBackgroundPaintingArea: (backgroundClip: BACKGROUND_CLIP, element: ElementContainer) => Bounds;
12
+ export declare const calculateBackgroundRendering: (container: ElementContainer, index: number, intrinsicSize: [number | null, number | null, number | null]) => [Path[], number, number, number, number];
13
+ export declare const isAuto: (token: CSSValue) => boolean;
14
+ export declare const calculateBackgroundSize: (size: BackgroundSizeInfo[], [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null], bounds: Bounds) => [number, number];
15
+ export declare const getBackgroundValueForIndex: <T>(values: T[], index: number) => T;
16
+ export declare const calculateBackgroundRepeatPath: (repeat: BACKGROUND_REPEAT, [x, y]: [number, number], [width, height]: [number, number], backgroundPositioningArea: Bounds, backgroundPaintingArea: Bounds) => [Vector, Vector, Vector, Vector];
@@ -0,0 +1,14 @@
1
+ import { Vector } from './vector';
2
+ import { IPath, PathType, Path } from './path';
3
+ export declare class BezierCurve implements IPath {
4
+ type: PathType;
5
+ start: Vector;
6
+ startControl: Vector;
7
+ endControl: Vector;
8
+ end: Vector;
9
+ constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector);
10
+ subdivide(t: number, firstHalf: boolean): BezierCurve;
11
+ add(deltaX: number, deltaY: number): BezierCurve;
12
+ reverse(): BezierCurve;
13
+ }
14
+ export declare const isBezierCurve: (path: Path) => path is BezierCurve;
@@ -0,0 +1,6 @@
1
+ import { Path } from './path';
2
+ import { BoundCurves } from './bound-curves';
3
+ export declare const parsePathForBorder: (curves: BoundCurves, borderSide: number) => Path[];
4
+ export declare const parsePathForBorderDoubleOuter: (curves: BoundCurves, borderSide: number) => Path[];
5
+ export declare const parsePathForBorderDoubleInner: (curves: BoundCurves, borderSide: number) => Path[];
6
+ export declare const parsePathForBorderStroke: (curves: BoundCurves, borderSide: number) => Path[];
@@ -0,0 +1,32 @@
1
+ import { ElementContainer } from '../dom/element-container';
2
+ import { Path } from './path';
3
+ export declare class BoundCurves {
4
+ readonly topLeftBorderDoubleOuterBox: Path;
5
+ readonly topRightBorderDoubleOuterBox: Path;
6
+ readonly bottomRightBorderDoubleOuterBox: Path;
7
+ readonly bottomLeftBorderDoubleOuterBox: Path;
8
+ readonly topLeftBorderDoubleInnerBox: Path;
9
+ readonly topRightBorderDoubleInnerBox: Path;
10
+ readonly bottomRightBorderDoubleInnerBox: Path;
11
+ readonly bottomLeftBorderDoubleInnerBox: Path;
12
+ readonly topLeftBorderStroke: Path;
13
+ readonly topRightBorderStroke: Path;
14
+ readonly bottomRightBorderStroke: Path;
15
+ readonly bottomLeftBorderStroke: Path;
16
+ readonly topLeftBorderBox: Path;
17
+ readonly topRightBorderBox: Path;
18
+ readonly bottomRightBorderBox: Path;
19
+ readonly bottomLeftBorderBox: Path;
20
+ readonly topLeftPaddingBox: Path;
21
+ readonly topRightPaddingBox: Path;
22
+ readonly bottomRightPaddingBox: Path;
23
+ readonly bottomLeftPaddingBox: Path;
24
+ readonly topLeftContentBox: Path;
25
+ readonly topRightContentBox: Path;
26
+ readonly bottomRightContentBox: Path;
27
+ readonly bottomLeftContentBox: Path;
28
+ constructor(element: ElementContainer);
29
+ }
30
+ export declare const calculateBorderBoxPath: (curves: BoundCurves) => Path[];
31
+ export declare const calculateContentBoxPath: (curves: BoundCurves) => Path[];
32
+ export declare const calculatePaddingBoxPath: (curves: BoundCurves) => Path[];
@@ -0,0 +1,4 @@
1
+ import { Bounds } from '../css/layout/bounds';
2
+ import { ElementContainer } from '../dom/element-container';
3
+ export declare const paddingBox: (element: ElementContainer) => Bounds;
4
+ export declare const contentBox: (element: ElementContainer) => Bounds;
@@ -0,0 +1,11 @@
1
+ import { Context } from '../../core/context';
2
+ import { Renderer } from '../renderer';
3
+ import { RenderConfigurations } from './pdf-renderer';
4
+ export declare class ForeignObjectRenderer extends Renderer {
5
+ canvas: HTMLCanvasElement;
6
+ ctx: CanvasRenderingContext2D;
7
+ options: RenderConfigurations;
8
+ constructor(context: Context, options: RenderConfigurations);
9
+ render(element: HTMLElement): Promise<HTMLCanvasElement>;
10
+ }
11
+ export declare const loadSerializedSVG: (svg: Node) => Promise<HTMLImageElement>;
@@ -0,0 +1,110 @@
1
+ import { Context2d, EncryptionOptions, jsPDF } from 'jspdf';
2
+ import 'jspdf/dist/polyfills.es.js';
3
+ import { Context } from '../../core/context';
4
+ import { CSSParsedDeclaration } from '../../css';
5
+ import { Bounds } from '../../css/layout/bounds';
6
+ import { TextBounds } from '../../css/layout/text';
7
+ import { BORDER_STYLE } from '../../css/property-descriptors/border-style';
8
+ import { Color } from '../../css/types/color';
9
+ import { ElementContainer } from '../../dom/element-container';
10
+ import { CanvasElementContainer } from '../../dom/replaced-elements/canvas-element-container';
11
+ import { ImageElementContainer } from '../../dom/replaced-elements/image-element-container';
12
+ import { SVGElementContainer } from '../../dom/replaced-elements/svg-element-container';
13
+ import { TextContainer } from '../../dom/text-container';
14
+ import { BoundCurves } from '../bound-curves';
15
+ import { IElementEffect } from '../effects';
16
+ import { FontConfig } from '../../utils';
17
+ import { Path } from '../path';
18
+ import { Renderer } from '../renderer';
19
+ import { ElementPaint, StackingContext } from '../stacking-context';
20
+ export type RenderConfigurations = RenderOptions & {
21
+ backgroundColor: Color | null;
22
+ fontConfig: FontConfig | FontConfig[] | undefined;
23
+ };
24
+ export type pageConfigOptions = {
25
+ header: {
26
+ content: string | ((renderer: any, pageNum: string) => void);
27
+ height: number;
28
+ contentPosition: 'center' | 'centerLeft' | 'centerRight' | 'centerTop' | 'centerBottom' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom' | [number, number];
29
+ contentColor: string;
30
+ contentFontSize: number;
31
+ padding?: [number, number, number, number];
32
+ };
33
+ footer: {
34
+ content: string | ((renderer: any, pageNum: string) => void);
35
+ height: number;
36
+ contentPosition: 'center' | 'centerLeft' | 'centerRight' | 'centerTop' | 'centerBottom' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom' | [number, number];
37
+ contentColor: string;
38
+ contentFontSize: number;
39
+ padding?: [number, number, number, number];
40
+ };
41
+ };
42
+ export interface RenderOptions {
43
+ scale: number;
44
+ canvas?: HTMLCanvasElement;
45
+ x: number;
46
+ y: number;
47
+ width: number;
48
+ height: number;
49
+ pdfFileName?: string;
50
+ encryption?: EncryptionOptions | undefined;
51
+ precision?: number;
52
+ floatPrecision?: number | 'smart';
53
+ compress?: boolean;
54
+ putOnlyUsedFonts?: boolean;
55
+ pagination?: boolean;
56
+ format?: 'a0' | 'a1' | 'a2' | 'a3' | 'a4' | 'a5' | 'a6' | 'a7' | 'a8' | 'a9' | 'a10' | 'b0' | 'b1' | 'b2' | 'b3' | 'b4' | 'b5' | 'b6' | 'b7' | 'b8' | 'b9' | 'b10' | 'c0' | 'c1' | 'c2' | 'c3' | 'c4' | 'c5' | 'c6' | 'c7' | 'c8' | 'c9' | 'c10' | 'dl' | 'letter' | 'government-letter' | 'legal' | 'junior-legal' | 'ledger' | 'tabloid' | 'credit-card' | [number, number];
57
+ pageConfig?: pageConfigOptions;
58
+ }
59
+ export declare class JsPdfContext2d {
60
+ }
61
+ export interface JsPdfContext2d extends Context2d {
62
+ getLineDash(): number[];
63
+ setLineDash(segments: number[]): void;
64
+ }
65
+ export declare class CanvasRenderer extends Renderer {
66
+ canvas: HTMLCanvasElement;
67
+ readonly jspdfCtx: jsPDF;
68
+ readonly context2dCtx: JsPdfContext2d;
69
+ private readonly _activeEffects;
70
+ private readonly fontMetrics;
71
+ private readonly pxToPt;
72
+ private totalPages;
73
+ constructor(context: Context, options: RenderConfigurations);
74
+ addFontToJsPDF(): void;
75
+ resetJsPDFFont(): void;
76
+ setTextFont(styles: CSSParsedDeclaration): string;
77
+ applyEffects(effects: IElementEffect[]): void;
78
+ applyEffect(effect: IElementEffect): void;
79
+ popEffect(): void;
80
+ renderStack(stack: StackingContext): Promise<void>;
81
+ renderNode(paint: ElementPaint): Promise<void>;
82
+ renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void;
83
+ private createFontStyle;
84
+ private convertColor;
85
+ renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void>;
86
+ renderReplacedJsPdfImage(container: ImageElementContainer, image: HTMLImageElement | HTMLCanvasElement): void;
87
+ renderReplacedJsPdfSvg(container: SVGElementContainer, image: HTMLImageElement | HTMLCanvasElement): void;
88
+ renderReplacedJsPdfCanvasImage(container: CanvasElementContainer): void;
89
+ renderNodeContent(paint: ElementPaint): Promise<void>;
90
+ renderStackContent(stack: StackingContext): Promise<void>;
91
+ mask(paths: Path[]): void;
92
+ path(paths: Path[], ctx2d?: Context2d | CanvasRenderingContext2D): void;
93
+ formatPath(paths: Path[], ctx2d?: Context2d | CanvasRenderingContext2D): void;
94
+ renderRepeat(boxs: Bounds, ctx: CanvasRenderingContext2D, path: Path[], pattern: CanvasPattern | CanvasGradient): void;
95
+ resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement;
96
+ renderBackgroundImage(container: ElementContainer): Promise<void>;
97
+ renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void>;
98
+ renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void>;
99
+ renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void>;
100
+ renderDashedDottedBorder(color: Color, width: number, side: number, curvePoints: BoundCurves, style: BORDER_STYLE): Promise<void>;
101
+ addPage(offsetY: number): Promise<void>;
102
+ renderPage(element: ElementContainer, pageNum: number): Promise<void>;
103
+ setTotalPages(total: number): void;
104
+ private setTextColorFromString;
105
+ private safe;
106
+ private textPdf;
107
+ private computeContentPosition;
108
+ private addImagePdf;
109
+ output(): Promise<Blob>;
110
+ }
@@ -0,0 +1,38 @@
1
+ import { Matrix } from '../css/property-descriptors/transform';
2
+ import { Path } from './path';
3
+ export declare const enum EffectType {
4
+ TRANSFORM = 0,
5
+ CLIP = 1,
6
+ OPACITY = 2
7
+ }
8
+ export declare const enum EffectTarget {
9
+ BACKGROUND_BORDERS = 2,
10
+ CONTENT = 4
11
+ }
12
+ export interface IElementEffect {
13
+ readonly type: EffectType;
14
+ readonly target: number;
15
+ }
16
+ export declare class TransformEffect implements IElementEffect {
17
+ readonly offsetX: number;
18
+ readonly offsetY: number;
19
+ readonly matrix: Matrix;
20
+ readonly type: EffectType;
21
+ readonly target: number;
22
+ constructor(offsetX: number, offsetY: number, matrix: Matrix);
23
+ }
24
+ export declare class ClipEffect implements IElementEffect {
25
+ readonly path: Path[];
26
+ readonly target: EffectTarget;
27
+ readonly type: EffectType;
28
+ constructor(path: Path[], target: EffectTarget);
29
+ }
30
+ export declare class OpacityEffect implements IElementEffect {
31
+ readonly opacity: number;
32
+ readonly type: EffectType;
33
+ readonly target: number;
34
+ constructor(opacity: number);
35
+ }
36
+ export declare const isTransformEffect: (effect: IElementEffect) => effect is TransformEffect;
37
+ export declare const isClipEffect: (effect: IElementEffect) => effect is ClipEffect;
38
+ export declare const isOpacityEffect: (effect: IElementEffect) => effect is OpacityEffect;
@@ -0,0 +1,11 @@
1
+ export interface FontMetric {
2
+ baseline: number;
3
+ middle: number;
4
+ }
5
+ export declare class FontMetrics {
6
+ private readonly _data;
7
+ private readonly _document;
8
+ constructor(document: Document);
9
+ private parseMetrics;
10
+ getMetrics(fontFamily: string, fontSize: string): FontMetric;
11
+ }
@@ -0,0 +1,4 @@
1
+ export declare const PAGE_FORMAT_MAP: Record<string, {
2
+ width: number;
3
+ height: number;
4
+ }>;
@@ -0,0 +1,3 @@
1
+ import type { ElementContainer } from '../dom/element-container';
2
+ import { pageConfigOptions } from './canvas/pdf-renderer';
3
+ export declare const paginateNode: (root: ElementContainer, pageHeight: number, initialOffset?: number, totalHeight?: number, pageConfig?: pageConfigOptions) => ElementContainer[];
@@ -0,0 +1,3 @@
1
+ import type { ElementContainer } from '../dom/element-container';
2
+ import { pageConfigOptions } from './canvas/pdf-renderer';
3
+ export declare const paginateNode: (root: ElementContainer, pageHeight: number, initialOffset?: number, totalHeight?: number, pageConfig?: pageConfigOptions) => ElementContainer[];
@@ -0,0 +1,13 @@
1
+ import { BezierCurve } from './bezier-curve';
2
+ import { Vector } from './vector';
3
+ export declare const enum PathType {
4
+ VECTOR = 0,
5
+ BEZIER_CURVE = 1
6
+ }
7
+ export interface IPath {
8
+ type: PathType;
9
+ add(deltaX: number, deltaY: number): IPath;
10
+ }
11
+ export declare const equalPath: (a: Path[], b: Path[]) => boolean;
12
+ export declare const transformPath: (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number) => Path[];
13
+ export type Path = Vector | BezierCurve;
@@ -0,0 +1,7 @@
1
+ import { Context } from '../core/context';
2
+ import { RenderConfigurations } from './canvas/pdf-renderer';
3
+ export declare class Renderer {
4
+ protected readonly context: Context;
5
+ protected readonly options: RenderConfigurations;
6
+ constructor(context: Context, options: RenderConfigurations);
7
+ }
@@ -0,0 +1,24 @@
1
+ import { ElementContainer } from '../dom/element-container';
2
+ import { BoundCurves } from './bound-curves';
3
+ import { EffectTarget, IElementEffect } from './effects';
4
+ export declare class StackingContext {
5
+ element: ElementPaint;
6
+ negativeZIndex: StackingContext[];
7
+ zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];
8
+ positiveZIndex: StackingContext[];
9
+ nonPositionedFloats: StackingContext[];
10
+ nonPositionedInlineLevel: StackingContext[];
11
+ inlineLevel: ElementPaint[];
12
+ nonInlineLevel: ElementPaint[];
13
+ constructor(container: ElementPaint);
14
+ }
15
+ export declare class ElementPaint {
16
+ readonly container: ElementContainer;
17
+ readonly parent: ElementPaint | null;
18
+ readonly effects: IElementEffect[];
19
+ readonly curves: BoundCurves;
20
+ listValue?: string;
21
+ constructor(container: ElementContainer, parent: ElementPaint | null);
22
+ getEffects(target: EffectTarget): IElementEffect[];
23
+ }
24
+ export declare const parseStackingContexts: (container: ElementContainer) => StackingContext;
@@ -0,0 +1,9 @@
1
+ import { IPath, Path, PathType } from './path';
2
+ export declare class Vector implements IPath {
3
+ type: PathType;
4
+ x: number;
5
+ y: number;
6
+ constructor(x: number, y: number);
7
+ add(deltaX: number, deltaY: number): Vector;
8
+ }
9
+ export declare const isVector: (path: Path) => path is Vector;
@@ -0,0 +1,2 @@
1
+ import { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';
2
+ export declare function getBackgroundRepeat(value: BACKGROUND_REPEAT): string;
@@ -0,0 +1,7 @@
1
+ import type { ElementContainer } from '../dom/element-container';
2
+ /**
3
+ * Recursively traverse the nodes and check whether the textNodes of all levels are empty arrays
4
+ * @param {ElementContainer} node
5
+ * @returns {boolean} - If all textNodes are empty, return true; otherwise, return false
6
+ */
7
+ export declare function checkAllTextNodesEmpty(node: ElementContainer): boolean;
@@ -0,0 +1,9 @@
1
+ export interface FontConfig {
2
+ fontFamily: string;
3
+ fontBase64: string;
4
+ fontStyle: string;
5
+ fontWeight: 400 | 700;
6
+ iconFont?: boolean;
7
+ }
8
+ export declare function validateFontConfig(fontConfig: FontConfig | FontConfig[] | undefined): boolean;
9
+ export declare function setOptionFontConfig(rawConfig: FontConfig | FontConfig[] | undefined): FontConfig[] | undefined;
@@ -0,0 +1,5 @@
1
+ export * from './css-utils';
2
+ export * from './element-utils';
3
+ export * from './font-utils';
4
+ export * from './type-utils';
5
+ export * from './url-path';
@@ -0,0 +1,4 @@
1
+ export declare function isEmptyValue(obj: unknown): boolean;
2
+ export declare function isArray(obj: unknown): obj is Array<unknown>;
3
+ export declare function isObject(obj: unknown): obj is Record<string, unknown>;
4
+ export declare function isFunction(fn: unknown): fn is (...args: unknown[]) => unknown;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 判断图片路径是否为指定类型的图片
3
+ * @param {string} path 图片路径/URL(如 "../tests/assets/image.svg"、"https://xxx.com/photo.webp")
4
+ * @param {("svg" | "webp" | "png" | "jpg" | "gif" | "unknown")} type 要判断的图片类型
5
+ * @returns {boolean} 是否为指定类型的图片
6
+ */
7
+ export declare function getImageTypeByPath(path: string, type: 'svg' | 'webp' | 'png' | 'jpg' | 'gif' | 'unknown'): boolean;
@@ -3,5 +3,7 @@ export interface FontConfig {
3
3
  fontBase64: string;
4
4
  fontStyle: string;
5
5
  fontWeight: 400 | 700;
6
+ iconFont?: boolean;
6
7
  }
7
8
  export declare function validateFontConfig(fontConfig: FontConfig | FontConfig[] | undefined): boolean;
9
+ export declare function setOptionFontConfig(rawConfig: FontConfig | FontConfig[] | undefined): FontConfig[] | undefined;
@@ -56,8 +56,8 @@
56
56
  var fontName = document.getElementById('fontName').value;
57
57
  var fontStyle = document.getElementById('fontStyle').value;
58
58
  var createdFileName = fontName + '-' + fontStyle + '.ttf';
59
- jsFile += 'var ' + fontName + ' = \'' + window.loadedFileContents + '\';\n';
60
- jsFile += 'window.fontBase64 = ' + fontName + ';\n';
59
+ jsFile += 'window. ' + fontName + ' = \'' + window.loadedFileContents + '\';\n';
60
+ // jsFile += 'window.' + fontBase64 + ' = ' + fontName + ';\n';
61
61
 
62
62
  var newJsfile = new File([jsFile], fontName + '-' + fontStyle + '.js', { type: 'text/plain;charset=utf-8' });
63
63
  saveAs(newJsfile);