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/README.md CHANGED
@@ -1,215 +1,226 @@
1
- # dompdf
1
+ # dompdf.js
2
2
 
3
- <!-- [主页](https://html2canvas.hertzen.com) | [下载](https://github.com/niklasvh/html2canvas/releases) | [问题](https://github.com/niklasvh/html2canvas/discussions/categories/q-a)
3
+ [English](./README.md) | [中文](./README_CN.md)
4
+
5
+ <!-- [Home](https://html2canvas.hertzen.com) | [Downloads](https://github.com/niklasvh/html2canvas/releases) | [Questions](https://github.com/niklasvh/html2canvas/discussions/categories/q-a)
4
6
 
5
7
  [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/niklasvh/html2canvas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
6
8
  ![CI](https://github.com/niklasvh/html2canvas/workflows/CI/badge.svg?branch=master)
7
9
  [![NPM Downloads](https://img.shields.io/npm/dm/html2canvas.svg)](https://www.npmjs.org/package/html2canvas)
8
10
  [![NPM Version](https://img.shields.io/npm/v/html2canvas.svg)](https://www.npmjs.org/package/html2canvas) -->
9
11
 
10
- 该脚本允许您直接在用户浏览器上将网页或部分网页生成为可编辑、非图片式、可打印的矢量 pdf。支持分页,最多可以生成上数千页的 pdf 文件。由于生成是基于 DOM 的,因此可能与实际表现不会 100% 一致。如果是复杂的 pdf 生成需求,不建议使用。
11
-
12
- 在线体验:[在线体验](https://dompdfjs.lisky.com.cn)
12
+ This script allows you to generate editable, non-image, printable vector PDFs directly on the user's browser from web pages or parts of web pages. It supports pagination and can generate PDF files with thousands of pages. Since the generation is based on the DOM, the result may not be 100% consistent with the actual appearance. It is not recommended for complex PDF generation requirements.
13
13
 
14
- ### pdf 生成示例
14
+ Live Demo: [Online Demo](https://dompdfjs.lisky.com.cn)
15
15
 
16
- ![pdf生成示例](./examples/test.png)
16
+ ### PDF Generation Example
17
17
 
18
- ### 它是如何工作的
18
+ ![PDF Generation Example](./examples/test.jpg)
19
19
 
20
- 该脚本基于[html2canvas](https://github.com/niklasvh/html2canvas)和[jspdf](https://github.com/MrRio/jsPDF),与以往将 html 页面通过 html2canvas 渲染为图片,再通过 jspdf 将图片生成 pdf 文件不同,该脚本通过读取 DOM 和应用于元素的不同样式,改造了 html2canvas 的 canvas-renderer 文件,调用 jspdf 的方法生成 pdf 文件。
21
- 所以他有以下优势:
20
+ ### 🛠️ How it works
22
21
 
23
- 1. 不需要服务器端的任何渲染,因为整个 pdf 是在**客户端浏览器**上创建的。
24
- 2. 生成的是真正的 pdf 文件,而不是图片式的,这样生成的 pdf 质量更高,您也可以编辑和打印生成 pdf 文件。
25
- 3. 更小的 pdf 文件体积。
26
- 4. 不受 canvas 渲染高度限制,可以生成数千页的 pdf 文件。
22
+ This script is based on [html2canvas](https://github.com/niklasvh/html2canvas) and [jspdf](https://github.com/MrRio/jsPDF). Unlike traditional methods that render HTML pages to images via html2canvas and then generate PDF files from images via jspdf, this script modifies the canvas-renderer file of html2canvas by reading the DOM and styles applied to elements, and calls jspdf methods to generate PDF files.
23
+ Therefore, it has the following advantages:
27
24
 
28
- 当然,它也有一些缺点:
25
+ 1. No server-side rendering is required because the entire PDF is created on the **client-side browser**.
26
+ 2. It generates real PDF files, not image-based ones, so the quality of the generated PDF is higher, and you can edit and print the generated PDF files.
27
+ 3. Smaller PDF file size.
28
+ 4. Not limited by canvas rendering height, allowing for the generation of PDF files with thousands of pages.
29
29
 
30
- 1. 由于是基于 DOM 的,所以可能与实际表现不会 100% 一致。
31
- 2. 有的 css 属性还没有被支持,查看[支持的 css 属性](https://www.html2canvas.cn/html2canvas-features.html)。
30
+ Of course, it also has some disadvantages:
32
31
 
33
- ### 已实现功能
32
+ 1. Since it is based on the DOM, it may not be 100% consistent with the actual appearance.
33
+ 2. Some CSS properties are not yet supported. See [Supported CSS Properties](https://www.html2canvas.cn/html2canvas-features.html).
34
34
 
35
- | 功能 | 状态 | 说明 |
36
- | -------- | ---- | --------------------------------------------------------------------------------------------------------- |
37
- | 分页 | ✅ | 支持 PDF 分页渲染,可生成数千页的 PDF 文件 |
38
- | 文本渲染 | ✅ | 支持基础文本内容渲染,font-family,font-size,font-style,font-variant,color 等,支持文字描边,不支持文字阴影 |
39
- | 图片渲染 | ✅ | 支持网络图片,base64 图片,svg 图片 |
40
- | 边框 | ✅ | 支持 border-width,border-color,border-style,border-radius,暂时只实现了实线边框 |
41
- | 背景 | ✅ | 支持背景颜色,背景图片,背景渐变 |
42
- | canvas | ✅ | 支持渲染 canvas |
43
- | svg | ✅ | 支持渲染 svg |
44
- | 阴影渲染 | ✅ | 使用 foreignObjectRendering,支持边框阴影渲染 |
45
- | 渐变渲染 | ✅ | 使用 foreignObjectRendering,支持背景渐变渲染 |
46
- | iframe | ❌ | 暂不支持渲染 iframe |
35
+ ### Implemented Features
47
36
 
37
+ | Feature | Status | Description |
38
+ | :----------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
39
+ | Pagination | ✅ | Supports PDF pagination rendering, capable of generating PDF files with thousands of pages |
40
+ | Text Rendering | ✅ | Supports basic text content rendering, font-family, font-size, font-style, font-variant, color, etc., supports text stroke, does not support text shadow |
41
+ | Image Rendering | ✅ | Supports web images, base64 images, svg images |
42
+ | Borders | ✅ | Supports border-width, border-color, border-style, border-radius, currently only solid borders are implemented |
43
+ | Background | ✅ | Supports background color, background image, background gradient |
44
+ | Canvas | ✅ | Supports rendering canvas |
45
+ | SVG | ✅ | Supports rendering svg |
46
+ | Shadow Rendering | ✅ | Uses foreignObjectRendering, supports border shadow rendering |
47
+ | Gradient Rendering | ✅ | Uses foreignObjectRendering, supports background gradient rendering |
48
+ | Iframe | ❌ | Does not support rendering iframe yet |
48
49
 
50
+ ### Usage
49
51
 
50
- ### 使用方法
52
+ The dompdf library uses `Promise` and expects them to be available in the global context. If you wish to support [older browsers](http://caniuse.com/#search=promise) that do not natively support `Promise`, please include a polyfill, such as [es6-promise](https://github.com/jakearchibald/es6-promise), before importing `dompdf`.
51
53
 
52
- dompdf 库使用 `Promise` 并期望它们在全局上下文中可用。如果您希望支持不原生支持 `Promise` 的[较旧浏览器](http://caniuse.com/#search=promise),请在引入 `dompdf` 之前包含一个 polyfill,比如 [es6-promise](https://github.com/jakearchibald/es6-promise)。
53
-
54
- 安装:
54
+ Installation:
55
55
 
56
56
  npm install dompdf.js --save
57
57
 
58
- CDN 引入:
58
+ CDN Import:
59
59
 
60
60
  ```html
61
61
  <script src="https://cdn.jsdelivr.net/npm/dompdf.js@latest/dist/dompdf.js"></script>
62
62
  ```
63
63
 
64
- #### 基础用法
64
+ #### Basic Usage
65
65
 
66
66
  ```js
67
- import dompdf from "dompdf.js";
68
-
69
- dompdf(document.querySelector("#capture"), options)
70
- .then((blob) => {
71
- const url = URL.createObjectURL(blob);
72
- const a = document.createElement("a");
73
- a.href = url;
74
- a.download = "example.pdf";
75
- document.body.appendChild(a);
76
- a.click();
77
- })
78
- .catch((err) => {
79
- console.error(err);
80
- });
67
+ import dompdf from 'dompdf.js';
68
+
69
+ dompdf(document.querySelector('#capture'), options)
70
+ .then((blob) => {
71
+ const url = URL.createObjectURL(blob);
72
+ const a = document.createElement('a');
73
+ a.href = url;
74
+ a.download = 'example.pdf';
75
+ document.body.appendChild(a);
76
+ a.click();
77
+ })
78
+ .catch((err) => {
79
+ console.error(err);
80
+ });
81
81
  ```
82
82
 
83
+ #### PDF Pagination Rendering
83
84
 
84
- #### PDF 分页渲染
85
+ By default, dompdf renders the entire document onto a single page.
85
86
 
86
- 默认情况下,dompdf 会将整个文档渲染到单页中。
87
+ You can enable pagination rendering by setting the `pagination` option to `true`. Customize header and footer size, content, font color/size, position, etc., via the pageConfig field.
87
88
 
88
- 您可以通过设置 `pagination` 选项为 `true` 来开启分页渲染。通过 pageConfig 字段自定义页眉页脚的尺寸,内容,字体颜色/大小,位置等信息。
89
+ **_ Note: Please ensure that the DOM node to be generated as PDF is set to the corresponding page width (px). For example, set the width to 794px for A4. Here is the page size reference table: [page_sizes.md](./page_sizes.md) _**
89
90
 
90
91
  ```js
91
- import dompdf from "dompdf.js";
92
-
93
- dompdf(document.querySelector("#capture"), {
94
- pagination: true,
95
- format: "a4",
96
- pageConfig: {
97
- header: {
98
- content: "这是页眉",
99
- height: 50,
100
- contentColor: "#333333",
101
- contentFontSize: 12,
102
- contentPosition: "center",
103
- padding: [0, 0, 0, 0],
104
- },
105
- footer: {
106
- content: "第${currentPage}页/共${totalPages}页",
107
- height: 50,
108
- contentColor: "#333333",
109
- contentFontSize: 12,
110
- contentPosition: "center",
111
- padding: [0, 0, 0, 0],
112
- },
113
- },
92
+ import dompdf from 'dompdf.js';
93
+
94
+ dompdf(document.querySelector('#capture'), {
95
+ pagination: true,
96
+ format: 'a4',
97
+ pageConfig: {
98
+ header: {
99
+ content: 'This is the header',
100
+ height: 50,
101
+ contentColor: '#333333',
102
+ contentFontSize: 12,
103
+ contentPosition: 'center',
104
+ padding: [0, 0, 0, 0]
105
+ },
106
+ footer: {
107
+ content: 'Page ${currentPage} of ${totalPages}',
108
+ height: 50,
109
+ contentColor: '#333333',
110
+ contentFontSize: 12,
111
+ contentPosition: 'center',
112
+ padding: [0, 0, 0, 0]
113
+ }
114
+ }
114
115
  })
115
- .then((blob) => {
116
- const url = URL.createObjectURL(blob);
117
- const a = document.createElement("a");
118
- a.href = url;
119
- a.download = "example.pdf";
120
- document.body.appendChild(a);
121
- a.click();
122
- })
123
- .catch((err) => {
124
- console.error(err);
125
- });
116
+ .then((blob) => {
117
+ const url = URL.createObjectURL(blob);
118
+ const a = document.createElement('a');
119
+ a.href = url;
120
+ a.download = 'example.pdf';
121
+ document.body.appendChild(a);
122
+ a.click();
123
+ })
124
+ .catch((err) => {
125
+ console.error(err);
126
+ });
126
127
  ```
127
- ##### 更精准的分页控制-`divisionDisable` 属性
128
128
 
129
- 如果您不希望某个容器在分页时被拆分时,为该元素添加 `divisionDisable` 属性,跨页时它会整体移至下一页。
129
+ ##### Precise Pagination Control - `divisionDisable` Attribute
130
130
 
131
+ If you do not want a container to be split during pagination, add the `divisionDisable` attribute to that element, and it will be moved to the next page entirely when crossing pages.
131
132
 
132
- #### options 参数
133
+ #### ⚙️ options Parameters
133
134
 
134
- | 参数名 | 必传 | 默认值 | 类型 | 说明 |
135
- | ------------------ | ---- | ------------- | ------------------- | -------------------------------------------------------------- |
136
- | `useCORS` | | `false` | `boolean` | 允许跨域资源(需服务端 CORS 配置) |
137
- | `backgroundColor` | | 自动解析/白色 | `string \| null` | 覆盖页面背景色;传 `null` 生成透明背景 |
138
- | `fontConfig` | | - | `object \| Array` | 非英文字体配置,见下表 |
139
- | `encryption` | | 空配置 | `object` | PDF 加密配置,属性`userPassword` 用于给定权限列表下用户的密码;属性`ownerPassword` 需要设置userPasswordownerPassword以进行正确的身份验证;属性`userPermissions` 用于指定用户权限,可选值为 `['print', 'modify', 'copy', 'annot-forms']` |
140
- | `precision` | | `16` | `number` | 元素位置的精度 |
141
- | `compress` | | `false` | `boolean` | 是否压缩PDF |
142
- | `putOnlyUsedFonts` | | `false` | `boolean` | 仅将实际使用的字体嵌入 PDF |
143
- | `pagination` | | `false` | `boolean` | 开启分页渲染 |
144
- | `format` | | `'a4'` | `string` | 页面规格,支持 `a0–a10`、`b0–b10`、`c0–c10`、`letter` |
145
- | `pageConfig` | | 见下表 | `object` | 页眉页脚配置 |
146
- | `onJspdfReady` | | `` | `Function(jspdf: jsPDF)` | jspdf实例初始化
147
- | `onJspdfFinish` | | `` | `Function(jspdf: jsPDF)` | jspdf实例绘制pdf完成
135
+ | Parameter | Required | Default | Type | Description |
136
+ | :----------------- | :------- | :--------- | :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
137
+ | `useCORS` | No | `false` | `boolean` | Allow cross-origin resources (requires server-side CORS configuration) |
138
+ | `backgroundColor` | No | Auto/White | `string \| null` | Override page background color; pass `null` to generate transparent background |
139
+ | `fontConfig` | No | - | `object \| Array` | Non-English font configuration, see table below |
140
+ | `encryption` | No | Empty | `object` | PDF encryption configuration. Property `userPassword` is used for the user password under the given permission list; property `ownerPassword` needs userPassword and ownerPassword to be set for correct authentication; property `userPermissions` is used to specify user permissions, optional values are `['print', 'modify', 'copy', 'annot-forms']` |
141
+ | `precision` | No | `16` | `number` | Element position precision |
142
+ | `compress` | No | `false` | `boolean` | Whether to compress PDF |
143
+ | `putOnlyUsedFonts` | No | `false` | `boolean` | Embed only actually used fonts into PDF |
144
+ | `pagination` | No | `false` | `boolean` | Enable pagination rendering |
145
+ | `format` | No | `'a4'` | `string` | Page size, supports `a0–a10`, `b0–b10`, `c0–c10`, `letter`, etc. |
146
+ | `pageConfig` | No | See below | `object` | Header and footer configuration |
147
+ | `onJspdfReady` | No | `` | `Function(jspdf: jsPDF)` | jspdf instance initialization |
148
+ | `onJspdfFinish` | No | `` | `Function(jspdf: jsPDF)` | jspdf instance finished drawing PDF |
148
149
 
149
- ##### `pageConfig`字段:
150
+ ##### `pageConfig` Fields:
150
151
 
151
- | 参数名 | 默认值 | 类型 | 说明 |
152
- | -------- | ------------------------ | ------ | -------- |
153
- | `header` | 见下表 pageConfigOptions | object | 页眉设置 |
154
- | `footer` | 见下表 pageConfigOptions | object | 页脚设置 |
152
+ | Parameter | Default | Type | Description |
153
+ | :-------- | :-------------------------- | :----- | :-------------- |
154
+ | `header` | See pageConfigOptions below | object | Header settings |
155
+ | `footer` | See pageConfigOptions below | object | Footer settings |
155
156
 
157
+ ##### `pageConfigOptions` Fields:
156
158
 
157
- ##### `pageConfigOptions` 字段:
159
+ | Parameter | Default | Type | Description |
160
+ | :---------------- | :------------------------------------------------------------------------ | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |
161
+ | `content` | Header default is empty, footer default is `${currentPage}/${totalPages}` | `string` | Text content, supports `${currentPage}`, `${totalPages}`, `${currentPage}` is current page number, `${totalPages}` is total page number |
162
+ | `height` | `50` | `number` | Area height (px) |
163
+ | `contentPosition` | `'center'` | `string \| [number, number]` | Text position enum `center`, `centerLeft`, `centerRight`, `centerTop`, `centerBottom`, `leftTop`, `leftBottom`, `rightTop`, `rightBottom` or coordinates `[x,y]` |
164
+ | `contentColor` | `'#333333'` | `string` | Text color |
165
+ | `contentFontSize` | `16` | `number` | Text font size (px) |
166
+ | `padding` | `[0,24,0,24]` | `[number, number, number, number]` | Top/Right/Bottom/Left padding (px) |
158
167
 
159
- | 参数名 | 默认值 | 类型 | 说明 |
160
- | ----------------- | --------------------------------------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------- |
161
- | `content` | 页眉默认值为空,页脚默认值为`${currentPage}/${totalPages}` | `string` | 文本内容,支持 `${currentPage}`、`${totalPages}`,`${currentPage}`为当前页码,`${totalPages}`为总页码 |
162
- | `height` | `50` | `number` | 区域高度(px) |
163
- | `contentPosition` | `'center'` | `string \| [number, number]` | 文本位置枚举 `center`、`centerLeft` 、 `centerRight`、`centerTop`、 `centerBottom`、`leftTop`、 `leftBottom`、`rightTop`、`rightBottom`或坐标 `[x,y]` |
164
- | `contentColor` | `'#333333'` | `string` | 文本颜色 |
165
- | `contentFontSize` | `16` | `number` | 文本字号(px) |
166
- | `padding` | `[0,24,0,24]` | `[number, number, number, number]` | 上/右/下/左内边距(px) |
168
+ ##### Font Configuration (`fontConfig`) Fields:
167
169
 
168
- ##### 字体配置(`fontConfig`)字段:
170
+ | Field | Required | Default | Type | Description |
171
+ | :----------- | :-------------------------------- | :------ | :------- | :----------------------------------------- |
172
+ | `fontFamily` | Yes (when using custom font) | `''` | `string` | Font family name (same as injected `.ttf`) |
173
+ | `fontBase64` | Yes (when using custom font) | `''` | `string` | Base64 string content of `.ttf` |
174
+ | `fontStyle` | Yes (when using custom font) | `''` | `string` | `normal \| italic` |
175
+ | `fontWeight` | Yes (when using custom font bold) | `''` | `number` | `400 \| 700` |
176
+ | `iconFont` | No | `false` | `boolean`| `false \| true` |
169
177
 
170
- | 字段 | 必传 | 默认值 | 类型 | 说明 |
171
- | ------------ | ---------------------- | ------ | -------- | ---------------------------------- |
172
- | `fontFamily` | 是(启用自定义字体时) | `''` | `string` | 字体家族名(与注入的 `.ttf` 同名) |
173
- | `fontBase64` | 是(启用自定义字体时) | `''` | `string` | `.ttf` 的 Base64 字符串内容 |
174
- | `fontStyle` | 是(启用自定义字体时) | `''` | `string` | `normal \| italic` |
175
- | `fontWeight` | 是(启用自定义字体时字体加粗) | `''` | `number` | `400 \| 700` |
178
+ #### 🔣 Garbled Characters - Font Import Support
176
179
 
177
- #### 乱码问题-字体导入支持
180
+ Since jspdf only supports English, other languages will appear as garbled characters, requiring the import of corresponding font files to resolve. If you need custom fonts, convert the font tff file to a base64 format js file [here](https://github.com/lmn1919/dompdf.js/tree/main/fontconverter). For Chinese fonts, [Source Han Sans](https://github.com/lmn1919/dompdf.js/blob/main/examples/SourceHanSansSC-Normal-Min-normal.js) is recommended due to its smaller size.
181
+ Import the file in the code.
178
182
 
179
- 由于 jspdf 只支持英文,所以其他语言会出现乱码的问题,需要导入对应的字体文件来解决,如果需要自定义字体,在[这里](https://github.com/lmn1919/dompdf.js/tree/main/fontconverter)将字体 tff 文件转化成 base64 格式的 js 文件,中文字体推荐使用[思源黑体](https://github.com/lmn1919/dompdf.js/blob/main/examples/SourceHanSansSC-Normal-Min-normal.js),体积较小。
180
- 在代码中引入该文件即可。
183
+ > **Note: Importing fonts will increase the final PDF file size. If there are requirements for the final PDF size, it is recommended to streamline the font, you can remove unnecessary fonts. Or use tools like `Fontmin` to slim down the font.**
181
184
 
182
- > **注意:导入字体会导致最终的pdf体积增大,如果对最终pdf体积有要求的,建议精简字体,可以剔除不需要的字体。或者使用`Fontmin‌`等工具对字体进行瘦身**
183
185
  ```js
184
186
  <script type="text/javascript" src="./SourceHanSansSC-Normal-Min-normal.js"></script>
185
187
  <script type="text/javascript" src="./SourceHanSansCNBold-bold.js"></script>
186
188
  <script type="text/javascript" src="./SourceHanSansCNNormal-normal.js"></script>
187
189
  <script type="text/javascript" src="./SourceHanSansCNRegularItalic-normal.js"></script>
190
+ <script type="text/javascript" src="./iconfont-ttf.js"></script>
188
191
  <script>
189
- /* 导入字体 */
192
+ /* Import fonts */
190
193
  dompdf(document.querySelector('#capture'), {
191
194
  useCORS: true,
192
- /* 单个字体导入 */
195
+ /* Single font import */
193
196
  /* fontConfig: {
194
197
  fontFamily: 'SourceHanSansSC-Normal-Min',
195
198
  fontBase64: window.fontBase64,
196
199
  fontStyle: 'normal',
197
200
  fontWeight: 400,
198
201
  }, */
199
- /* 导入注册多种字体,需要支持什么语种,样式,就导入对应的字体 */
202
+ /* Import and register multiple fonts, import corresponding fonts for required languages and styles */
200
203
  fontConfig: [
204
+ {
205
+ fontFamily: 'iconfont',
206
+ fontBase64: window.iconfont,
207
+ fontUrl: '',
208
+ fontWeight: 400,
209
+ fontStyle: 'normal',
210
+ iconFont: true
211
+ },
201
212
  {
202
213
  fontFamily: 'SourceHanSansCNRegularItalic',
203
214
  fontBase64: window.SourceHanSansCNRegularItalic,
204
215
  fontUrl: '',
205
216
  fontWeight: 400,
206
- fontStyle: 'italic' // 斜体
217
+ fontStyle: 'italic' // Italic
207
218
  },
208
219
  {
209
220
  fontFamily: 'SourceHanSansCNBold',
210
221
  fontBase64: window.SourceHanSansCNBold,
211
222
  fontUrl: '',
212
- fontWeight: 700, // 加粗
223
+ fontWeight: 700, // Bold
213
224
  fontStyle: 'normal'
214
225
  },
215
226
  {
@@ -235,54 +246,55 @@ dompdf(document.querySelector("#capture"), {
235
246
  </script>
236
247
  ```
237
248
 
238
- #### 绘制渐变色、阴影等复杂样式-foreignObjectRendering 使用
249
+ #### 🎨 Rendering Complex Styles like Gradients, Shadows - Using foreignObjectRendering
239
250
 
240
- dom 十分复杂,或者 pdf 无法绘制的情况(比如:复杂的表格,边框阴影,渐变等),可以考虑使用 foreignObjectRendering
241
- 给要渲染的元素添加 foreignObjectRendering 属性,就可以通过 svg foreignObject 将它渲染成一张背景图插入到 pdf 文件中。
251
+ In cases where the DOM is very complex or the PDF cannot be drawn (e.g., complex tables, border shadows, gradients, etc.), consider using foreignObjectRendering.
252
+ Add the foreignObjectRendering attribute to the element to be rendered, and it will be rendered as a background image inserted into the PDF file via svg's foreignObject.
242
253
 
243
- 但是,由于 foreignObject 元素的渲染依赖于浏览器的实现,因此在不同的浏览器中可能会有不同的表现。
244
- 所以,在使用 foreignObjectRendering 时,需要注意以下事项:
254
+ However, since the rendering of foreignObject elements depends on the browser's implementation, it may behave differently in different browsers.
255
+ Therefore, when using foreignObjectRendering, please note the following:
245
256
 
246
- 1. foreignObject 元素的渲染依赖于浏览器的实现,因此在不同的浏览器中可能会有不同的表现。
247
- 2. IE 浏览器完全不支持,推荐在 chrome firefox,edge 中使用。
248
- 3. 生成的图片会导致 pdf 文件体积变大。
257
+ 1. The rendering of foreignObject elements depends on the browser's implementation, so it may behave differently in different browsers.
258
+ 2. IE browser does not support it at all, recommended to use in Chrome, Firefox, Edge.
259
+ 3. The generated image will increase the PDF file size.
249
260
 
250
- 示例
261
+ Example
251
262
 
252
263
  ```html
253
264
  <div style="width: 100px;height: 100px;" foreignObjectRendering>
254
- <div
255
- style="width: 50px;height: 50px;border: 1px solid #000;box-shadow: 2px 2px 5px rgba(0,0,0,0.3);background: linear-gradient(45deg, #ff6b6b, #4ecdc4);"
256
- >
257
- 这是一个div元素
258
- </div>
265
+ <div
266
+ style="width: 50px;height: 50px;border: 1px solid #000;box-shadow: 2px 2px 5px rgba(0,0,0,0.3);background: linear-gradient(45deg, #ff6b6b, #4ecdc4);"
267
+ >
268
+ This is a div element
269
+ </div>
259
270
  </div>
260
271
  ```
261
272
 
262
- ### 浏览器兼容性
273
+ ### 🌐 Browser Compatibility
263
274
 
264
- 该库应该可以在以下浏览器上正常工作(需要 `Promise` polyfill):
275
+ The library should work properly on the following browsers (requires `Promise` polyfill):
265
276
 
266
- - Firefox 3.5+
267
- - Google Chrome
268
- - Opera 12+
269
- - IE9+
270
- - Safari 6+
277
+ - Firefox 3.5+
278
+ - Google Chrome
279
+ - Opera 12+
280
+ - IE9+
281
+ - Safari 6+
271
282
 
272
- ### 构建
283
+ ### 🏗️ Build
273
284
 
274
- 克隆 git 仓库:
285
+ Clone git repository:
275
286
 
276
287
  $ git clone git@github.com:lmn1919/dompdf.js.git
277
288
 
278
- 安装依赖:
289
+ Install dependencies:
279
290
 
280
291
  $ npm install
281
292
 
282
- 构建浏览器包:
293
+ Build browser package:
283
294
 
284
295
  $ npm run build
285
296
 
286
- ## Star History
297
+ ## 📈 Star History
287
298
 
288
299
  [![Star History Chart](https://api.star-history.com/svg?repos=lmn1919/dompdf.js&type=Date)](https://www.star-history.com/#lmn1919/dompdf.js&Date)
300
+