dompdf.js 1.0.3 → 1.1.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 (38) hide show
  1. package/.vscode/settings.json +5 -0
  2. package/README.md +168 -79
  3. package/dist/dom/element-container.d.ts +4 -2
  4. package/dist/dompdf.esm.js +614 -462
  5. package/dist/dompdf.esm.js.map +1 -1
  6. package/dist/dompdf.js +614 -462
  7. package/dist/dompdf.js.map +1 -1
  8. package/dist/index.d.ts +1 -3
  9. package/dist/lib/__tests__/index.js.map +1 -1
  10. package/dist/lib/css/property-descriptors/border-style.js.map +1 -1
  11. package/dist/lib/css/types/color.js.map +1 -1
  12. package/dist/lib/dom/element-container.js +3 -1
  13. package/dist/lib/dom/element-container.js.map +1 -1
  14. package/dist/lib/dom/node-parser.js +15 -7
  15. package/dist/lib/dom/node-parser.js.map +1 -1
  16. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
  17. package/dist/lib/index.js +107 -42
  18. package/dist/lib/index.js.map +1 -1
  19. package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -1
  20. package/dist/lib/render/canvas/pdf-renderer.js +276 -472
  21. package/dist/lib/render/canvas/pdf-renderer.js.map +1 -1
  22. package/dist/lib/render/page-format-map.js +54 -0
  23. package/dist/lib/render/page-format-map.js.map +1 -0
  24. package/dist/lib/render/paginate.js +172 -0
  25. package/dist/lib/render/paginate.js.map +1 -0
  26. package/dist/render/canvas/pdf-renderer.d.ts +41 -16
  27. package/dist/render/page-format-map.d.ts +4 -0
  28. package/dist/render/paginate.d.ts +3 -0
  29. package/dist/types/dom/element-container.d.ts +4 -2
  30. package/dist/types/index.d.ts +1 -3
  31. package/dist/types/render/canvas/pdf-renderer.d.ts +41 -16
  32. package/dist/types/render/page-format-map.d.ts +4 -0
  33. package/dist/types/render/paginate.d.ts +3 -0
  34. package/package.json +135 -134
  35. package/dist/lib/render/canvas/canvas-renderer2.js +0 -1415
  36. package/dist/lib/render/canvas/canvas-renderer2.js.map +0 -1
  37. package/dist/render/canvas/canvas-renderer2.d.ts +0 -81
  38. package/dist/types/render/canvas/canvas-renderer2.d.ts +0 -81
@@ -14,14 +14,29 @@ import { ElementPaint, StackingContext } from '../stacking-context';
14
14
  interface FontConfig {
15
15
  fontFamily: string;
16
16
  fontBase64: string;
17
- fontUrl: string;
18
- fontWeight: number;
19
- fontStyle: string;
20
17
  }
21
18
  export type RenderConfigurations = RenderOptions & {
22
19
  backgroundColor: Color | null;
23
20
  fontConfig: FontConfig;
24
21
  };
22
+ export type pageConfigOptions = {
23
+ header: {
24
+ content: string;
25
+ height: number;
26
+ contentPosition: 'center' | 'centerLeft' | 'centerRight' | 'centerTop' | 'centerBottom' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom' | [number, number];
27
+ contentColor: string;
28
+ contentFontSize: number;
29
+ padding?: [number, number, number, number];
30
+ };
31
+ footer: {
32
+ content: string;
33
+ height: number;
34
+ contentPosition: 'center' | 'centerLeft' | 'centerRight' | 'centerTop' | 'centerBottom' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom' | [number, number];
35
+ contentColor: string;
36
+ contentFontSize: number;
37
+ padding?: [number, number, number, number];
38
+ };
39
+ };
25
40
  export interface RenderOptions {
26
41
  scale: number;
27
42
  canvas?: HTMLCanvasElement;
@@ -30,6 +45,18 @@ export interface RenderOptions {
30
45
  width: number;
31
46
  height: number;
32
47
  pdfFileName?: string;
48
+ encryption?: {
49
+ userPassword?: string;
50
+ ownerPassword?: string;
51
+ userPermissions?: string[];
52
+ };
53
+ precision?: number;
54
+ floatPrecision?: number | 'smart';
55
+ compress?: boolean;
56
+ putOnlyUsedFonts?: boolean;
57
+ pagination?: boolean;
58
+ format?: 'a0' | 'a1' | 'a2' | 'a3' | 'a4' | 'a5' | 'a6' | 'a7' | 'a8' | 'a9' | 'a10' | 'b0' | 'b1' | 'b2' | 'b3' | 'b4' | 'b5' | 'b6' | 'b7' | 'b8' | 'b9' | 'b10' | 'c0' | 'c1' | 'c2' | 'c3' | 'c4' | 'c5' | 'c6' | 'c7' | 'c8' | 'c9' | 'c10' | 'dl' | 'letter' | 'government-letter' | 'legal' | 'junior-legal' | 'ledger' | 'tabloid' | 'credit-card';
59
+ pageConfig?: pageConfigOptions;
33
60
  }
34
61
  export declare class CanvasRenderer extends Renderer {
35
62
  canvas: HTMLCanvasElement;
@@ -39,9 +66,9 @@ export declare class CanvasRenderer extends Renderer {
39
66
  private readonly _activeEffects;
40
67
  private readonly fontMetrics;
41
68
  private readonly pxToPt;
69
+ private totalPages;
42
70
  constructor(context: Context, options: RenderConfigurations);
43
71
  loadFont(): Promise<void>;
44
- loadFontFromURL(url: string): Promise<unknown>;
45
72
  addFontToJsPDF(fontData: string): void;
46
73
  applyEffects(effects: IElementEffect[]): void;
47
74
  applyEffect(effect: IElementEffect): void;
@@ -61,20 +88,18 @@ export declare class CanvasRenderer extends Renderer {
61
88
  renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void;
62
89
  resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement;
63
90
  renderBackgroundImage(container: ElementContainer): Promise<void>;
64
- /**
65
- * 渲染实线边框
66
- * @param color - 边框颜色
67
- * @param side - 边的位置(0-3,分别代表上右下左)
68
- * @param curvePoints - 边框曲线点
69
- */
70
91
  renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void>;
71
92
  renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void>;
72
93
  renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void>;
73
- renderDashedDottedBorder(color: Color, // 边框颜色
74
- width: number, // 边框宽度
75
- side: number, // 边的位置(0-3,分别代表上右下左)
76
- curvePoints: BoundCurves, // 边框曲线点
77
- style: BORDER_STYLE): Promise<void>;
78
- render(element: ElementContainer): Promise<HTMLCanvasElement>;
94
+ renderDashedDottedBorder(color: Color, width: number, side: number, curvePoints: BoundCurves, style: BORDER_STYLE): Promise<void>;
95
+ addPage(offsetY: number): Promise<void>;
96
+ renderPage(element: ElementContainer, pageNum: number): Promise<void>;
97
+ setTotalPages(total: number): void;
98
+ private setTextColorFromString;
99
+ private safe;
100
+ private textPdf;
101
+ private computeContentPosition;
102
+ private addImagePdf;
103
+ output(): Promise<Blob>;
79
104
  }
80
105
  export {};
@@ -0,0 +1,4 @@
1
+ export declare const PAGE_FORMAT_MAP: Record<string, {
2
+ width: number;
3
+ height: number;
4
+ }>;
@@ -0,0 +1,3 @@
1
+ import type { ElementContainer } from '../dom/element-container';
2
+ import { pageConfigOptions } from './canvas/pdf-renderer';
3
+ export declare const paginateNode: (root: ElementContainer, pageHeight: number, initialOffset?: number, pageConfig?: pageConfigOptions) => ElementContainer[];
package/package.json CHANGED
@@ -1,134 +1,135 @@
1
- {
2
- "title": "dompdf.js",
3
- "name": "dompdf.js",
4
- "description": "HTML to PDF",
5
- "main": "dist/dompdf.js",
6
- "module": "dist/dompdf.esm.js",
7
- "typings": "dist/types/index.d.ts",
8
- "browser": "dist/dompdf.js",
9
- "version": "1.0.3",
10
- "author": {
11
- "name": "lfc",
12
- "email": "lfc191910@gmail.com",
13
- "url": "https://dompdfjs.lisky.com.cn/"
14
- },
15
- "engines": {
16
- "node": ">=8.0.0"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "git@github.com:lmn1919/dompdf.js.git"
21
- },
22
- "bugs": {
23
- "url": "https://github.com/lmn1919/dompdf.js/issues"
24
- },
25
- "devDependencies": {
26
- "@babel/cli": "^7.4.3",
27
- "@babel/core": "^7.4.3",
28
- "@babel/preset-env": "^7.4.3",
29
- "@babel/preset-flow": "^7.0.0",
30
- "@rollup/plugin-commonjs": "^19.0.0",
31
- "@rollup/plugin-json": "^4.1.0",
32
- "@rollup/plugin-node-resolve": "^13.0.0",
33
- "@rollup/plugin-typescript": "^8.2.1",
34
- "@types/chai": "^4.1.7",
35
- "@types/express": "^4.17.13",
36
- "@types/glob": "^7.1.1",
37
- "@types/jest": "^26.0.24",
38
- "@types/jest-image-snapshot": "^4.3.1",
39
- "@types/karma": "^6.3.0",
40
- "@types/mocha": "^8.2.3",
41
- "@types/node": "^16.3.1",
42
- "@types/platform": "^1.3.4",
43
- "@types/promise-polyfill": "^6.0.3",
44
- "@typescript-eslint/eslint-plugin": "^4.28.2",
45
- "@typescript-eslint/parser": "^4.28.2",
46
- "@webpack-cli/serve": "^2.0.1",
47
- "appium-ios-simulator": "^3.10.0",
48
- "babel-eslint": "^10.0.1",
49
- "babel-loader": "^8.0.5",
50
- "babel-plugin-add-module-exports": "^1.0.2",
51
- "babel-plugin-dev-expression": "^0.2.1",
52
- "base64-arraybuffer": "1.0.1",
53
- "body-parser": "^1.19.0",
54
- "chai": "4.1.1",
55
- "chromeless": "^1.5.2",
56
- "cors": "^2.8.5",
57
- "es6-promise": "^4.2.8",
58
- "eslint": "^7.30.0",
59
- "eslint-config-prettier": "^8.3.0",
60
- "eslint-plugin-prettier": "3.4.0",
61
- "express": "^4.17.1",
62
- "filenamify-url": "1.0.0",
63
- "glob": "7.1.3",
64
- "html2canvas-proxy": "1.0.1",
65
- "jest": "^27.0.6",
66
- "jest-image-snapshot": "^4.5.1",
67
- "jquery": "^3.5.1",
68
- "js-polyfills": "^0.1.42",
69
- "karma": "^6.3.2",
70
- "karma-chrome-launcher": "^3.1.0",
71
- "karma-edge-launcher": "^0.4.2",
72
- "karma-firefox-launcher": "^2.1.0",
73
- "karma-ie-launcher": "^1.0.0",
74
- "karma-junit-reporter": "^2.0.1",
75
- "karma-mocha": "^2.0.1",
76
- "karma-safarinative-launcher": "^1.1.0",
77
- "karma-sauce-launcher": "^2.0.2",
78
- "mkdirp": "^3.0.1",
79
- "mocha": "^9.0.2",
80
- "node-simctl": "^5.3.0",
81
- "platform": "^1.3.6",
82
- "prettier": "^2.3.2",
83
- "replace-in-file": "^3.0.0",
84
- "rimraf": "^3.0.2",
85
- "rollup": "^2.53.1",
86
- "rollup-plugin-livereload": "^2.0.5",
87
- "rollup-plugin-serve": "^2.0.2",
88
- "rollup-plugin-sourcemaps": "^0.6.3",
89
- "serve-index": "^1.9.1",
90
- "slash": "1.0.0",
91
- "standard-version": "^8.0.2",
92
- "ts-jest": "^27.0.3",
93
- "ts-loader": "^8.3.0",
94
- "ts-node": "^10.1.0",
95
- "tslib": "^2.3.0",
96
- "typescript": "^4.3.5",
97
- "uglify-js": "^3.13.10",
98
- "uglifyjs-webpack-plugin": "^2.2.0",
99
- "webpack": "^5.75.0",
100
- "webpack-cli": "^5.0.1",
101
- "webpack-dev-server": "^4.11.1",
102
- "yargs": "^17.0.1"
103
- },
104
- "scripts": {
105
- "prebuild": "rimraf dist/ && rimraf build/ && mkdirp dist && mkdirp build",
106
- "build": "tsc --module commonjs && rollup -c rollup.config.ts && npm run build:create-reftest-list && npm run build:testrunner && npm run build:minify",
107
- "build:testrunner": "rollup -c tests/rollup.config.ts",
108
- "build:minify": "uglifyjs --compress --comments /^!/ -o dist/html2canvas.min.js --mangle -- dist/html2canvas.js",
109
- "build:reftest-result-list": "ts-node scripts/create-reftest-result-list.ts",
110
- "build:create-reftest-list": "ts-node scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.ts",
111
- "build:reftest-preview": "webpack --config www/webpack.config.js",
112
- "release": "standard-version",
113
- "format": "prettier --write \"{src,www/src,tests,scripts}/**/*.ts\"",
114
- "lint": "eslint src/**/*.ts --max-warnings 0",
115
- "test": "npm run lint && npm run unittest && npm run karma",
116
- "unittest": "jest",
117
- "reftests-diff": "mkdirp tmp/snapshots && jest --roots=tests --testMatch=**/reftest-diff.ts",
118
- "karma": "ts-node tests/karma",
119
- "watch": "npx rollup -c rollup.config.ts -w",
120
- "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts",
121
- "start": "ts-node tests/server --port=8080 --cors=8081",
122
- "dev": "webpack serve --config webpack.dev.js --open"
123
- },
124
- "homepage": "https://dompdfjs.lisky.com.cn",
125
- "license": "MIT",
126
- "dependencies": {
127
- "@zumer/snapdom": "^1.8.0",
128
- "css-line-break": "^2.1.0",
129
- "fontkit": "^2.0.4",
130
- "jspdf": "^2.5.2",
131
- "svg2pdf.js": "^2.5.0",
132
- "text-segmentation": "^1.0.3"
133
- }
134
- }
1
+ {
2
+ "title": "dompdf.js",
3
+ "name": "dompdf.js",
4
+ "description": "HTML to PDF",
5
+ "main": "dist/dompdf.js",
6
+ "module": "dist/dompdf.esm.js",
7
+ "typings": "dist/types/index.d.ts",
8
+ "browser": "dist/dompdf.js",
9
+ "version": "1.1.0",
10
+ "author": {
11
+ "name": "lfc",
12
+ "email": "lfc191910@gmail.com",
13
+ "url": "https://dompdfjs.lisky.com.cn/"
14
+ },
15
+ "engines": {
16
+ "node": ">=8.0.0"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git@github.com:lmn1919/dompdf.js.git"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/lmn1919/dompdf.js/issues"
24
+ },
25
+ "devDependencies": {
26
+ "@babel/cli": "^7.4.3",
27
+ "@babel/core": "^7.4.3",
28
+ "@babel/preset-env": "^7.4.3",
29
+ "@babel/preset-flow": "^7.0.0",
30
+ "@rollup/plugin-commonjs": "^19.0.0",
31
+ "@rollup/plugin-json": "^4.1.0",
32
+ "@rollup/plugin-node-resolve": "^13.0.0",
33
+ "@rollup/plugin-typescript": "^8.2.1",
34
+ "@types/chai": "^4.1.7",
35
+ "@types/express": "^4.17.13",
36
+ "@types/glob": "^7.1.1",
37
+ "@types/jest": "^26.0.24",
38
+ "@types/jest-image-snapshot": "^4.3.1",
39
+ "@types/karma": "^6.3.0",
40
+ "@types/mocha": "^8.2.3",
41
+ "@types/node": "^16.3.1",
42
+ "@types/platform": "^1.3.4",
43
+ "@types/promise-polyfill": "^6.0.3",
44
+ "@typescript-eslint/eslint-plugin": "^4.28.2",
45
+ "@typescript-eslint/parser": "^4.28.2",
46
+ "@webpack-cli/serve": "^2.0.1",
47
+ "appium-ios-simulator": "^3.10.0",
48
+ "babel-eslint": "^10.0.1",
49
+ "babel-loader": "^8.0.5",
50
+ "babel-plugin-add-module-exports": "^1.0.2",
51
+ "babel-plugin-dev-expression": "^0.2.1",
52
+ "base64-arraybuffer": "1.0.1",
53
+ "body-parser": "^1.19.0",
54
+ "chai": "4.1.1",
55
+ "chromeless": "^1.5.2",
56
+ "cors": "^2.8.5",
57
+ "es6-promise": "^4.2.8",
58
+ "eslint": "^7.30.0",
59
+ "eslint-config-prettier": "^8.3.0",
60
+ "eslint-plugin-prettier": "3.4.0",
61
+ "express": "^4.17.1",
62
+ "filenamify-url": "1.0.0",
63
+ "glob": "7.1.3",
64
+ "html2canvas-proxy": "1.0.1",
65
+ "jest": "^27.0.6",
66
+ "jest-image-snapshot": "^4.5.1",
67
+ "jquery": "^3.5.1",
68
+ "js-polyfills": "^0.1.42",
69
+ "karma": "^6.3.2",
70
+ "karma-chrome-launcher": "^3.1.0",
71
+ "karma-edge-launcher": "^0.4.2",
72
+ "karma-firefox-launcher": "^2.1.0",
73
+ "karma-ie-launcher": "^1.0.0",
74
+ "karma-junit-reporter": "^2.0.1",
75
+ "karma-mocha": "^2.0.1",
76
+ "karma-safarinative-launcher": "^1.1.0",
77
+ "karma-sauce-launcher": "^2.0.2",
78
+ "mkdirp": "^3.0.1",
79
+ "mocha": "^9.0.2",
80
+ "node-simctl": "^5.3.0",
81
+ "platform": "^1.3.6",
82
+ "prettier": "^2.3.2",
83
+ "replace-in-file": "^3.0.0",
84
+ "rimraf": "^3.0.2",
85
+ "rollup": "^2.53.1",
86
+ "rollup-plugin-livereload": "^2.0.5",
87
+ "rollup-plugin-serve": "^2.0.2",
88
+ "rollup-plugin-sourcemaps": "^0.6.3",
89
+ "serve-index": "^1.9.1",
90
+ "slash": "1.0.0",
91
+ "standard-version": "^8.0.2",
92
+ "ts-jest": "^27.0.3",
93
+ "ts-loader": "^8.3.0",
94
+ "ts-node": "^10.1.0",
95
+ "tslib": "^2.3.0",
96
+ "typescript": "^4.3.5",
97
+ "uglify-js": "^3.13.10",
98
+ "uglifyjs-webpack-plugin": "^2.2.0",
99
+ "webpack": "^5.75.0",
100
+ "webpack-cli": "^5.0.1",
101
+ "webpack-dev-server": "^4.11.1",
102
+ "yargs": "^17.0.1"
103
+ },
104
+ "scripts": {
105
+ "prebuild": "rimraf dist/ && rimraf build/ && mkdirp dist && mkdirp build",
106
+ "build": "tsc --module commonjs && rollup -c rollup.config.ts && npm run build:create-reftest-list && npm run build:testrunner && npm run build:minify",
107
+ "build:testrunner": "rollup -c tests/rollup.config.ts",
108
+ "build:minify": "uglifyjs --compress --comments /^!/ -o dist/html2canvas.min.js --mangle -- dist/html2canvas.js",
109
+ "build:reftest-result-list": "ts-node scripts/create-reftest-result-list.ts",
110
+ "build:create-reftest-list": "ts-node scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.ts",
111
+ "build:reftest-preview": "webpack --config www/webpack.config.js",
112
+ "release": "standard-version",
113
+ "format": "prettier --write \"{src,www/src,tests,scripts}/**/*.ts\"",
114
+ "lint": "eslint src/**/*.ts --max-warnings 0",
115
+ "test": "npm run lint && npm run unittest && npm run karma",
116
+ "unittest": "jest",
117
+ "reftests-diff": "mkdirp tmp/snapshots && jest --roots=tests --testMatch=**/reftest-diff.ts",
118
+ "karma": "ts-node tests/karma",
119
+ "watch": "npx rollup -c rollup.config.ts -w",
120
+ "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts",
121
+ "start": "ts-node tests/server --port=8080 --cors=8081",
122
+ "dev": "webpack serve --config webpack.dev.js --open"
123
+ },
124
+ "homepage": "https://dompdfjs.lisky.com.cn",
125
+ "license": "MIT",
126
+ "dependencies": {
127
+ "@zumer/snapdom": "^1.8.0",
128
+ "css-line-break": "^2.1.0",
129
+ "fontkit": "^2.0.4",
130
+ "jspdf": "^2.5.2",
131
+ "svg2pdf.js": "^2.5.0",
132
+ "text-segmentation": "^1.0.3"
133
+ },
134
+ "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b"
135
+ }