dompdf.js 1.0.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/CHANGELOG.md +566 -0
- package/LICENSE +22 -0
- package/README.md +155 -0
- package/README_CN.md +305 -0
- package/dist/__tests__/index.d.ts +1 -0
- package/dist/core/__mocks__/cache-storage.d.ts +2 -0
- package/dist/core/__mocks__/context.d.ts +9 -0
- package/dist/core/__mocks__/features.d.ts +8 -0
- package/dist/core/__mocks__/logger.d.ts +9 -0
- package/dist/core/__tests__/cache-storage.d.ts +1 -0
- package/dist/core/__tests__/logger.d.ts +1 -0
- package/dist/core/bitwise.d.ts +1 -0
- package/dist/core/cache-storage.d.ts +26 -0
- package/dist/core/context.d.ts +15 -0
- package/dist/core/debugger.d.ts +8 -0
- package/dist/core/features.d.ts +12 -0
- package/dist/core/logger.d.ts +18 -0
- package/dist/core/util.d.ts +1 -0
- package/dist/css/IPropertyDescriptor.d.ts +36 -0
- package/dist/css/ITypeDescriptor.d.ts +6 -0
- package/dist/css/index.d.ts +132 -0
- package/dist/css/layout/__mocks__/bounds.d.ts +2 -0
- package/dist/css/layout/bounds.d.ts +14 -0
- package/dist/css/layout/text.d.ts +10 -0
- package/dist/css/property-descriptors/__tests__/background-tests.d.ts +1 -0
- package/dist/css/property-descriptors/__tests__/font-family.d.ts +1 -0
- package/dist/css/property-descriptors/__tests__/paint-order.d.ts +1 -0
- package/dist/css/property-descriptors/__tests__/text-shadow.d.ts +1 -0
- package/dist/css/property-descriptors/__tests__/transform-tests.d.ts +1 -0
- package/dist/css/property-descriptors/background-clip.d.ts +8 -0
- package/dist/css/property-descriptors/background-color.d.ts +2 -0
- package/dist/css/property-descriptors/background-image.d.ts +3 -0
- package/dist/css/property-descriptors/background-origin.d.ts +8 -0
- package/dist/css/property-descriptors/background-position.d.ts +5 -0
- package/dist/css/property-descriptors/background-repeat.d.ts +9 -0
- package/dist/css/property-descriptors/background-size.d.ts +11 -0
- package/dist/css/property-descriptors/border-color.d.ts +5 -0
- package/dist/css/property-descriptors/border-radius.d.ts +7 -0
- package/dist/css/property-descriptors/border-style.d.ts +12 -0
- package/dist/css/property-descriptors/border-width.d.ts +5 -0
- package/dist/css/property-descriptors/box-shadow.d.ts +14 -0
- package/dist/css/property-descriptors/color.d.ts +2 -0
- package/dist/css/property-descriptors/content.d.ts +4 -0
- package/dist/css/property-descriptors/counter-increment.d.ts +7 -0
- package/dist/css/property-descriptors/counter-reset.d.ts +7 -0
- package/dist/css/property-descriptors/direction.d.ts +6 -0
- package/dist/css/property-descriptors/display.d.ts +35 -0
- package/dist/css/property-descriptors/duration.d.ts +2 -0
- package/dist/css/property-descriptors/float.d.ts +9 -0
- package/dist/css/property-descriptors/font-family.d.ts +4 -0
- package/dist/css/property-descriptors/font-size.d.ts +2 -0
- package/dist/css/property-descriptors/font-style.d.ts +7 -0
- package/dist/css/property-descriptors/font-variant.d.ts +2 -0
- package/dist/css/property-descriptors/font-weight.d.ts +2 -0
- package/dist/css/property-descriptors/letter-spacing.d.ts +2 -0
- package/dist/css/property-descriptors/line-break.d.ts +6 -0
- package/dist/css/property-descriptors/line-height.d.ts +4 -0
- package/dist/css/property-descriptors/list-style-image.d.ts +3 -0
- package/dist/css/property-descriptors/list-style-position.d.ts +6 -0
- package/dist/css/property-descriptors/list-style-type.d.ts +58 -0
- package/dist/css/property-descriptors/margin.d.ts +5 -0
- package/dist/css/property-descriptors/opacity.d.ts +2 -0
- package/dist/css/property-descriptors/overflow-wrap.d.ts +6 -0
- package/dist/css/property-descriptors/overflow.d.ts +9 -0
- package/dist/css/property-descriptors/padding.d.ts +5 -0
- package/dist/css/property-descriptors/paint-order.d.ts +8 -0
- package/dist/css/property-descriptors/position.d.ts +9 -0
- package/dist/css/property-descriptors/quotes.d.ts +8 -0
- package/dist/css/property-descriptors/text-align.d.ts +7 -0
- package/dist/css/property-descriptors/text-decoration-color.d.ts +2 -0
- package/dist/css/property-descriptors/text-decoration-line.d.ts +10 -0
- package/dist/css/property-descriptors/text-shadow.d.ts +12 -0
- package/dist/css/property-descriptors/text-transform.d.ts +8 -0
- package/dist/css/property-descriptors/transform-origin.d.ts +4 -0
- package/dist/css/property-descriptors/transform.d.ts +4 -0
- package/dist/css/property-descriptors/visibility.d.ts +7 -0
- package/dist/css/property-descriptors/webkit-text-stroke-color.d.ts +2 -0
- package/dist/css/property-descriptors/webkit-text-stroke-width.d.ts +2 -0
- package/dist/css/property-descriptors/word-break.d.ts +7 -0
- package/dist/css/property-descriptors/z-index.d.ts +7 -0
- package/dist/css/syntax/__tests__/tokernizer-tests.d.ts +1 -0
- package/dist/css/syntax/parser.d.ts +34 -0
- package/dist/css/syntax/tokenizer.d.ts +94 -0
- package/dist/css/types/__tests__/color-tests.d.ts +1 -0
- package/dist/css/types/__tests__/image-tests.d.ts +1 -0
- package/dist/css/types/angle.d.ts +7 -0
- package/dist/css/types/color.d.ts +11 -0
- package/dist/css/types/functions/-prefix-linear-gradient.d.ts +4 -0
- package/dist/css/types/functions/-prefix-radial-gradient.d.ts +4 -0
- package/dist/css/types/functions/-webkit-gradient.d.ts +4 -0
- package/dist/css/types/functions/__tests__/radial-gradient.d.ts +1 -0
- package/dist/css/types/functions/counter.d.ts +10 -0
- package/dist/css/types/functions/gradient.d.ts +7 -0
- package/dist/css/types/functions/linear-gradient.d.ts +4 -0
- package/dist/css/types/functions/radial-gradient.d.ts +12 -0
- package/dist/css/types/image.d.ts +54 -0
- package/dist/css/types/index.d.ts +1 -0
- package/dist/css/types/length-percentage.d.ts +11 -0
- package/dist/css/types/length.d.ts +4 -0
- package/dist/css/types/time.d.ts +2 -0
- package/dist/dom/__mocks__/document-cloner.d.ts +6 -0
- package/dist/dom/document-cloner.d.ts +45 -0
- package/dist/dom/element-container.d.ts +21 -0
- package/dist/dom/elements/li-element-container.d.ts +6 -0
- package/dist/dom/elements/ol-element-container.d.ts +7 -0
- package/dist/dom/elements/select-element-container.d.ts +6 -0
- package/dist/dom/elements/textarea-element-container.d.ts +6 -0
- package/dist/dom/node-parser.d.ts +23 -0
- package/dist/dom/replaced-elements/canvas-element-container.d.ts +8 -0
- package/dist/dom/replaced-elements/iframe-element-container.d.ts +11 -0
- package/dist/dom/replaced-elements/image-element-container.d.ts +8 -0
- package/dist/dom/replaced-elements/index.d.ts +4 -0
- package/dist/dom/replaced-elements/input-element-container.d.ts +12 -0
- package/dist/dom/replaced-elements/svg-element-container.d.ts +8 -0
- package/dist/dom/text-container.d.ts +8 -0
- package/dist/dompdf.esm.js +33182 -0
- package/dist/dompdf.esm.js.map +1 -0
- package/dist/dompdf.js +33190 -0
- package/dist/dompdf.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/invariant.d.ts +1 -0
- package/dist/render/background.d.ts +16 -0
- package/dist/render/bezier-curve.d.ts +14 -0
- package/dist/render/border.d.ts +6 -0
- package/dist/render/bound-curves.d.ts +32 -0
- package/dist/render/box-sizing.d.ts +4 -0
- package/dist/render/canvas/canvas-renderer2.d.ts +81 -0
- package/dist/render/canvas/foreignobject-renderer.d.ts +11 -0
- package/dist/render/canvas/pdf-renderer.d.ts +82 -0
- package/dist/render/effects.d.ts +38 -0
- package/dist/render/font-metrics.d.ts +11 -0
- package/dist/render/path.d.ts +13 -0
- package/dist/render/renderer.d.ts +7 -0
- package/dist/render/stacking-context.d.ts +24 -0
- package/dist/render/vector.d.ts +9 -0
- package/html2pdf-userscript.js +936 -0
- package/package.json +134 -0
- package/tsconfig.json +23 -0
- package/userscript.js +372 -0
- package/webpack.base.js +31 -0
- package/webpack.dev.js +21 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ContextOptions } from './core/context';
|
|
2
|
+
import { CloneOptions, WindowOptions } from './dom/document-cloner';
|
|
3
|
+
import { RenderOptions } from './render/canvas/pdf-renderer';
|
|
4
|
+
interface FontConfig {
|
|
5
|
+
fontFamily: string;
|
|
6
|
+
fontBase64: string;
|
|
7
|
+
fontUrl: string;
|
|
8
|
+
fontWeight: number;
|
|
9
|
+
fontStyle: string;
|
|
10
|
+
}
|
|
11
|
+
export type Options = CloneOptions & WindowOptions & RenderOptions & ContextOptions & {
|
|
12
|
+
backgroundColor: string | null;
|
|
13
|
+
foreignObjectRendering: boolean;
|
|
14
|
+
removeContainer?: boolean;
|
|
15
|
+
fontConfig?: FontConfig;
|
|
16
|
+
};
|
|
17
|
+
declare const dompdf: (element: HTMLElement, options?: Partial<Options>) => Promise<HTMLCanvasElement>;
|
|
18
|
+
export default dompdf;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const invariant: (assertion: boolean, error: string) => void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Bounds } from '../css/layout/bounds';
|
|
2
|
+
import { BACKGROUND_ORIGIN } from '../css/property-descriptors/background-origin';
|
|
3
|
+
import { ElementContainer } from '../dom/element-container';
|
|
4
|
+
import { BackgroundSizeInfo } from '../css/property-descriptors/background-size';
|
|
5
|
+
import { Vector } from './vector';
|
|
6
|
+
import { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';
|
|
7
|
+
import { CSSValue } from '../css/syntax/parser';
|
|
8
|
+
import { Path } from './path';
|
|
9
|
+
import { BACKGROUND_CLIP } from '../css/property-descriptors/background-clip';
|
|
10
|
+
export declare const calculateBackgroundPositioningArea: (backgroundOrigin: BACKGROUND_ORIGIN, element: ElementContainer) => Bounds;
|
|
11
|
+
export declare const calculateBackgroundPaintingArea: (backgroundClip: BACKGROUND_CLIP, element: ElementContainer) => Bounds;
|
|
12
|
+
export declare const calculateBackgroundRendering: (container: ElementContainer, index: number, intrinsicSize: [number | null, number | null, number | null]) => [Path[], number, number, number, number];
|
|
13
|
+
export declare const isAuto: (token: CSSValue) => boolean;
|
|
14
|
+
export declare const calculateBackgroundSize: (size: BackgroundSizeInfo[], [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null], bounds: Bounds) => [number, number];
|
|
15
|
+
export declare const getBackgroundValueForIndex: <T>(values: T[], index: number) => T;
|
|
16
|
+
export declare const calculateBackgroundRepeatPath: (repeat: BACKGROUND_REPEAT, [x, y]: [number, number], [width, height]: [number, number], backgroundPositioningArea: Bounds, backgroundPaintingArea: Bounds) => [Vector, Vector, Vector, Vector];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Vector } from './vector';
|
|
2
|
+
import { IPath, PathType, Path } from './path';
|
|
3
|
+
export declare class BezierCurve implements IPath {
|
|
4
|
+
type: PathType;
|
|
5
|
+
start: Vector;
|
|
6
|
+
startControl: Vector;
|
|
7
|
+
endControl: Vector;
|
|
8
|
+
end: Vector;
|
|
9
|
+
constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector);
|
|
10
|
+
subdivide(t: number, firstHalf: boolean): BezierCurve;
|
|
11
|
+
add(deltaX: number, deltaY: number): BezierCurve;
|
|
12
|
+
reverse(): BezierCurve;
|
|
13
|
+
}
|
|
14
|
+
export declare const isBezierCurve: (path: Path) => path is BezierCurve;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Path } from './path';
|
|
2
|
+
import { BoundCurves } from './bound-curves';
|
|
3
|
+
export declare const parsePathForBorder: (curves: BoundCurves, borderSide: number) => Path[];
|
|
4
|
+
export declare const parsePathForBorderDoubleOuter: (curves: BoundCurves, borderSide: number) => Path[];
|
|
5
|
+
export declare const parsePathForBorderDoubleInner: (curves: BoundCurves, borderSide: number) => Path[];
|
|
6
|
+
export declare const parsePathForBorderStroke: (curves: BoundCurves, borderSide: number) => Path[];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ElementContainer } from '../dom/element-container';
|
|
2
|
+
import { Path } from './path';
|
|
3
|
+
export declare class BoundCurves {
|
|
4
|
+
readonly topLeftBorderDoubleOuterBox: Path;
|
|
5
|
+
readonly topRightBorderDoubleOuterBox: Path;
|
|
6
|
+
readonly bottomRightBorderDoubleOuterBox: Path;
|
|
7
|
+
readonly bottomLeftBorderDoubleOuterBox: Path;
|
|
8
|
+
readonly topLeftBorderDoubleInnerBox: Path;
|
|
9
|
+
readonly topRightBorderDoubleInnerBox: Path;
|
|
10
|
+
readonly bottomRightBorderDoubleInnerBox: Path;
|
|
11
|
+
readonly bottomLeftBorderDoubleInnerBox: Path;
|
|
12
|
+
readonly topLeftBorderStroke: Path;
|
|
13
|
+
readonly topRightBorderStroke: Path;
|
|
14
|
+
readonly bottomRightBorderStroke: Path;
|
|
15
|
+
readonly bottomLeftBorderStroke: Path;
|
|
16
|
+
readonly topLeftBorderBox: Path;
|
|
17
|
+
readonly topRightBorderBox: Path;
|
|
18
|
+
readonly bottomRightBorderBox: Path;
|
|
19
|
+
readonly bottomLeftBorderBox: Path;
|
|
20
|
+
readonly topLeftPaddingBox: Path;
|
|
21
|
+
readonly topRightPaddingBox: Path;
|
|
22
|
+
readonly bottomRightPaddingBox: Path;
|
|
23
|
+
readonly bottomLeftPaddingBox: Path;
|
|
24
|
+
readonly topLeftContentBox: Path;
|
|
25
|
+
readonly topRightContentBox: Path;
|
|
26
|
+
readonly bottomRightContentBox: Path;
|
|
27
|
+
readonly bottomLeftContentBox: Path;
|
|
28
|
+
constructor(element: ElementContainer);
|
|
29
|
+
}
|
|
30
|
+
export declare const calculateBorderBoxPath: (curves: BoundCurves) => Path[];
|
|
31
|
+
export declare const calculateContentBoxPath: (curves: BoundCurves) => Path[];
|
|
32
|
+
export declare const calculatePaddingBoxPath: (curves: BoundCurves) => Path[];
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Context } from '../../core/context';
|
|
2
|
+
import { CSSParsedDeclaration } from '../../css';
|
|
3
|
+
import { TextBounds } from '../../css/layout/text';
|
|
4
|
+
import { BORDER_STYLE } from '../../css/property-descriptors/border-style';
|
|
5
|
+
import { Color } from '../../css/types/color';
|
|
6
|
+
import { ElementContainer } from '../../dom/element-container';
|
|
7
|
+
import { ReplacedElementContainer } from '../../dom/replaced-elements';
|
|
8
|
+
import { TextContainer } from '../../dom/text-container';
|
|
9
|
+
import { BoundCurves } from '../bound-curves';
|
|
10
|
+
import { IElementEffect } from '../effects';
|
|
11
|
+
import { Path } from '../path';
|
|
12
|
+
import { Renderer } from '../renderer';
|
|
13
|
+
import { ElementPaint, StackingContext } from '../stacking-context';
|
|
14
|
+
interface FontConfig {
|
|
15
|
+
fontFamily: string;
|
|
16
|
+
fontBase64: string;
|
|
17
|
+
fontUrl: string;
|
|
18
|
+
fontWeight: number;
|
|
19
|
+
fontStyle: string;
|
|
20
|
+
}
|
|
21
|
+
export type RenderConfigurations = RenderOptions & {
|
|
22
|
+
backgroundColor: Color | null;
|
|
23
|
+
fontConfig: FontConfig;
|
|
24
|
+
};
|
|
25
|
+
export interface RenderOptions {
|
|
26
|
+
scale: number;
|
|
27
|
+
canvas?: HTMLCanvasElement;
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
pdfFileName?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare class CanvasRenderer extends Renderer {
|
|
35
|
+
canvas: HTMLCanvasElement;
|
|
36
|
+
ctx: CanvasRenderingContext2D;
|
|
37
|
+
readonly jspdfCtx: any;
|
|
38
|
+
private readonly _activeEffects;
|
|
39
|
+
private readonly fontMetrics;
|
|
40
|
+
private readonly pxToPt;
|
|
41
|
+
constructor(context: Context, options: RenderConfigurations);
|
|
42
|
+
loadFont(): Promise<void>;
|
|
43
|
+
loadFontFromURL(url: string): Promise<unknown>;
|
|
44
|
+
addFontToJsPDF(fontData: string): void;
|
|
45
|
+
applyEffects(effects: IElementEffect[]): void;
|
|
46
|
+
pxToMm(px: number): number;
|
|
47
|
+
applyEffect(effect: IElementEffect): void;
|
|
48
|
+
popEffect(): void;
|
|
49
|
+
renderStack(stack: StackingContext): Promise<void>;
|
|
50
|
+
renderNode(paint: ElementPaint): Promise<void>;
|
|
51
|
+
renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void;
|
|
52
|
+
private createFontStyle;
|
|
53
|
+
private convertColor;
|
|
54
|
+
renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void>;
|
|
55
|
+
renderReplacedElement(container: ReplacedElementContainer, curves: BoundCurves, image: HTMLImageElement | HTMLCanvasElement, type: 'image' | 'svg' | 'canvas'): void;
|
|
56
|
+
renderNodeContent(paint: ElementPaint): Promise<void>;
|
|
57
|
+
renderStackContent(stack: StackingContext): Promise<void>;
|
|
58
|
+
mask(paths: Path[]): void;
|
|
59
|
+
path(paths: Path[]): void;
|
|
60
|
+
formatPath(paths: Path[]): void;
|
|
61
|
+
renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void;
|
|
62
|
+
resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement;
|
|
63
|
+
renderBackgroundImage(container: ElementContainer): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* 渲染实线边框
|
|
66
|
+
* @param color - 边框颜色
|
|
67
|
+
* @param side - 边的位置(0-3,分别代表上右下左)
|
|
68
|
+
* @param curvePoints - 边框曲线点
|
|
69
|
+
*/
|
|
70
|
+
renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void>;
|
|
71
|
+
renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void>;
|
|
72
|
+
renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void>;
|
|
73
|
+
drawBoxWithGradientShadow(x: number, y: number, width: number, height: number, color: Color): void;
|
|
74
|
+
renderDashedDottedBorder(color: Color, // 边框颜色
|
|
75
|
+
width: number, // 边框宽度
|
|
76
|
+
side: number, // 边的位置(0-3,分别代表上右下左)
|
|
77
|
+
curvePoints: BoundCurves, // 边框曲线点
|
|
78
|
+
style: BORDER_STYLE): Promise<void>;
|
|
79
|
+
render(element: ElementContainer): Promise<HTMLCanvasElement>;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Context } from '../../core/context';
|
|
2
|
+
import { Renderer } from '../renderer';
|
|
3
|
+
import { RenderConfigurations } from './pdf-renderer';
|
|
4
|
+
export declare class ForeignObjectRenderer extends Renderer {
|
|
5
|
+
canvas: HTMLCanvasElement;
|
|
6
|
+
ctx: CanvasRenderingContext2D;
|
|
7
|
+
options: RenderConfigurations;
|
|
8
|
+
constructor(context: Context, options: RenderConfigurations);
|
|
9
|
+
render(element: HTMLElement): Promise<HTMLCanvasElement>;
|
|
10
|
+
}
|
|
11
|
+
export declare const loadSerializedSVG: (svg: Node) => Promise<HTMLImageElement>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Context } from '../../core/context';
|
|
2
|
+
import { CSSParsedDeclaration } from '../../css';
|
|
3
|
+
import { TextBounds } from '../../css/layout/text';
|
|
4
|
+
import { BORDER_STYLE } from '../../css/property-descriptors/border-style';
|
|
5
|
+
import { Color } from '../../css/types/color';
|
|
6
|
+
import { ElementContainer } from '../../dom/element-container';
|
|
7
|
+
import { ReplacedElementContainer } from '../../dom/replaced-elements';
|
|
8
|
+
import { TextContainer } from '../../dom/text-container';
|
|
9
|
+
import 'svg2pdf.js';
|
|
10
|
+
import { BoundCurves } from '../bound-curves';
|
|
11
|
+
import { IElementEffect } from '../effects';
|
|
12
|
+
import { Path } from '../path';
|
|
13
|
+
import { Renderer } from '../renderer';
|
|
14
|
+
import { ElementPaint, StackingContext } from '../stacking-context';
|
|
15
|
+
interface FontConfig {
|
|
16
|
+
fontFamily: string;
|
|
17
|
+
fontBase64: string;
|
|
18
|
+
fontUrl: string;
|
|
19
|
+
fontWeight: number;
|
|
20
|
+
fontStyle: string;
|
|
21
|
+
}
|
|
22
|
+
export type RenderConfigurations = RenderOptions & {
|
|
23
|
+
backgroundColor: Color | null;
|
|
24
|
+
fontConfig: FontConfig;
|
|
25
|
+
};
|
|
26
|
+
export interface RenderOptions {
|
|
27
|
+
scale: number;
|
|
28
|
+
canvas?: HTMLCanvasElement;
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
pdfFileName?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare class CanvasRenderer extends Renderer {
|
|
36
|
+
canvas: HTMLCanvasElement;
|
|
37
|
+
ctx: CanvasRenderingContext2D;
|
|
38
|
+
readonly jspdfCtx: any;
|
|
39
|
+
readonly context2dCtx: any;
|
|
40
|
+
private readonly _activeEffects;
|
|
41
|
+
private readonly fontMetrics;
|
|
42
|
+
private readonly pxToPt;
|
|
43
|
+
constructor(context: Context, options: RenderConfigurations);
|
|
44
|
+
loadFont(): Promise<void>;
|
|
45
|
+
loadFontFromURL(url: string): Promise<unknown>;
|
|
46
|
+
addFontToJsPDF(fontData: string): void;
|
|
47
|
+
applyEffects(effects: IElementEffect[]): void;
|
|
48
|
+
pxToMm(px: number): number;
|
|
49
|
+
applyEffect(effect: IElementEffect): void;
|
|
50
|
+
popEffect(): void;
|
|
51
|
+
renderStack(stack: StackingContext): Promise<void>;
|
|
52
|
+
renderNode(paint: ElementPaint): Promise<void>;
|
|
53
|
+
renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void;
|
|
54
|
+
private createFontStyle;
|
|
55
|
+
private convertColor;
|
|
56
|
+
renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void>;
|
|
57
|
+
renderReplacedElement(container: ReplacedElementContainer, curves: BoundCurves, image: HTMLImageElement | HTMLCanvasElement): void;
|
|
58
|
+
renderNodeContent(paint: ElementPaint): Promise<void>;
|
|
59
|
+
renderStackContent(stack: StackingContext): Promise<void>;
|
|
60
|
+
mask(paths: Path[]): void;
|
|
61
|
+
path(paths: Path[]): void;
|
|
62
|
+
formatPath(paths: Path[]): void;
|
|
63
|
+
renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void;
|
|
64
|
+
resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement;
|
|
65
|
+
renderBackgroundImage(container: ElementContainer): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* 渲染实线边框
|
|
68
|
+
* @param color - 边框颜色
|
|
69
|
+
* @param side - 边的位置(0-3,分别代表上右下左)
|
|
70
|
+
* @param curvePoints - 边框曲线点
|
|
71
|
+
*/
|
|
72
|
+
renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void>;
|
|
73
|
+
renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void>;
|
|
74
|
+
renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void>;
|
|
75
|
+
renderDashedDottedBorder(color: Color, // 边框颜色
|
|
76
|
+
width: number, // 边框宽度
|
|
77
|
+
side: number, // 边的位置(0-3,分别代表上右下左)
|
|
78
|
+
curvePoints: BoundCurves, // 边框曲线点
|
|
79
|
+
style: BORDER_STYLE): Promise<void>;
|
|
80
|
+
render(element: ElementContainer): Promise<HTMLCanvasElement>;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Matrix } from '../css/property-descriptors/transform';
|
|
2
|
+
import { Path } from './path';
|
|
3
|
+
export declare const enum EffectType {
|
|
4
|
+
TRANSFORM = 0,
|
|
5
|
+
CLIP = 1,
|
|
6
|
+
OPACITY = 2
|
|
7
|
+
}
|
|
8
|
+
export declare const enum EffectTarget {
|
|
9
|
+
BACKGROUND_BORDERS = 2,
|
|
10
|
+
CONTENT = 4
|
|
11
|
+
}
|
|
12
|
+
export interface IElementEffect {
|
|
13
|
+
readonly type: EffectType;
|
|
14
|
+
readonly target: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class TransformEffect implements IElementEffect {
|
|
17
|
+
readonly offsetX: number;
|
|
18
|
+
readonly offsetY: number;
|
|
19
|
+
readonly matrix: Matrix;
|
|
20
|
+
readonly type: EffectType;
|
|
21
|
+
readonly target: number;
|
|
22
|
+
constructor(offsetX: number, offsetY: number, matrix: Matrix);
|
|
23
|
+
}
|
|
24
|
+
export declare class ClipEffect implements IElementEffect {
|
|
25
|
+
readonly path: Path[];
|
|
26
|
+
readonly target: EffectTarget;
|
|
27
|
+
readonly type: EffectType;
|
|
28
|
+
constructor(path: Path[], target: EffectTarget);
|
|
29
|
+
}
|
|
30
|
+
export declare class OpacityEffect implements IElementEffect {
|
|
31
|
+
readonly opacity: number;
|
|
32
|
+
readonly type: EffectType;
|
|
33
|
+
readonly target: number;
|
|
34
|
+
constructor(opacity: number);
|
|
35
|
+
}
|
|
36
|
+
export declare const isTransformEffect: (effect: IElementEffect) => effect is TransformEffect;
|
|
37
|
+
export declare const isClipEffect: (effect: IElementEffect) => effect is ClipEffect;
|
|
38
|
+
export declare const isOpacityEffect: (effect: IElementEffect) => effect is OpacityEffect;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface FontMetric {
|
|
2
|
+
baseline: number;
|
|
3
|
+
middle: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class FontMetrics {
|
|
6
|
+
private readonly _data;
|
|
7
|
+
private readonly _document;
|
|
8
|
+
constructor(document: Document);
|
|
9
|
+
private parseMetrics;
|
|
10
|
+
getMetrics(fontFamily: string, fontSize: string): FontMetric;
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BezierCurve } from './bezier-curve';
|
|
2
|
+
import { Vector } from './vector';
|
|
3
|
+
export declare const enum PathType {
|
|
4
|
+
VECTOR = 0,
|
|
5
|
+
BEZIER_CURVE = 1
|
|
6
|
+
}
|
|
7
|
+
export interface IPath {
|
|
8
|
+
type: PathType;
|
|
9
|
+
add(deltaX: number, deltaY: number): IPath;
|
|
10
|
+
}
|
|
11
|
+
export declare const equalPath: (a: Path[], b: Path[]) => boolean;
|
|
12
|
+
export declare const transformPath: (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number) => Path[];
|
|
13
|
+
export type Path = Vector | BezierCurve;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Context } from '../core/context';
|
|
2
|
+
import { RenderConfigurations } from './canvas/pdf-renderer';
|
|
3
|
+
export declare class Renderer {
|
|
4
|
+
protected readonly context: Context;
|
|
5
|
+
protected readonly options: RenderConfigurations;
|
|
6
|
+
constructor(context: Context, options: RenderConfigurations);
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ElementContainer } from '../dom/element-container';
|
|
2
|
+
import { BoundCurves } from './bound-curves';
|
|
3
|
+
import { EffectTarget, IElementEffect } from './effects';
|
|
4
|
+
export declare class StackingContext {
|
|
5
|
+
element: ElementPaint;
|
|
6
|
+
negativeZIndex: StackingContext[];
|
|
7
|
+
zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];
|
|
8
|
+
positiveZIndex: StackingContext[];
|
|
9
|
+
nonPositionedFloats: StackingContext[];
|
|
10
|
+
nonPositionedInlineLevel: StackingContext[];
|
|
11
|
+
inlineLevel: ElementPaint[];
|
|
12
|
+
nonInlineLevel: ElementPaint[];
|
|
13
|
+
constructor(container: ElementPaint);
|
|
14
|
+
}
|
|
15
|
+
export declare class ElementPaint {
|
|
16
|
+
readonly container: ElementContainer;
|
|
17
|
+
readonly parent: ElementPaint | null;
|
|
18
|
+
readonly effects: IElementEffect[];
|
|
19
|
+
readonly curves: BoundCurves;
|
|
20
|
+
listValue?: string;
|
|
21
|
+
constructor(container: ElementContainer, parent: ElementPaint | null);
|
|
22
|
+
getEffects(target: EffectTarget): IElementEffect[];
|
|
23
|
+
}
|
|
24
|
+
export declare const parseStackingContexts: (container: ElementContainer) => StackingContext;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IPath, Path, PathType } from './path';
|
|
2
|
+
export declare class Vector implements IPath {
|
|
3
|
+
type: PathType;
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
constructor(x: number, y: number);
|
|
7
|
+
add(deltaX: number, deltaY: number): Vector;
|
|
8
|
+
}
|
|
9
|
+
export declare const isVector: (path: Path) => path is Vector;
|