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.
- package/.versionrc +8 -0
- package/CHANGELOG.md +32 -543
- package/README.md +172 -160
- package/README_CN.md +233 -238
- package/dist/dompdf.esm.js +124 -124
- package/dist/dompdf.esm.js.map +1 -1
- package/dist/dompdf.js +124 -124
- package/dist/dompdf.js.map +1 -1
- package/dist/dompdf.min.js +67 -0
- package/dist/index.d.ts +2 -1
- package/dist/lib/__tests__/index.js +144 -0
- package/dist/lib/__tests__/index.js.map +1 -0
- package/dist/lib/core/__mocks__/cache-storage.js +10 -0
- package/dist/lib/core/__mocks__/cache-storage.js.map +1 -0
- package/dist/lib/core/__mocks__/context.js +22 -0
- package/dist/lib/core/__mocks__/context.js.map +1 -0
- package/dist/lib/core/__mocks__/features.js +12 -0
- package/dist/lib/core/__mocks__/features.js.map +1 -0
- package/dist/lib/core/__mocks__/logger.js +24 -0
- package/dist/lib/core/__mocks__/logger.js.map +1 -0
- package/dist/lib/core/__tests__/cache-storage.js +420 -0
- package/dist/lib/core/__tests__/cache-storage.js.map +1 -0
- package/dist/lib/core/__tests__/logger.js +28 -0
- package/dist/lib/core/__tests__/logger.js.map +1 -0
- package/dist/lib/core/bitwise.js +6 -0
- package/dist/lib/core/bitwise.js.map +1 -0
- package/dist/lib/core/cache-storage.js +198 -0
- package/dist/lib/core/cache-storage.js.map +1 -0
- package/dist/lib/core/context.js +18 -0
- package/dist/lib/core/context.js.map +1 -0
- package/dist/lib/core/debugger.js +25 -0
- package/dist/lib/core/debugger.js.map +1 -0
- package/dist/lib/core/features.js +193 -0
- package/dist/lib/core/features.js.map +1 -0
- package/dist/lib/core/logger.js +92 -0
- package/dist/lib/core/logger.js.map +1 -0
- package/dist/lib/core/util.js +5 -0
- package/dist/lib/core/util.js.map +1 -0
- package/dist/lib/css/IPropertyDescriptor.js +3 -0
- package/dist/lib/css/IPropertyDescriptor.js.map +1 -0
- package/dist/lib/css/ITypeDescriptor.js +3 -0
- package/dist/lib/css/ITypeDescriptor.js.map +1 -0
- package/dist/lib/css/index.js +216 -0
- package/dist/lib/css/index.js.map +1 -0
- package/dist/lib/css/layout/__mocks__/bounds.js +9 -0
- package/dist/lib/css/layout/__mocks__/bounds.js.map +1 -0
- package/dist/lib/css/layout/bounds.js +42 -0
- package/dist/lib/css/layout/bounds.js.map +1 -0
- package/dist/lib/css/layout/text.js +137 -0
- package/dist/lib/css/layout/text.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js +48 -0
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/font-family.js +25 -0
- package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js +88 -0
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +94 -0
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +18 -0
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-clip.js +24 -0
- package/dist/lib/css/property-descriptors/background-clip.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-color.js +11 -0
- package/dist/lib/css/property-descriptors/background-color.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-image.js +24 -0
- package/dist/lib/css/property-descriptors/background-image.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-origin.js +24 -0
- package/dist/lib/css/property-descriptors/background-origin.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-position.js +17 -0
- package/dist/lib/css/property-descriptors/background-position.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-repeat.js +36 -0
- package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -0
- package/dist/lib/css/property-descriptors/background-size.js +24 -0
- package/dist/lib/css/property-descriptors/background-size.js.map +1 -0
- package/dist/lib/css/property-descriptors/border-color.js +15 -0
- package/dist/lib/css/property-descriptors/border-color.js.map +1 -0
- package/dist/lib/css/property-descriptors/border-radius.js +18 -0
- package/dist/lib/css/property-descriptors/border-radius.js.map +1 -0
- package/dist/lib/css/property-descriptors/border-style.js +30 -0
- package/dist/lib/css/property-descriptors/border-style.js.map +1 -0
- package/dist/lib/css/property-descriptors/border-width.js +21 -0
- package/dist/lib/css/property-descriptors/border-width.js.map +1 -0
- package/dist/lib/css/property-descriptors/box-shadow.js +55 -0
- package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -0
- package/dist/lib/css/property-descriptors/color.js +11 -0
- package/dist/lib/css/property-descriptors/color.js.map +1 -0
- package/dist/lib/css/property-descriptors/content.js +20 -0
- package/dist/lib/css/property-descriptors/content.js.map +1 -0
- package/dist/lib/css/property-descriptors/counter-increment.js +31 -0
- package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -0
- package/dist/lib/css/property-descriptors/counter-reset.js +27 -0
- package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -0
- package/dist/lib/css/property-descriptors/direction.js +19 -0
- package/dist/lib/css/property-descriptors/direction.js.map +1 -0
- package/dist/lib/css/property-descriptors/display.js +82 -0
- package/dist/lib/css/property-descriptors/display.js.map +1 -0
- package/dist/lib/css/property-descriptors/duration.js +15 -0
- package/dist/lib/css/property-descriptors/duration.js.map +1 -0
- package/dist/lib/css/property-descriptors/float.js +23 -0
- package/dist/lib/css/property-descriptors/float.js.map +1 -0
- package/dist/lib/css/property-descriptors/font-family.js +33 -0
- package/dist/lib/css/property-descriptors/font-family.js.map +1 -0
- package/dist/lib/css/property-descriptors/font-size.js +11 -0
- package/dist/lib/css/property-descriptors/font-size.js.map +1 -0
- package/dist/lib/css/property-descriptors/font-style.js +21 -0
- package/dist/lib/css/property-descriptors/font-style.js.map +1 -0
- package/dist/lib/css/property-descriptors/font-variant.js +14 -0
- package/dist/lib/css/property-descriptors/font-variant.js.map +1 -0
- package/dist/lib/css/property-descriptors/font-weight.js +26 -0
- package/dist/lib/css/property-descriptors/font-weight.js.map +1 -0
- package/dist/lib/css/property-descriptors/letter-spacing.js +22 -0
- package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -0
- package/dist/lib/css/property-descriptors/line-break.js +24 -0
- package/dist/lib/css/property-descriptors/line-break.js.map +1 -0
- package/dist/lib/css/property-descriptors/line-height.js +25 -0
- package/dist/lib/css/property-descriptors/line-height.js.map +1 -0
- package/dist/lib/css/property-descriptors/list-style-image.js +17 -0
- package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -0
- package/dist/lib/css/property-descriptors/list-style-position.js +19 -0
- package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -0
- package/dist/lib/css/property-descriptors/list-style-type.js +123 -0
- package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -0
- package/dist/lib/css/property-descriptors/margin.js +14 -0
- package/dist/lib/css/property-descriptors/margin.js.map +1 -0
- package/dist/lib/css/property-descriptors/opacity.js +17 -0
- package/dist/lib/css/property-descriptors/opacity.js.map +1 -0
- package/dist/lib/css/property-descriptors/overflow-wrap.js +19 -0
- package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -0
- package/dist/lib/css/property-descriptors/overflow.js +28 -0
- package/dist/lib/css/property-descriptors/overflow.js.map +1 -0
- package/dist/lib/css/property-descriptors/padding.js +15 -0
- package/dist/lib/css/property-descriptors/padding.js.map +1 -0
- package/dist/lib/css/property-descriptors/paint-order.js +34 -0
- package/dist/lib/css/property-descriptors/paint-order.js.map +1 -0
- package/dist/lib/css/property-descriptors/position.js +23 -0
- package/dist/lib/css/property-descriptors/position.js.map +1 -0
- package/dist/lib/css/property-descriptors/quotes.js +42 -0
- package/dist/lib/css/property-descriptors/quotes.js.map +1 -0
- package/dist/lib/css/property-descriptors/text-align.js +22 -0
- package/dist/lib/css/property-descriptors/text-align.js.map +1 -0
- package/dist/lib/css/property-descriptors/text-decoration-color.js +11 -0
- package/dist/lib/css/property-descriptors/text-decoration-color.js.map +1 -0
- package/dist/lib/css/property-descriptors/text-decoration-line.js +29 -0
- package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -0
- package/dist/lib/css/property-descriptors/text-shadow.js +47 -0
- package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -0
- package/dist/lib/css/property-descriptors/text-transform.js +21 -0
- package/dist/lib/css/property-descriptors/text-transform.js.map +1 -0
- package/dist/lib/css/property-descriptors/transform-origin.js +25 -0
- package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -0
- package/dist/lib/css/property-descriptors/transform.js +37 -0
- package/dist/lib/css/property-descriptors/transform.js.map +1 -0
- package/dist/lib/css/property-descriptors/visibility.js +21 -0
- package/dist/lib/css/property-descriptors/visibility.js.map +1 -0
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +11 -0
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js.map +1 -0
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +17 -0
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -0
- package/dist/lib/css/property-descriptors/word-break.js +27 -0
- package/dist/lib/css/property-descriptors/word-break.js.map +1 -0
- package/dist/lib/css/property-descriptors/z-index.js +20 -0
- package/dist/lib/css/property-descriptors/z-index.js.map +1 -0
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +34 -0
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +1 -0
- package/dist/lib/css/syntax/parser.js +147 -0
- package/dist/lib/css/syntax/parser.js.map +1 -0
- package/dist/lib/css/syntax/tokenizer.js +630 -0
- package/dist/lib/css/syntax/tokenizer.js.map +1 -0
- package/dist/lib/css/types/__tests__/color-tests.js +66 -0
- package/dist/lib/css/types/__tests__/color-tests.js.map +1 -0
- package/dist/lib/css/types/__tests__/image-tests.js +233 -0
- package/dist/lib/css/types/__tests__/image-tests.js.map +1 -0
- package/dist/lib/css/types/angle.js +81 -0
- package/dist/lib/css/types/angle.js.map +1 -0
- package/dist/lib/css/types/color.js +311 -0
- package/dist/lib/css/types/color.js.map +1 -0
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js +33 -0
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -0
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js +84 -0
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -0
- package/dist/lib/css/types/functions/-webkit-gradient.js +60 -0
- package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -0
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js +68 -0
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +1 -0
- package/dist/lib/css/types/functions/counter.js +374 -0
- package/dist/lib/css/types/functions/counter.js.map +1 -0
- package/dist/lib/css/types/functions/gradient.js +165 -0
- package/dist/lib/css/types/functions/gradient.js.map +1 -0
- package/dist/lib/css/types/functions/linear-gradient.js +28 -0
- package/dist/lib/css/types/functions/linear-gradient.js.map +1 -0
- package/dist/lib/css/types/functions/radial-gradient.js +91 -0
- package/dist/lib/css/types/functions/radial-gradient.js.map +1 -0
- package/dist/lib/css/types/image.js +53 -0
- package/dist/lib/css/types/image.js.map +1 -0
- package/dist/lib/css/types/index.js +3 -0
- package/dist/lib/css/types/index.js.map +1 -0
- package/dist/lib/css/types/length-percentage.js +52 -0
- package/dist/lib/css/types/length-percentage.js.map +1 -0
- package/dist/lib/css/types/length.js +8 -0
- package/dist/lib/css/types/length.js.map +1 -0
- package/dist/lib/css/types/time.js +18 -0
- package/dist/lib/css/types/time.js.map +1 -0
- package/dist/lib/dom/__mocks__/document-cloner.js +24 -0
- package/dist/lib/dom/__mocks__/document-cloner.js.map +1 -0
- package/dist/lib/dom/document-cloner.js +530 -0
- package/dist/lib/dom/document-cloner.js.map +1 -0
- package/dist/lib/dom/element-container.js +39 -0
- package/dist/lib/dom/element-container.js.map +1 -0
- package/dist/lib/dom/elements/li-element-container.js +30 -0
- package/dist/lib/dom/elements/li-element-container.js.map +1 -0
- package/dist/lib/dom/elements/ol-element-container.js +31 -0
- package/dist/lib/dom/elements/ol-element-container.js.map +1 -0
- package/dist/lib/dom/elements/select-element-container.js +31 -0
- package/dist/lib/dom/elements/select-element-container.js.map +1 -0
- package/dist/lib/dom/elements/textarea-element-container.js +30 -0
- package/dist/lib/dom/elements/textarea-element-container.js.map +1 -0
- package/dist/lib/dom/node-parser.js +306 -0
- package/dist/lib/dom/node-parser.js.map +1 -0
- package/dist/lib/dom/replaced-elements/canvas-element-container.js +32 -0
- package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -0
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +54 -0
- package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -0
- package/dist/lib/dom/replaced-elements/image-element-container.js +33 -0
- package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -0
- package/dist/lib/dom/replaced-elements/index.js +3 -0
- package/dist/lib/dom/replaced-elements/index.js.map +1 -0
- package/dist/lib/dom/replaced-elements/input-element-container.js +102 -0
- package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -0
- package/dist/lib/dom/replaced-elements/pseudo-elements.js +1 -0
- package/dist/lib/dom/replaced-elements/pseudo-elements.js.map +1 -0
- package/dist/lib/dom/replaced-elements/svg-element-container.js +38 -0
- package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -0
- package/dist/lib/dom/text-container.js +32 -0
- package/dist/lib/dom/text-container.js.map +1 -0
- package/dist/lib/index.js +274 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/invariant.js +10 -0
- package/dist/lib/invariant.js.map +1 -0
- package/dist/lib/render/background.js +187 -0
- package/dist/lib/render/background.js.map +1 -0
- package/dist/lib/render/bezier-curve.js +36 -0
- package/dist/lib/render/bezier-curve.js.map +1 -0
- package/dist/lib/render/border.js +105 -0
- package/dist/lib/render/border.js.map +1 -0
- package/dist/lib/render/bound-curves.js +190 -0
- package/dist/lib/render/bound-curves.js.map +1 -0
- package/dist/lib/render/box-sizing.js +21 -0
- package/dist/lib/render/box-sizing.js.map +1 -0
- package/dist/lib/render/canvas/foreignobject-renderer.js +108 -0
- package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -0
- package/dist/lib/render/canvas/pdf-renderer.js +1340 -0
- package/dist/lib/render/canvas/pdf-renderer.js.map +1 -0
- package/dist/lib/render/effects.js +41 -0
- package/dist/lib/render/effects.js.map +1 -0
- package/dist/lib/render/font-metrics.js +55 -0
- package/dist/lib/render/font-metrics.js.map +1 -0
- package/dist/lib/render/page-format-map.js +54 -0
- package/dist/lib/render/page-format-map.js.map +1 -0
- package/dist/lib/render/paginate copy 2.js +178 -0
- package/dist/lib/render/paginate copy 2.js.map +1 -0
- package/dist/lib/render/paginate.js +211 -0
- package/dist/lib/render/paginate.js.map +1 -0
- package/dist/lib/render/path.js +27 -0
- package/dist/lib/render/path.js.map +1 -0
- package/dist/lib/render/renderer.js +12 -0
- package/dist/lib/render/renderer.js.map +1 -0
- package/dist/lib/render/stacking-context.js +172 -0
- package/dist/lib/render/stacking-context.js.map +1 -0
- package/dist/lib/render/vector.js +18 -0
- package/dist/lib/render/vector.js.map +1 -0
- package/dist/lib/utils/css-utils.js +19 -0
- package/dist/lib/utils/css-utils.js.map +1 -0
- package/dist/lib/utils/element-utils.js +25 -0
- package/dist/lib/utils/element-utils.js.map +1 -0
- package/dist/lib/utils/font-utils.js +70 -0
- package/dist/lib/utils/font-utils.js.map +1 -0
- package/dist/lib/utils/index.js +22 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/type-utils.js +40 -0
- package/dist/lib/utils/type-utils.js.map +1 -0
- package/dist/lib/utils/url-path.js +22 -0
- package/dist/lib/utils/url-path.js.map +1 -0
- package/dist/render/canvas/pdf-renderer.d.ts +2 -2
- package/dist/render/paginate copy 2.d.ts +3 -0
- package/dist/render/paginate.d.ts +1 -1
- package/dist/types/__tests__/index.d.ts +1 -0
- package/dist/types/core/__mocks__/cache-storage.d.ts +2 -0
- package/dist/types/core/__mocks__/context.d.ts +9 -0
- package/dist/types/core/__mocks__/features.d.ts +8 -0
- package/dist/types/core/__mocks__/logger.d.ts +9 -0
- package/dist/types/core/__tests__/cache-storage.d.ts +1 -0
- package/dist/types/core/__tests__/logger.d.ts +1 -0
- package/dist/types/core/bitwise.d.ts +1 -0
- package/dist/types/core/cache-storage.d.ts +26 -0
- package/dist/types/core/context.d.ts +15 -0
- package/dist/types/core/debugger.d.ts +8 -0
- package/dist/types/core/features.d.ts +12 -0
- package/dist/types/core/logger.d.ts +18 -0
- package/dist/types/core/util.d.ts +1 -0
- package/dist/types/css/IPropertyDescriptor.d.ts +36 -0
- package/dist/types/css/ITypeDescriptor.d.ts +6 -0
- package/dist/types/css/index.d.ts +132 -0
- package/dist/types/css/layout/__mocks__/bounds.d.ts +2 -0
- package/dist/types/css/layout/bounds.d.ts +14 -0
- package/dist/types/css/layout/text.d.ts +10 -0
- package/dist/types/css/property-descriptors/__tests__/background-tests.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/font-family.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/paint-order.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/text-shadow.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/transform-tests.d.ts +1 -0
- package/dist/types/css/property-descriptors/background-clip.d.ts +8 -0
- package/dist/types/css/property-descriptors/background-color.d.ts +2 -0
- package/dist/types/css/property-descriptors/background-image.d.ts +3 -0
- package/dist/types/css/property-descriptors/background-origin.d.ts +8 -0
- package/dist/types/css/property-descriptors/background-position.d.ts +5 -0
- package/dist/types/css/property-descriptors/background-repeat.d.ts +9 -0
- package/dist/types/css/property-descriptors/background-size.d.ts +11 -0
- package/dist/types/css/property-descriptors/border-color.d.ts +5 -0
- package/dist/types/css/property-descriptors/border-radius.d.ts +7 -0
- package/dist/types/css/property-descriptors/border-style.d.ts +12 -0
- package/dist/types/css/property-descriptors/border-width.d.ts +5 -0
- package/dist/types/css/property-descriptors/box-shadow.d.ts +14 -0
- package/dist/types/css/property-descriptors/color.d.ts +2 -0
- package/dist/types/css/property-descriptors/content.d.ts +4 -0
- package/dist/types/css/property-descriptors/counter-increment.d.ts +7 -0
- package/dist/types/css/property-descriptors/counter-reset.d.ts +7 -0
- package/dist/types/css/property-descriptors/direction.d.ts +6 -0
- package/dist/types/css/property-descriptors/display.d.ts +35 -0
- package/dist/types/css/property-descriptors/duration.d.ts +2 -0
- package/dist/types/css/property-descriptors/float.d.ts +9 -0
- package/dist/types/css/property-descriptors/font-family.d.ts +4 -0
- package/dist/types/css/property-descriptors/font-size.d.ts +2 -0
- package/dist/types/css/property-descriptors/font-style.d.ts +7 -0
- package/dist/types/css/property-descriptors/font-variant.d.ts +2 -0
- package/dist/types/css/property-descriptors/font-weight.d.ts +2 -0
- package/dist/types/css/property-descriptors/letter-spacing.d.ts +2 -0
- package/dist/types/css/property-descriptors/line-break.d.ts +6 -0
- package/dist/types/css/property-descriptors/line-height.d.ts +4 -0
- package/dist/types/css/property-descriptors/list-style-image.d.ts +3 -0
- package/dist/types/css/property-descriptors/list-style-position.d.ts +6 -0
- package/dist/types/css/property-descriptors/list-style-type.d.ts +58 -0
- package/dist/types/css/property-descriptors/margin.d.ts +5 -0
- package/dist/types/css/property-descriptors/opacity.d.ts +2 -0
- package/dist/types/css/property-descriptors/overflow-wrap.d.ts +6 -0
- package/dist/types/css/property-descriptors/overflow.d.ts +9 -0
- package/dist/types/css/property-descriptors/padding.d.ts +5 -0
- package/dist/types/css/property-descriptors/paint-order.d.ts +8 -0
- package/dist/types/css/property-descriptors/position.d.ts +9 -0
- package/dist/types/css/property-descriptors/quotes.d.ts +8 -0
- package/dist/types/css/property-descriptors/text-align.d.ts +7 -0
- package/dist/types/css/property-descriptors/text-decoration-color.d.ts +2 -0
- package/dist/types/css/property-descriptors/text-decoration-line.d.ts +10 -0
- package/dist/types/css/property-descriptors/text-shadow.d.ts +12 -0
- package/dist/types/css/property-descriptors/text-transform.d.ts +8 -0
- package/dist/types/css/property-descriptors/transform-origin.d.ts +4 -0
- package/dist/types/css/property-descriptors/transform.d.ts +4 -0
- package/dist/types/css/property-descriptors/visibility.d.ts +7 -0
- package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +2 -0
- package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +2 -0
- package/dist/types/css/property-descriptors/word-break.d.ts +7 -0
- package/dist/types/css/property-descriptors/z-index.d.ts +7 -0
- package/dist/types/css/syntax/__tests__/tokernizer-tests.d.ts +1 -0
- package/dist/types/css/syntax/parser.d.ts +34 -0
- package/dist/types/css/syntax/tokenizer.d.ts +94 -0
- package/dist/types/css/types/__tests__/color-tests.d.ts +1 -0
- package/dist/types/css/types/__tests__/image-tests.d.ts +1 -0
- package/dist/types/css/types/angle.d.ts +7 -0
- package/dist/types/css/types/color.d.ts +11 -0
- package/dist/types/css/types/functions/-prefix-linear-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/-prefix-radial-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/-webkit-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/__tests__/radial-gradient.d.ts +1 -0
- package/dist/types/css/types/functions/counter.d.ts +10 -0
- package/dist/types/css/types/functions/gradient.d.ts +7 -0
- package/dist/types/css/types/functions/linear-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/radial-gradient.d.ts +12 -0
- package/dist/types/css/types/image.d.ts +54 -0
- package/dist/types/css/types/index.d.ts +1 -0
- package/dist/types/css/types/length-percentage.d.ts +11 -0
- package/dist/types/css/types/length.d.ts +4 -0
- package/dist/types/css/types/time.d.ts +2 -0
- package/dist/types/dom/__mocks__/document-cloner.d.ts +6 -0
- package/dist/types/dom/document-cloner.d.ts +45 -0
- package/dist/types/dom/element-container.d.ts +23 -0
- package/dist/types/dom/elements/li-element-container.d.ts +6 -0
- package/dist/types/dom/elements/ol-element-container.d.ts +7 -0
- package/dist/types/dom/elements/select-element-container.d.ts +6 -0
- package/dist/types/dom/elements/textarea-element-container.d.ts +6 -0
- package/dist/types/dom/node-parser.d.ts +23 -0
- package/dist/types/dom/replaced-elements/canvas-element-container.d.ts +8 -0
- package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +11 -0
- package/dist/types/dom/replaced-elements/image-element-container.d.ts +8 -0
- package/dist/types/dom/replaced-elements/index.d.ts +4 -0
- package/dist/types/dom/replaced-elements/input-element-container.d.ts +12 -0
- package/dist/types/dom/replaced-elements/pseudo-elements.d.ts +0 -0
- package/dist/types/dom/replaced-elements/svg-element-container.d.ts +8 -0
- package/dist/types/dom/text-container.d.ts +8 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/invariant.d.ts +1 -0
- package/dist/types/render/background.d.ts +16 -0
- package/dist/types/render/bezier-curve.d.ts +14 -0
- package/dist/types/render/border.d.ts +6 -0
- package/dist/types/render/bound-curves.d.ts +32 -0
- package/dist/types/render/box-sizing.d.ts +4 -0
- package/dist/types/render/canvas/foreignobject-renderer.d.ts +11 -0
- package/dist/types/render/canvas/pdf-renderer.d.ts +110 -0
- package/dist/types/render/effects.d.ts +38 -0
- package/dist/types/render/font-metrics.d.ts +11 -0
- package/dist/types/render/page-format-map.d.ts +4 -0
- package/dist/types/render/paginate copy 2.d.ts +3 -0
- package/dist/types/render/paginate.d.ts +3 -0
- package/dist/types/render/path.d.ts +13 -0
- package/dist/types/render/renderer.d.ts +7 -0
- package/dist/types/render/stacking-context.d.ts +24 -0
- package/dist/types/render/vector.d.ts +9 -0
- package/dist/types/utils/css-utils.d.ts +2 -0
- package/dist/types/utils/element-utils.d.ts +7 -0
- package/dist/types/utils/font-utils.d.ts +9 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/dist/types/utils/type-utils.d.ts +4 -0
- package/dist/types/utils/url-path.d.ts +7 -0
- package/dist/utils/font-utils.d.ts +2 -0
- package/fontconverter/fontconverter.html +2 -2
- package/package.json +135 -135
- package/page_sizes.md +50 -0
- package/.vscode/settings.json +0 -5
- package/html2pdf-userscript.js +0 -936
package/README.md
CHANGED
|
@@ -1,215 +1,226 @@
|
|
|
1
|
-
# dompdf
|
|
1
|
+
# dompdf.js
|
|
2
2
|
|
|
3
|
-
|
|
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
|
[](https://gitter.im/niklasvh/html2canvas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
|
6
8
|

|
|
7
9
|
[](https://www.npmjs.org/package/html2canvas)
|
|
8
10
|
[](https://www.npmjs.org/package/html2canvas) -->
|
|
9
11
|
|
|
10
|
-
|
|
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
|
-
|
|
14
|
+
Live Demo: [Online Demo](https://dompdfjs.lisky.com.cn)
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
### PDF Generation Example
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+

|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
所以他有以下优势:
|
|
20
|
+
### 🛠️ How it works
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
68
|
-
|
|
69
|
-
dompdf(document.querySelector(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
85
|
+
By default, dompdf renders the entire document onto a single page.
|
|
85
86
|
|
|
86
|
-
|
|
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
|
-
|
|
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
|
|
92
|
-
|
|
93
|
-
dompdf(document.querySelector(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
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` |
|
|
137
|
-
| `backgroundColor` |
|
|
138
|
-
| `fontConfig` |
|
|
139
|
-
| `encryption` |
|
|
140
|
-
| `precision` |
|
|
141
|
-
| `compress` |
|
|
142
|
-
| `putOnlyUsedFonts` |
|
|
143
|
-
| `pagination` |
|
|
144
|
-
| `format` |
|
|
145
|
-
| `pageConfig` |
|
|
146
|
-
| `onJspdfReady`
|
|
147
|
-
| `onJspdfFinish`
|
|
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`
|
|
154
|
-
| `footer`
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
####
|
|
249
|
+
#### 🎨 Rendering Complex Styles like Gradients, Shadows - Using foreignObjectRendering
|
|
239
250
|
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
244
|
-
|
|
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
|
|
248
|
-
3.
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
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
|
-
|
|
275
|
+
The library should work properly on the following browsers (requires `Promise` polyfill):
|
|
265
276
|
|
|
266
|
-
-
|
|
267
|
-
-
|
|
268
|
-
-
|
|
269
|
-
-
|
|
270
|
-
-
|
|
277
|
+
- Firefox 3.5+
|
|
278
|
+
- Google Chrome
|
|
279
|
+
- Opera 12+
|
|
280
|
+
- IE9+
|
|
281
|
+
- Safari 6+
|
|
271
282
|
|
|
272
|
-
###
|
|
283
|
+
### 🏗️ Build
|
|
273
284
|
|
|
274
|
-
|
|
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
|
[](https://www.star-history.com/#lmn1919/dompdf.js&Date)
|
|
300
|
+
|