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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * dompdf.js 1.1.0 <https://dompdfjs.lisky.com.cn>
2
+ * dompdf.js 1.2.0 <https://dompdfjs.lisky.com.cn>
3
3
  * Copyright (c) 2026 lfc <https://dompdfjs.lisky.com.cn/>
4
4
  * Released under MIT License
5
5
  */
@@ -6048,9 +6048,7 @@ var capitalize$1 = function (m, p1, p2) {
6048
6048
  };
6049
6049
 
6050
6050
  var LIST_OWNERS$1 = ['OL', 'UL', 'MENU'];
6051
- // let foreignObjectRendererList: any = []
6052
6051
  var parseNodeTree$1 = function (context, node, parent, root, foreignObjectRendererList) {
6053
- // console.log('parseNodeTree', context,node,parent,root)
6054
6052
  for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
6055
6053
  nextNode = childNode.nextSibling;
6056
6054
  if (isTextNode$1(childNode) && childNode.data.trim().length > 0) {
@@ -6089,9 +6087,6 @@ var parseNodeTree$1 = function (context, node, parent, root, foreignObjectRender
6089
6087
  if (isElementNode$1(node) && node.hasAttribute('foreignobjectrendering')) {
6090
6088
  foreignObjectRendererList.push(node);
6091
6089
  }
6092
- // if (parent.foreignobjectrendering){
6093
- // container.foreignobjectrendering = true;
6094
- // }
6095
6090
  parent.elements.push(container);
6096
6091
  childNode.slot;
6097
6092
  if (childNode.shadowRoot) {
@@ -6137,13 +6132,6 @@ var createContainer$1 = function (context, element) {
6137
6132
  }
6138
6133
  return new ElementContainer$1(context, element);
6139
6134
  };
6140
- // export const parseTree = (context: Context, element: HTMLElement): ElementContainer => {
6141
- // const container = createContainer(context, element);
6142
- // container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;
6143
- // console.log(element,'nodedom解析')
6144
- // parseNodeTree(context, element, container, container);
6145
- // return container;
6146
- // };
6147
6135
  var createsRealStackingContext$1 = function (node, container, root) {
6148
6136
  return (container.styles.isPositionedWithZIndex() ||
6149
6137
  container.styles.opacity < 1 ||
@@ -6177,9 +6165,6 @@ var parseTree$1 = function (context, element) { return __awaiter$1(void 0, void
6177
6165
  var itemNode = uniqueList[index];
6178
6166
  var width = itemNode.offsetWidth || itemNode.getBoundingClientRect().width || 100;
6179
6167
  var height = itemNode.offsetHeight || itemNode.getBoundingClientRect().height || 100;
6180
- // const rect = itemNode.getBoundingClientRect();
6181
- // const scrollX = window.scrollX || document.documentElement.scrollLeft;
6182
- // const scrollY = window.scrollY || document.documentElement.scrollTop;
6183
6168
  // 创建图片容器
6184
6169
  var bgContainer = document.createElement('div');
6185
6170
  bgContainer.style.width = Math.ceil(width) + 'px';
@@ -6269,53 +6254,6 @@ var renderForeignObject = function (element) { return __awaiter$1(void 0, void 0
6269
6254
  }
6270
6255
  });
6271
6256
  }); };
6272
- // 修复3:安全截图(不修改原始 DOM)
6273
- // const renderForeignObject = async (element: HTMLElement) => {
6274
- // // 1. 克隆元素(包括所有子元素)
6275
- // const clone = element.cloneNode(true) as HTMLElement;
6276
- // // 2. 创建临时容器(确保正确计算样式)
6277
- // const container = document.createElement('div');
6278
- // container.style.position = 'absolute';
6279
- // container.style.left = '-9999px';
6280
- // container.appendChild(clone);
6281
- // document.body.appendChild(container);
6282
- // // 3. 应用透明样式到克隆体
6283
- // const applyInvisibleStyle = (el: Element) => {
6284
- // if (el instanceof HTMLElement) {
6285
- // el.style.color = 'transparent';
6286
- // el.style.backgroundColor = 'transparent';
6287
- // Array.from(el.children).forEach(applyInvisibleStyle);
6288
- // }
6289
- // };
6290
- // applyInvisibleStyle(clone);
6291
- // // 4. 获取尺寸
6292
- // const rect = clone.getBoundingClientRect();
6293
- // if (rect.width === 0 || rect.height === 0) {
6294
- // document.body.removeChild(container);
6295
- // return null;
6296
- // }
6297
- // try {
6298
- // // 5. 截图克隆体
6299
- // const capture = await snapdom(clone, {
6300
- // // width: Math.ceil(rect.width),
6301
- // // height: Math.ceil(rect.height)
6302
- // });
6303
- // const pngData = await capture.toPng({
6304
- // quality: 0.9,
6305
- // // width: Math.ceil(rect.width),
6306
- // // height: Math.ceil(rect.height)
6307
- // });
6308
- // return pngData;
6309
- // } catch (error) {
6310
- // console.error('截图失败:', error);
6311
- // return null;
6312
- // } finally {
6313
- // // 6. 确保清理临时元素
6314
- // document.body.removeChild(container);
6315
- // }
6316
- // };
6317
- // 修复4:移除原有的 makeInvisible 函数
6318
- // 不再需要,因为新方法使用克隆体
6319
6257
  var createsStackingContext$1 = function (styles) { return styles.isPositioned() || styles.isFloating(); };
6320
6258
  var isTextNode$1 = function (node) { return node.nodeType === Node.TEXT_NODE; };
6321
6259
  var isElementNode$1 = function (node) { return node.nodeType === Node.ELEMENT_NODE; };
@@ -22784,13 +22722,29 @@ function validateFontConfig(fontConfig) {
22784
22722
  return false;
22785
22723
  }
22786
22724
  }
22787
- // 3. 枚举值校验:fontWeight 只能是 400 700
22725
+ // check:fontWeight is only 400 or 700
22788
22726
  if (![400, 700].includes(config.fontWeight)) {
22789
22727
  console.error("The fontWeight value is invalid. It can only be 400 or 700. Actual value:".concat(config.fontWeight));
22790
22728
  return false;
22791
22729
  }
22730
+ if (config.iconFont !== undefined && typeof config.iconFont !== 'boolean') {
22731
+ console.error("The field iconFont has a type error. Expected boolean, but received ".concat(typeof config.iconFont));
22732
+ return false;
22733
+ }
22792
22734
  }
22793
22735
  return true;
22736
+ }
22737
+ // The core function for handling configuration and populating default values
22738
+ function setOptionFontConfig(rawConfig) {
22739
+ if (!validateFontConfig(rawConfig)) {
22740
+ return undefined;
22741
+ }
22742
+ var configList = isArray$1(rawConfig) ? rawConfig : [rawConfig];
22743
+ var processedList = configList.map(function (config) {
22744
+ var _a;
22745
+ return (__assign$1(__assign$1({}, config), { iconFont: (_a = config.iconFont) !== null && _a !== void 0 ? _a : false }));
22746
+ });
22747
+ return processedList;
22794
22748
  }
22795
22749
 
22796
22750
  /**
@@ -23059,13 +23013,7 @@ var CanvasRenderer$1 = /** @class */ (function (_super) {
23059
23013
  // reset all font
23060
23014
  CanvasRenderer.prototype.resetJsPDFFont = function () {
23061
23015
  var _this = this;
23062
- // if fontConfig is a single FontConfig object
23063
- if (isObject$4(this.options.fontConfig) &&
23064
- this.options.fontConfig &&
23065
- this.options.fontConfig.fontFamily) {
23066
- this.jspdfCtx.setFont(this.options.fontConfig.fontFamily);
23067
- }
23068
- else if (isArray$1(this.options.fontConfig) && !isEmptyValue(this.options.fontConfig)) {
23016
+ if (isArray$1(this.options.fontConfig) && !isEmptyValue(this.options.fontConfig)) {
23069
23017
  this.options.fontConfig.forEach(function (v) {
23070
23018
  v.fontFamily && _this.jspdfCtx.setFont(v.fontFamily);
23071
23019
  });
@@ -23074,16 +23022,25 @@ var CanvasRenderer$1 = /** @class */ (function (_super) {
23074
23022
  // setFont form options
23075
23023
  CanvasRenderer.prototype.setTextFont = function (styles) {
23076
23024
  var _a, _b, _c;
23077
- // console.log(styles.fontWeight, styles.fontStyle, 'styles');
23025
+ // console.log(styles.fontWeight, styles.fontStyle, styles.fontFamily, 'styles');
23078
23026
  if (isEmptyValue(this.options.fontConfig)) {
23079
23027
  return '';
23080
23028
  }
23081
- if (this.options.fontConfig.length === 1) {
23082
- var fontFamilyCustom_1 = (_a = this.options.fontConfig[0].fontFamily) !== null && _a !== void 0 ? _a : '';
23029
+ var fontConfigRef = this.options.fontConfig;
23030
+ // 处理字体图标场景
23031
+ var isIconFont = fontConfigRef.find(function (v) { return v.iconFont; });
23032
+ var otherFonts = fontConfigRef.filter(function (v) { return !v.iconFont; });
23033
+ if (isIconFont && styles.fontFamily.some(function (family) { return family.includes(isIconFont.fontFamily); })) {
23034
+ isIconFont.fontFamily && this.jspdfCtx.setFont(isIconFont.fontFamily);
23035
+ return isIconFont.fontFamily;
23036
+ }
23037
+ // 除开字体图标场景
23038
+ if (otherFonts.length === 1) {
23039
+ var fontFamilyCustom_1 = (_a = otherFonts[0].fontFamily) !== null && _a !== void 0 ? _a : '';
23083
23040
  fontFamilyCustom_1 && this.jspdfCtx.setFont(fontFamilyCustom_1);
23084
23041
  return fontFamilyCustom_1;
23085
23042
  }
23086
- var fontFamilyCustom = (_c = (_b = this.options.fontConfig.find(function (v) { return v.fontWeight === styles.fontWeight && v.fontStyle === styles.fontStyle; })) === null || _b === void 0 ? void 0 : _b.fontFamily) !== null && _c !== void 0 ? _c : '';
23043
+ var fontFamilyCustom = (_c = (_b = otherFonts.find(function (v) { return v.fontWeight === (styles.fontWeight > 500 ? 700 : 400) && v.fontStyle === styles.fontStyle; })) === null || _b === void 0 ? void 0 : _b.fontFamily) !== null && _c !== void 0 ? _c : '';
23087
23044
  fontFamilyCustom && this.jspdfCtx.setFont(fontFamilyCustom);
23088
23045
  return fontFamilyCustom;
23089
23046
  };
@@ -23201,7 +23158,7 @@ var CanvasRenderer$1 = /** @class */ (function (_super) {
23201
23158
  _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];
23202
23159
  fontFamilyFinal = this.setTextFont(styles);
23203
23160
  this.context2dCtx.font = fontFamilyFinal || font;
23204
- // console.log(fontFamilyFinal, 'render getFont', this.jspdfCtx.getFont());
23161
+ // console.log(fontFamilyFinal, styles, 'render getFont', this.jspdfCtx.getFont());
23205
23162
  // jspdf context2d not supported ‘direction’
23206
23163
  // this.context2dCtx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';
23207
23164
  this.context2dCtx.textAlign = 'left';
@@ -24040,22 +23997,32 @@ var CanvasRenderer$1 = /** @class */ (function (_super) {
24040
23997
  _a.sent();
24041
23998
  this.applyEffects([]);
24042
23999
  if (cfg === null || cfg === void 0 ? void 0 : cfg.header) {
24043
- headerText = String(cfg.header.content)
24044
- .replace('${currentPage}', String(pageNum))
24045
- .replace('${totalPages}', String(this.totalPages));
24046
- this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.header.contentFontSize), 1));
24047
- this.setTextColorFromString(cfg.header.contentColor);
24048
- headerPos = this.computeContentPosition(cfg.header.contentPosition, pageW, pageH, cfg.header.height, mt, mb, 'header', cfg.header.padding);
24049
- this.textPdf(headerText, headerPos.x, headerPos.y, headerPos.align);
24000
+ if (typeof cfg.header.content === 'function') {
24001
+ cfg.header.content(this, String(pageNum));
24002
+ }
24003
+ else {
24004
+ headerText = String(cfg.header.content)
24005
+ .replace('${currentPage}', String(pageNum))
24006
+ .replace('${totalPages}', String(this.totalPages));
24007
+ this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.header.contentFontSize), 1));
24008
+ this.setTextColorFromString(cfg.header.contentColor);
24009
+ headerPos = this.computeContentPosition(cfg.header.contentPosition, pageW, pageH, cfg.header.height, mt, mb, 'header', cfg.header.padding);
24010
+ this.textPdf(headerText, headerPos.x, headerPos.y, headerPos.align);
24011
+ }
24050
24012
  }
24051
24013
  if (cfg === null || cfg === void 0 ? void 0 : cfg.footer) {
24052
- footerText = String(cfg.footer.content)
24053
- .replace('${currentPage}', String(pageNum))
24054
- .replace('${totalPages}', String(this.totalPages));
24055
- this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.footer.contentFontSize), 1));
24056
- this.setTextColorFromString(cfg.footer.contentColor);
24057
- footerPos = this.computeContentPosition(cfg.footer.contentPosition, pageW, pageH, cfg.footer.height, mt, mb, 'footer', cfg.footer.padding);
24058
- this.textPdf(footerText, footerPos.x, footerPos.y, footerPos.align);
24014
+ if (typeof cfg.footer.content === 'function') {
24015
+ cfg.footer.content(this, String(pageNum));
24016
+ }
24017
+ else {
24018
+ footerText = String(cfg.footer.content)
24019
+ .replace('${currentPage}', String(pageNum))
24020
+ .replace('${totalPages}', String(this.totalPages));
24021
+ this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.footer.contentFontSize), 1));
24022
+ this.setTextColorFromString(cfg.footer.contentColor);
24023
+ footerPos = this.computeContentPosition(cfg.footer.contentPosition, pageW, pageH, cfg.footer.height, mt, mb, 'footer', cfg.footer.padding);
24024
+ this.textPdf(footerText, footerPos.x, footerPos.y, footerPos.align);
24025
+ }
24059
24026
  }
24060
24027
  return [2 /*return*/];
24061
24028
  }
@@ -24281,6 +24248,8 @@ var offSetTotal = 0;
24281
24248
  var activePageHeight = 1123;
24282
24249
  var pageMarginTop = 0;
24283
24250
  var pageMarginBottom = 0;
24251
+ // let realPageSize = 0;
24252
+ var pageTopOffset = 10;
24284
24253
  var cloneContainerShallow = function (src) {
24285
24254
  var c = Object.create(Object.getPrototypeOf(src));
24286
24255
  var srcObj = src;
@@ -24328,11 +24297,14 @@ var filterTextNodesForPage = function (container, pageStart, pageEnd) {
24328
24297
  for (var _i = 0, _a = container.textNodes; _i < _a.length; _i++) {
24329
24298
  var tc = _a[_i];
24330
24299
  var filtered = [];
24331
- for (var _b = 0, _c = tc.textBounds; _b < _c.length; _b++) {
24332
- var tb = _c[_b];
24300
+ var _loop_1 = function (tb) {
24333
24301
  var pageIndex = Math.floor(pageEnd / activePageHeight);
24334
24302
  var maxKey = Math.max.apply(Math, Object.keys(offSetPageObj).map(function (k) { return +k; }));
24335
- var activePageOffset = offSetPageObj[maxKey] || 0;
24303
+ var activePageOffset = pageIndex === 1 ? 0 : offSetPageObj[maxKey] || 0;
24304
+ var prevMaxKey = Math.max.apply(Math, Object.keys(offSetPageObj)
24305
+ .filter(function (k) { return +k < pageIndex; })
24306
+ .map(function (k) { return +k; }));
24307
+ var prevPageOffset = offSetPageObj[prevMaxKey] || 0;
24336
24308
  var top_1 = tb.bounds.top + activePageOffset;
24337
24309
  var bottom = tb.bounds.top + tb.bounds.height + activePageOffset;
24338
24310
  var intersects = bottom > pageStart && top_1 < pageEnd;
@@ -24340,11 +24312,24 @@ var filterTextNodesForPage = function (container, pageStart, pageEnd) {
24340
24312
  if (intersects && !crossesToNextPage) {
24341
24313
  var offsetNum = 0;
24342
24314
  if (top_1 < pageStart) {
24343
- offsetNum = pageStart - top_1;
24344
- if (!offSetPageObj[pageIndex] ||
24345
- (offSetPageObj[pageIndex] && offSetPageObj[pageIndex] < offsetNum)) {
24346
- if (offSetPageObj[pageIndex] && offSetPageObj[pageIndex] < offsetNum) {
24347
- offSetTotal = offSetTotal - offSetPageObj[pageIndex] + offsetNum;
24315
+ if (prevPageOffset || pageIndex > 1) {
24316
+ // Because the offset is only increased when paging occurs, and each time elements are paged, a full traversal is performed
24317
+ // Determine that the current text does not require pagination rendering based on the height calculated on the previous page, so proceed directly to continue
24318
+ var prevPageStart = pageStart - activePageHeight;
24319
+ var prevPageEnd = pageEnd - activePageHeight;
24320
+ var prevTop = tb.bounds.top + prevPageOffset;
24321
+ var prevBottom = tb.bounds.top + tb.bounds.height + prevPageOffset;
24322
+ var prevIntersects = prevBottom > prevPageStart && prevTop < prevPageEnd;
24323
+ var prevCrossesToNextPage = prevBottom > prevPageEnd;
24324
+ if (prevIntersects && !prevCrossesToNextPage) {
24325
+ return "continue";
24326
+ }
24327
+ }
24328
+ offsetNum = pageStart - top_1 + pageTopOffset;
24329
+ var prev = offSetPageObj[pageIndex] || 0;
24330
+ if (!offSetPageObj[pageIndex] || prev < offsetNum) {
24331
+ if (prev < offsetNum) {
24332
+ offSetTotal = offSetTotal - prev + offsetNum;
24348
24333
  }
24349
24334
  else {
24350
24335
  offSetTotal += offsetNum;
@@ -24353,29 +24338,26 @@ var filterTextNodesForPage = function (container, pageStart, pageEnd) {
24353
24338
  }
24354
24339
  // Fix the issue where no offset is added for the first text container
24355
24340
  bottom += offsetNum;
24341
+ top_1 += offsetNum;
24342
+ // fix add realpageSize
24343
+ // TODO
24344
+ // if (offsetNum && realPageSize <= pageIndex) {
24345
+ // realPageSize = pageIndex + 1;
24346
+ // }
24356
24347
  }
24357
24348
  var visibleTop = Math.max(top_1, pageStart);
24358
24349
  var visibleBottom = Math.min(bottom, pageEnd);
24359
24350
  var newTop = visibleTop - pageStart;
24360
24351
  var newHeight = Math.max(0, visibleBottom - visibleTop);
24361
- // 根据可见区域生成新的 Bounds
24352
+ // Generate new Bounds based on the visible area
24362
24353
  var nb = new Bounds$1(tb.bounds.left, newTop + pageMarginTop, tb.bounds.width, newHeight);
24363
- // if (pageIndex == 3) {
24364
- // console.log(
24365
- // 'nb',
24366
- // nb,
24367
- // 'pageStart',
24368
- // pageStart,
24369
- // 'tb.bounds.top',
24370
- // tb.bounds.top,
24371
- // 'activePageOffset',
24372
- // activePageOffset,
24373
- // (tb as any).text
24374
- // );
24375
- // }
24376
- // 把文字内容和新的 bounds 一起放进 filtered
24354
+ // Put the text content and the new bounds into filtered
24377
24355
  filtered.push({ text: tb.text, bounds: nb });
24378
24356
  }
24357
+ };
24358
+ for (var _b = 0, _c = tc.textBounds; _b < _c.length; _b++) {
24359
+ var tb = _c[_b];
24360
+ _loop_1(tb);
24379
24361
  }
24380
24362
  if (filtered.length > 0) {
24381
24363
  var clone = cloneTextContainerShallow(tc);
@@ -24388,26 +24370,37 @@ var filterTextNodesForPage = function (container, pageStart, pageEnd) {
24388
24370
  var filterElementForPage = function (container, pageStart, pageEnd) {
24389
24371
  var pageIndex = Math.floor(pageEnd / activePageHeight);
24390
24372
  var maxKey = Math.max.apply(Math, Object.keys(offSetPageObj).map(function (k) { return +k; }));
24391
- var activePageOffset = offSetPageObj[maxKey] || 0;
24373
+ var activePageOffset = pageIndex === 1 ? 0 : offSetPageObj[maxKey] || 0;
24392
24374
  var top = container.bounds.top + activePageOffset;
24393
24375
  var bottom = container.bounds.top + container.bounds.height + activePageOffset;
24394
24376
  if (container.divisionDisable && bottom > pageEnd && top < pageEnd) {
24395
- var offsetNum = pageEnd - top;
24377
+ var offsetNum = pageEnd - top + pageTopOffset;
24396
24378
  var prev = offSetPageObj[pageIndex] || 0;
24397
24379
  if (!offSetPageObj[pageIndex] || prev < offsetNum) {
24398
24380
  offSetTotal += offsetNum - prev;
24399
24381
  offSetPageObj[pageIndex] = offSetTotal;
24400
24382
  }
24383
+ // fix add realpageSize
24384
+ // TODO
24385
+ // if (offsetNum && realPageSize <= pageIndex) {
24386
+ // realPageSize = pageIndex + 1;
24387
+ // }
24401
24388
  return null;
24402
24389
  }
24403
24390
  var children = [];
24391
+ // Modify the order of `filterTextNodesForPage` and `filterElementForPage`, traversing text nodes first and then child elements, to avoid incorrect setting of `activePageOffset` when the current section spans multiple pages
24392
+ var textNodes = filterTextNodesForPage(container, pageStart, pageEnd);
24404
24393
  for (var _i = 0, _a = container.elements; _i < _a.length; _i++) {
24405
24394
  var child = _a[_i];
24406
24395
  var part = filterElementForPage(child, pageStart, pageEnd);
24407
24396
  if (part)
24408
24397
  children.push(part);
24409
24398
  }
24410
- var textNodes = filterTextNodesForPage(container, pageStart, pageEnd);
24399
+ // Prevent the outer container from not synchronizing the offsetPage when the text spans multiple pages
24400
+ maxKey = Math.max.apply(Math, Object.keys(offSetPageObj).map(function (k) { return +k; }));
24401
+ activePageOffset = pageIndex === 1 ? 0 : offSetPageObj[maxKey] || 0;
24402
+ top = container.bounds.top + activePageOffset;
24403
+ bottom = container.bounds.top + container.bounds.height + activePageOffset;
24411
24404
  var visibleTop = Math.max(top, pageStart);
24412
24405
  var visibleBottom = Math.min(bottom, pageEnd);
24413
24406
  var newHeight = Math.max(0, visibleBottom - visibleTop);
@@ -24421,18 +24414,19 @@ var filterElementForPage = function (container, pageStart, pageEnd) {
24421
24414
  clone.bounds = new Bounds$1(container.bounds.left, newTop + pageMarginTop, container.bounds.width, newHeight);
24422
24415
  return clone;
24423
24416
  };
24424
- var paginateNode = function (root, pageHeight, initialOffset, pageConfig) {
24417
+ var paginateNode = function (root, pageHeight, initialOffset, totalHeight, pageConfig) {
24425
24418
  var _a, _b;
24426
24419
  if (initialOffset === void 0) { initialOffset = 0; }
24427
24420
  if (initialOffset < 0)
24428
24421
  initialOffset = 0;
24429
24422
  offSetTotal = 0;
24430
24423
  offSetPageObj = {};
24431
- var maxBottom = computeMaxBottom(root);
24424
+ var maxBottom = totalHeight || computeMaxBottom(root);
24432
24425
  pageMarginTop = ((_a = pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig.header) === null || _a === void 0 ? void 0 : _a.height) || 0;
24433
24426
  pageMarginBottom = ((_b = pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig.footer) === null || _b === void 0 ? void 0 : _b.height) || 0;
24434
24427
  activePageHeight = pageHeight - pageMarginTop - pageMarginBottom;
24435
24428
  var totalPages = Math.max(1, Math.ceil((maxBottom - initialOffset) / activePageHeight));
24429
+ // realPageSize = totalPages;
24436
24430
  var pages = [];
24437
24431
  for (var i = 0; i < totalPages; i++) {
24438
24432
  var pageStart = initialOffset + i * activePageHeight;
@@ -24441,6 +24435,16 @@ var paginateNode = function (root, pageHeight, initialOffset, pageConfig) {
24441
24435
  if (pageRoot)
24442
24436
  pages.push(pageRoot);
24443
24437
  }
24438
+ // If the number of pages increases due to divisionDisable or text truncation, recalculation of pages is required
24439
+ // TODO
24440
+ // if (realPageSize > totalPages) {
24441
+ // for (let i = totalPages; i < realPageSize; i++) {
24442
+ // const pageStart = initialOffset + i * activePageHeight;
24443
+ // const pageEnd = pageStart + activePageHeight;
24444
+ // const pageRoot = filterElementForPage(root, pageStart, pageEnd);
24445
+ // if (pageRoot) pages.push(pageRoot);
24446
+ // }
24447
+ // }
24444
24448
  // console.log(offSetPageObj, '偏移量');
24445
24449
  return pages;
24446
24450
  };
@@ -24542,11 +24546,7 @@ var renderElement$1 = function (element, opts) { return __awaiter$1(void 0, void
24542
24546
  y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
24543
24547
  width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
24544
24548
  height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height),
24545
- fontConfig: validateFontConfig(opts.fontConfig)
24546
- ? isArray$1(opts.fontConfig)
24547
- ? opts.fontConfig
24548
- : [opts.fontConfig]
24549
- : undefined,
24549
+ fontConfig: setOptionFontConfig(opts.fontConfig),
24550
24550
  encryption: isEmptyValue(opts.encryption) ? undefined : opts.encryption,
24551
24551
  precision: (_t = opts.precision) !== null && _t !== void 0 ? _t : 16,
24552
24552
  floatPrecision: (_u = opts.floatPrecision) !== null && _u !== void 0 ? _u : 16,
@@ -24608,7 +24608,7 @@ var renderElement$1 = function (element, opts) { return __awaiter$1(void 0, void
24608
24608
  };
24609
24609
  adjustTop_1(root, offsetY);
24610
24610
  }
24611
- pageRoots = paginateNode(root, pageHeight, renderOptions.y, renderOptions.pageConfig);
24611
+ pageRoots = paginateNode(root, pageHeight, renderOptions.y, renderOptions.height, renderOptions.pageConfig);
24612
24612
  Reflect.deleteProperty(root, 'context');
24613
24613
  if (backgroundColor === root.styles.backgroundColor) {
24614
24614
  root.styles.backgroundColor = COLORS$1.TRANSPARENT;