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
package/dist/dompdf.js CHANGED
@@ -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
  */
@@ -6054,9 +6054,7 @@
6054
6054
  };
6055
6055
 
6056
6056
  var LIST_OWNERS$1 = ['OL', 'UL', 'MENU'];
6057
- // let foreignObjectRendererList: any = []
6058
6057
  var parseNodeTree$1 = function (context, node, parent, root, foreignObjectRendererList) {
6059
- // console.log('parseNodeTree', context,node,parent,root)
6060
6058
  for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
6061
6059
  nextNode = childNode.nextSibling;
6062
6060
  if (isTextNode$1(childNode) && childNode.data.trim().length > 0) {
@@ -6095,9 +6093,6 @@
6095
6093
  if (isElementNode$1(node) && node.hasAttribute('foreignobjectrendering')) {
6096
6094
  foreignObjectRendererList.push(node);
6097
6095
  }
6098
- // if (parent.foreignobjectrendering){
6099
- // container.foreignobjectrendering = true;
6100
- // }
6101
6096
  parent.elements.push(container);
6102
6097
  childNode.slot;
6103
6098
  if (childNode.shadowRoot) {
@@ -6143,13 +6138,6 @@
6143
6138
  }
6144
6139
  return new ElementContainer$1(context, element);
6145
6140
  };
6146
- // export const parseTree = (context: Context, element: HTMLElement): ElementContainer => {
6147
- // const container = createContainer(context, element);
6148
- // container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;
6149
- // console.log(element,'nodedom解析')
6150
- // parseNodeTree(context, element, container, container);
6151
- // return container;
6152
- // };
6153
6141
  var createsRealStackingContext$1 = function (node, container, root) {
6154
6142
  return (container.styles.isPositionedWithZIndex() ||
6155
6143
  container.styles.opacity < 1 ||
@@ -6183,9 +6171,6 @@
6183
6171
  var itemNode = uniqueList[index];
6184
6172
  var width = itemNode.offsetWidth || itemNode.getBoundingClientRect().width || 100;
6185
6173
  var height = itemNode.offsetHeight || itemNode.getBoundingClientRect().height || 100;
6186
- // const rect = itemNode.getBoundingClientRect();
6187
- // const scrollX = window.scrollX || document.documentElement.scrollLeft;
6188
- // const scrollY = window.scrollY || document.documentElement.scrollTop;
6189
6174
  // 创建图片容器
6190
6175
  var bgContainer = document.createElement('div');
6191
6176
  bgContainer.style.width = Math.ceil(width) + 'px';
@@ -6275,53 +6260,6 @@
6275
6260
  }
6276
6261
  });
6277
6262
  }); };
6278
- // 修复3:安全截图(不修改原始 DOM)
6279
- // const renderForeignObject = async (element: HTMLElement) => {
6280
- // // 1. 克隆元素(包括所有子元素)
6281
- // const clone = element.cloneNode(true) as HTMLElement;
6282
- // // 2. 创建临时容器(确保正确计算样式)
6283
- // const container = document.createElement('div');
6284
- // container.style.position = 'absolute';
6285
- // container.style.left = '-9999px';
6286
- // container.appendChild(clone);
6287
- // document.body.appendChild(container);
6288
- // // 3. 应用透明样式到克隆体
6289
- // const applyInvisibleStyle = (el: Element) => {
6290
- // if (el instanceof HTMLElement) {
6291
- // el.style.color = 'transparent';
6292
- // el.style.backgroundColor = 'transparent';
6293
- // Array.from(el.children).forEach(applyInvisibleStyle);
6294
- // }
6295
- // };
6296
- // applyInvisibleStyle(clone);
6297
- // // 4. 获取尺寸
6298
- // const rect = clone.getBoundingClientRect();
6299
- // if (rect.width === 0 || rect.height === 0) {
6300
- // document.body.removeChild(container);
6301
- // return null;
6302
- // }
6303
- // try {
6304
- // // 5. 截图克隆体
6305
- // const capture = await snapdom(clone, {
6306
- // // width: Math.ceil(rect.width),
6307
- // // height: Math.ceil(rect.height)
6308
- // });
6309
- // const pngData = await capture.toPng({
6310
- // quality: 0.9,
6311
- // // width: Math.ceil(rect.width),
6312
- // // height: Math.ceil(rect.height)
6313
- // });
6314
- // return pngData;
6315
- // } catch (error) {
6316
- // console.error('截图失败:', error);
6317
- // return null;
6318
- // } finally {
6319
- // // 6. 确保清理临时元素
6320
- // document.body.removeChild(container);
6321
- // }
6322
- // };
6323
- // 修复4:移除原有的 makeInvisible 函数
6324
- // 不再需要,因为新方法使用克隆体
6325
6263
  var createsStackingContext$1 = function (styles) { return styles.isPositioned() || styles.isFloating(); };
6326
6264
  var isTextNode$1 = function (node) { return node.nodeType === Node.TEXT_NODE; };
6327
6265
  var isElementNode$1 = function (node) { return node.nodeType === Node.ELEMENT_NODE; };
@@ -22790,13 +22728,29 @@
22790
22728
  return false;
22791
22729
  }
22792
22730
  }
22793
- // 3. 枚举值校验:fontWeight 只能是 400 700
22731
+ // check:fontWeight is only 400 or 700
22794
22732
  if (![400, 700].includes(config.fontWeight)) {
22795
22733
  console.error("The fontWeight value is invalid. It can only be 400 or 700. Actual value:".concat(config.fontWeight));
22796
22734
  return false;
22797
22735
  }
22736
+ if (config.iconFont !== undefined && typeof config.iconFont !== 'boolean') {
22737
+ console.error("The field iconFont has a type error. Expected boolean, but received ".concat(typeof config.iconFont));
22738
+ return false;
22739
+ }
22798
22740
  }
22799
22741
  return true;
22742
+ }
22743
+ // The core function for handling configuration and populating default values
22744
+ function setOptionFontConfig(rawConfig) {
22745
+ if (!validateFontConfig(rawConfig)) {
22746
+ return undefined;
22747
+ }
22748
+ var configList = isArray$1(rawConfig) ? rawConfig : [rawConfig];
22749
+ var processedList = configList.map(function (config) {
22750
+ var _a;
22751
+ return (__assign$1(__assign$1({}, config), { iconFont: (_a = config.iconFont) !== null && _a !== void 0 ? _a : false }));
22752
+ });
22753
+ return processedList;
22800
22754
  }
22801
22755
 
22802
22756
  /**
@@ -23065,13 +23019,7 @@
23065
23019
  // reset all font
23066
23020
  CanvasRenderer.prototype.resetJsPDFFont = function () {
23067
23021
  var _this = this;
23068
- // if fontConfig is a single FontConfig object
23069
- if (isObject$4(this.options.fontConfig) &&
23070
- this.options.fontConfig &&
23071
- this.options.fontConfig.fontFamily) {
23072
- this.jspdfCtx.setFont(this.options.fontConfig.fontFamily);
23073
- }
23074
- else if (isArray$1(this.options.fontConfig) && !isEmptyValue(this.options.fontConfig)) {
23022
+ if (isArray$1(this.options.fontConfig) && !isEmptyValue(this.options.fontConfig)) {
23075
23023
  this.options.fontConfig.forEach(function (v) {
23076
23024
  v.fontFamily && _this.jspdfCtx.setFont(v.fontFamily);
23077
23025
  });
@@ -23080,16 +23028,25 @@
23080
23028
  // setFont form options
23081
23029
  CanvasRenderer.prototype.setTextFont = function (styles) {
23082
23030
  var _a, _b, _c;
23083
- // console.log(styles.fontWeight, styles.fontStyle, 'styles');
23031
+ // console.log(styles.fontWeight, styles.fontStyle, styles.fontFamily, 'styles');
23084
23032
  if (isEmptyValue(this.options.fontConfig)) {
23085
23033
  return '';
23086
23034
  }
23087
- if (this.options.fontConfig.length === 1) {
23088
- var fontFamilyCustom_1 = (_a = this.options.fontConfig[0].fontFamily) !== null && _a !== void 0 ? _a : '';
23035
+ var fontConfigRef = this.options.fontConfig;
23036
+ // 处理字体图标场景
23037
+ var isIconFont = fontConfigRef.find(function (v) { return v.iconFont; });
23038
+ var otherFonts = fontConfigRef.filter(function (v) { return !v.iconFont; });
23039
+ if (isIconFont && styles.fontFamily.some(function (family) { return family.includes(isIconFont.fontFamily); })) {
23040
+ isIconFont.fontFamily && this.jspdfCtx.setFont(isIconFont.fontFamily);
23041
+ return isIconFont.fontFamily;
23042
+ }
23043
+ // 除开字体图标场景
23044
+ if (otherFonts.length === 1) {
23045
+ var fontFamilyCustom_1 = (_a = otherFonts[0].fontFamily) !== null && _a !== void 0 ? _a : '';
23089
23046
  fontFamilyCustom_1 && this.jspdfCtx.setFont(fontFamilyCustom_1);
23090
23047
  return fontFamilyCustom_1;
23091
23048
  }
23092
- 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 : '';
23049
+ 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 : '';
23093
23050
  fontFamilyCustom && this.jspdfCtx.setFont(fontFamilyCustom);
23094
23051
  return fontFamilyCustom;
23095
23052
  };
@@ -23207,7 +23164,7 @@
23207
23164
  _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];
23208
23165
  fontFamilyFinal = this.setTextFont(styles);
23209
23166
  this.context2dCtx.font = fontFamilyFinal || font;
23210
- // console.log(fontFamilyFinal, 'render getFont', this.jspdfCtx.getFont());
23167
+ // console.log(fontFamilyFinal, styles, 'render getFont', this.jspdfCtx.getFont());
23211
23168
  // jspdf context2d not supported ‘direction’
23212
23169
  // this.context2dCtx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';
23213
23170
  this.context2dCtx.textAlign = 'left';
@@ -24046,22 +24003,32 @@
24046
24003
  _a.sent();
24047
24004
  this.applyEffects([]);
24048
24005
  if (cfg === null || cfg === void 0 ? void 0 : cfg.header) {
24049
- headerText = String(cfg.header.content)
24050
- .replace('${currentPage}', String(pageNum))
24051
- .replace('${totalPages}', String(this.totalPages));
24052
- this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.header.contentFontSize), 1));
24053
- this.setTextColorFromString(cfg.header.contentColor);
24054
- headerPos = this.computeContentPosition(cfg.header.contentPosition, pageW, pageH, cfg.header.height, mt, mb, 'header', cfg.header.padding);
24055
- this.textPdf(headerText, headerPos.x, headerPos.y, headerPos.align);
24006
+ if (typeof cfg.header.content === 'function') {
24007
+ cfg.header.content(this, String(pageNum));
24008
+ }
24009
+ else {
24010
+ headerText = String(cfg.header.content)
24011
+ .replace('${currentPage}', String(pageNum))
24012
+ .replace('${totalPages}', String(this.totalPages));
24013
+ this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.header.contentFontSize), 1));
24014
+ this.setTextColorFromString(cfg.header.contentColor);
24015
+ headerPos = this.computeContentPosition(cfg.header.contentPosition, pageW, pageH, cfg.header.height, mt, mb, 'header', cfg.header.padding);
24016
+ this.textPdf(headerText, headerPos.x, headerPos.y, headerPos.align);
24017
+ }
24056
24018
  }
24057
24019
  if (cfg === null || cfg === void 0 ? void 0 : cfg.footer) {
24058
- footerText = String(cfg.footer.content)
24059
- .replace('${currentPage}', String(pageNum))
24060
- .replace('${totalPages}', String(this.totalPages));
24061
- this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.footer.contentFontSize), 1));
24062
- this.setTextColorFromString(cfg.footer.contentColor);
24063
- footerPos = this.computeContentPosition(cfg.footer.contentPosition, pageW, pageH, cfg.footer.height, mt, mb, 'footer', cfg.footer.padding);
24064
- this.textPdf(footerText, footerPos.x, footerPos.y, footerPos.align);
24020
+ if (typeof cfg.footer.content === 'function') {
24021
+ cfg.footer.content(this, String(pageNum));
24022
+ }
24023
+ else {
24024
+ footerText = String(cfg.footer.content)
24025
+ .replace('${currentPage}', String(pageNum))
24026
+ .replace('${totalPages}', String(this.totalPages));
24027
+ this.jspdfCtx.setFontSize(this.safe(this.pxToPt(cfg.footer.contentFontSize), 1));
24028
+ this.setTextColorFromString(cfg.footer.contentColor);
24029
+ footerPos = this.computeContentPosition(cfg.footer.contentPosition, pageW, pageH, cfg.footer.height, mt, mb, 'footer', cfg.footer.padding);
24030
+ this.textPdf(footerText, footerPos.x, footerPos.y, footerPos.align);
24031
+ }
24065
24032
  }
24066
24033
  return [2 /*return*/];
24067
24034
  }
@@ -24287,6 +24254,8 @@
24287
24254
  var activePageHeight = 1123;
24288
24255
  var pageMarginTop = 0;
24289
24256
  var pageMarginBottom = 0;
24257
+ // let realPageSize = 0;
24258
+ var pageTopOffset = 10;
24290
24259
  var cloneContainerShallow = function (src) {
24291
24260
  var c = Object.create(Object.getPrototypeOf(src));
24292
24261
  var srcObj = src;
@@ -24334,11 +24303,14 @@
24334
24303
  for (var _i = 0, _a = container.textNodes; _i < _a.length; _i++) {
24335
24304
  var tc = _a[_i];
24336
24305
  var filtered = [];
24337
- for (var _b = 0, _c = tc.textBounds; _b < _c.length; _b++) {
24338
- var tb = _c[_b];
24306
+ var _loop_1 = function (tb) {
24339
24307
  var pageIndex = Math.floor(pageEnd / activePageHeight);
24340
24308
  var maxKey = Math.max.apply(Math, Object.keys(offSetPageObj).map(function (k) { return +k; }));
24341
- var activePageOffset = offSetPageObj[maxKey] || 0;
24309
+ var activePageOffset = pageIndex === 1 ? 0 : offSetPageObj[maxKey] || 0;
24310
+ var prevMaxKey = Math.max.apply(Math, Object.keys(offSetPageObj)
24311
+ .filter(function (k) { return +k < pageIndex; })
24312
+ .map(function (k) { return +k; }));
24313
+ var prevPageOffset = offSetPageObj[prevMaxKey] || 0;
24342
24314
  var top_1 = tb.bounds.top + activePageOffset;
24343
24315
  var bottom = tb.bounds.top + tb.bounds.height + activePageOffset;
24344
24316
  var intersects = bottom > pageStart && top_1 < pageEnd;
@@ -24346,11 +24318,24 @@
24346
24318
  if (intersects && !crossesToNextPage) {
24347
24319
  var offsetNum = 0;
24348
24320
  if (top_1 < pageStart) {
24349
- offsetNum = pageStart - top_1;
24350
- if (!offSetPageObj[pageIndex] ||
24351
- (offSetPageObj[pageIndex] && offSetPageObj[pageIndex] < offsetNum)) {
24352
- if (offSetPageObj[pageIndex] && offSetPageObj[pageIndex] < offsetNum) {
24353
- offSetTotal = offSetTotal - offSetPageObj[pageIndex] + offsetNum;
24321
+ if (prevPageOffset || pageIndex > 1) {
24322
+ // Because the offset is only increased when paging occurs, and each time elements are paged, a full traversal is performed
24323
+ // Determine that the current text does not require pagination rendering based on the height calculated on the previous page, so proceed directly to continue
24324
+ var prevPageStart = pageStart - activePageHeight;
24325
+ var prevPageEnd = pageEnd - activePageHeight;
24326
+ var prevTop = tb.bounds.top + prevPageOffset;
24327
+ var prevBottom = tb.bounds.top + tb.bounds.height + prevPageOffset;
24328
+ var prevIntersects = prevBottom > prevPageStart && prevTop < prevPageEnd;
24329
+ var prevCrossesToNextPage = prevBottom > prevPageEnd;
24330
+ if (prevIntersects && !prevCrossesToNextPage) {
24331
+ return "continue";
24332
+ }
24333
+ }
24334
+ offsetNum = pageStart - top_1 + pageTopOffset;
24335
+ var prev = offSetPageObj[pageIndex] || 0;
24336
+ if (!offSetPageObj[pageIndex] || prev < offsetNum) {
24337
+ if (prev < offsetNum) {
24338
+ offSetTotal = offSetTotal - prev + offsetNum;
24354
24339
  }
24355
24340
  else {
24356
24341
  offSetTotal += offsetNum;
@@ -24359,29 +24344,26 @@
24359
24344
  }
24360
24345
  // Fix the issue where no offset is added for the first text container
24361
24346
  bottom += offsetNum;
24347
+ top_1 += offsetNum;
24348
+ // fix add realpageSize
24349
+ // TODO
24350
+ // if (offsetNum && realPageSize <= pageIndex) {
24351
+ // realPageSize = pageIndex + 1;
24352
+ // }
24362
24353
  }
24363
24354
  var visibleTop = Math.max(top_1, pageStart);
24364
24355
  var visibleBottom = Math.min(bottom, pageEnd);
24365
24356
  var newTop = visibleTop - pageStart;
24366
24357
  var newHeight = Math.max(0, visibleBottom - visibleTop);
24367
- // 根据可见区域生成新的 Bounds
24358
+ // Generate new Bounds based on the visible area
24368
24359
  var nb = new Bounds$1(tb.bounds.left, newTop + pageMarginTop, tb.bounds.width, newHeight);
24369
- // if (pageIndex == 3) {
24370
- // console.log(
24371
- // 'nb',
24372
- // nb,
24373
- // 'pageStart',
24374
- // pageStart,
24375
- // 'tb.bounds.top',
24376
- // tb.bounds.top,
24377
- // 'activePageOffset',
24378
- // activePageOffset,
24379
- // (tb as any).text
24380
- // );
24381
- // }
24382
- // 把文字内容和新的 bounds 一起放进 filtered
24360
+ // Put the text content and the new bounds into filtered
24383
24361
  filtered.push({ text: tb.text, bounds: nb });
24384
24362
  }
24363
+ };
24364
+ for (var _b = 0, _c = tc.textBounds; _b < _c.length; _b++) {
24365
+ var tb = _c[_b];
24366
+ _loop_1(tb);
24385
24367
  }
24386
24368
  if (filtered.length > 0) {
24387
24369
  var clone = cloneTextContainerShallow(tc);
@@ -24394,26 +24376,37 @@
24394
24376
  var filterElementForPage = function (container, pageStart, pageEnd) {
24395
24377
  var pageIndex = Math.floor(pageEnd / activePageHeight);
24396
24378
  var maxKey = Math.max.apply(Math, Object.keys(offSetPageObj).map(function (k) { return +k; }));
24397
- var activePageOffset = offSetPageObj[maxKey] || 0;
24379
+ var activePageOffset = pageIndex === 1 ? 0 : offSetPageObj[maxKey] || 0;
24398
24380
  var top = container.bounds.top + activePageOffset;
24399
24381
  var bottom = container.bounds.top + container.bounds.height + activePageOffset;
24400
24382
  if (container.divisionDisable && bottom > pageEnd && top < pageEnd) {
24401
- var offsetNum = pageEnd - top;
24383
+ var offsetNum = pageEnd - top + pageTopOffset;
24402
24384
  var prev = offSetPageObj[pageIndex] || 0;
24403
24385
  if (!offSetPageObj[pageIndex] || prev < offsetNum) {
24404
24386
  offSetTotal += offsetNum - prev;
24405
24387
  offSetPageObj[pageIndex] = offSetTotal;
24406
24388
  }
24389
+ // fix add realpageSize
24390
+ // TODO
24391
+ // if (offsetNum && realPageSize <= pageIndex) {
24392
+ // realPageSize = pageIndex + 1;
24393
+ // }
24407
24394
  return null;
24408
24395
  }
24409
24396
  var children = [];
24397
+ // 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
24398
+ var textNodes = filterTextNodesForPage(container, pageStart, pageEnd);
24410
24399
  for (var _i = 0, _a = container.elements; _i < _a.length; _i++) {
24411
24400
  var child = _a[_i];
24412
24401
  var part = filterElementForPage(child, pageStart, pageEnd);
24413
24402
  if (part)
24414
24403
  children.push(part);
24415
24404
  }
24416
- var textNodes = filterTextNodesForPage(container, pageStart, pageEnd);
24405
+ // Prevent the outer container from not synchronizing the offsetPage when the text spans multiple pages
24406
+ maxKey = Math.max.apply(Math, Object.keys(offSetPageObj).map(function (k) { return +k; }));
24407
+ activePageOffset = pageIndex === 1 ? 0 : offSetPageObj[maxKey] || 0;
24408
+ top = container.bounds.top + activePageOffset;
24409
+ bottom = container.bounds.top + container.bounds.height + activePageOffset;
24417
24410
  var visibleTop = Math.max(top, pageStart);
24418
24411
  var visibleBottom = Math.min(bottom, pageEnd);
24419
24412
  var newHeight = Math.max(0, visibleBottom - visibleTop);
@@ -24427,18 +24420,19 @@
24427
24420
  clone.bounds = new Bounds$1(container.bounds.left, newTop + pageMarginTop, container.bounds.width, newHeight);
24428
24421
  return clone;
24429
24422
  };
24430
- var paginateNode = function (root, pageHeight, initialOffset, pageConfig) {
24423
+ var paginateNode = function (root, pageHeight, initialOffset, totalHeight, pageConfig) {
24431
24424
  var _a, _b;
24432
24425
  if (initialOffset === void 0) { initialOffset = 0; }
24433
24426
  if (initialOffset < 0)
24434
24427
  initialOffset = 0;
24435
24428
  offSetTotal = 0;
24436
24429
  offSetPageObj = {};
24437
- var maxBottom = computeMaxBottom(root);
24430
+ var maxBottom = totalHeight || computeMaxBottom(root);
24438
24431
  pageMarginTop = ((_a = pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig.header) === null || _a === void 0 ? void 0 : _a.height) || 0;
24439
24432
  pageMarginBottom = ((_b = pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig.footer) === null || _b === void 0 ? void 0 : _b.height) || 0;
24440
24433
  activePageHeight = pageHeight - pageMarginTop - pageMarginBottom;
24441
24434
  var totalPages = Math.max(1, Math.ceil((maxBottom - initialOffset) / activePageHeight));
24435
+ // realPageSize = totalPages;
24442
24436
  var pages = [];
24443
24437
  for (var i = 0; i < totalPages; i++) {
24444
24438
  var pageStart = initialOffset + i * activePageHeight;
@@ -24447,6 +24441,16 @@
24447
24441
  if (pageRoot)
24448
24442
  pages.push(pageRoot);
24449
24443
  }
24444
+ // If the number of pages increases due to divisionDisable or text truncation, recalculation of pages is required
24445
+ // TODO
24446
+ // if (realPageSize > totalPages) {
24447
+ // for (let i = totalPages; i < realPageSize; i++) {
24448
+ // const pageStart = initialOffset + i * activePageHeight;
24449
+ // const pageEnd = pageStart + activePageHeight;
24450
+ // const pageRoot = filterElementForPage(root, pageStart, pageEnd);
24451
+ // if (pageRoot) pages.push(pageRoot);
24452
+ // }
24453
+ // }
24450
24454
  // console.log(offSetPageObj, '偏移量');
24451
24455
  return pages;
24452
24456
  };
@@ -24548,11 +24552,7 @@
24548
24552
  y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
24549
24553
  width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
24550
24554
  height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height),
24551
- fontConfig: validateFontConfig(opts.fontConfig)
24552
- ? isArray$1(opts.fontConfig)
24553
- ? opts.fontConfig
24554
- : [opts.fontConfig]
24555
- : undefined,
24555
+ fontConfig: setOptionFontConfig(opts.fontConfig),
24556
24556
  encryption: isEmptyValue(opts.encryption) ? undefined : opts.encryption,
24557
24557
  precision: (_t = opts.precision) !== null && _t !== void 0 ? _t : 16,
24558
24558
  floatPrecision: (_u = opts.floatPrecision) !== null && _u !== void 0 ? _u : 16,
@@ -24614,7 +24614,7 @@
24614
24614
  };
24615
24615
  adjustTop_1(root, offsetY);
24616
24616
  }
24617
- pageRoots = paginateNode(root, pageHeight, renderOptions.y, renderOptions.pageConfig);
24617
+ pageRoots = paginateNode(root, pageHeight, renderOptions.y, renderOptions.height, renderOptions.pageConfig);
24618
24618
  Reflect.deleteProperty(root, 'context');
24619
24619
  if (backgroundColor === root.styles.backgroundColor) {
24620
24620
  root.styles.backgroundColor = COLORS$1.TRANSPARENT;