chromiumly 2.7.0 → 2.9.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/README.md +129 -8
- package/dist/chromium/converters/html.converter.d.ts +12 -2
- package/dist/chromium/converters/html.converter.js +5 -3
- package/dist/chromium/converters/html.converter.js.map +1 -1
- package/dist/chromium/converters/markdown.converter.d.ts +12 -2
- package/dist/chromium/converters/markdown.converter.js +5 -3
- package/dist/chromium/converters/markdown.converter.js.map +1 -1
- package/dist/chromium/converters/url.converter.d.ts +12 -2
- package/dist/chromium/converters/url.converter.js +5 -3
- package/dist/chromium/converters/url.converter.js.map +1 -1
- package/dist/chromium/index.d.ts +3 -0
- package/dist/chromium/index.js +7 -1
- package/dist/chromium/index.js.map +1 -1
- package/dist/chromium/interfaces/converter.types.d.ts +2 -1
- package/dist/chromium/interfaces/screenshot.types.d.ts +10 -0
- package/dist/chromium/interfaces/screenshot.types.js +3 -0
- package/dist/chromium/interfaces/screenshot.types.js.map +1 -0
- package/dist/chromium/screenshots/html.screenshot.d.ts +54 -0
- package/dist/chromium/screenshots/html.screenshot.js +67 -0
- package/dist/chromium/screenshots/html.screenshot.js.map +1 -0
- package/dist/chromium/screenshots/markdown.screenshot.d.ts +52 -0
- package/dist/chromium/screenshots/markdown.screenshot.js +66 -0
- package/dist/chromium/screenshots/markdown.screenshot.js.map +1 -0
- package/dist/chromium/screenshots/screenshot.d.ts +18 -0
- package/dist/chromium/screenshots/screenshot.js +21 -0
- package/dist/chromium/screenshots/screenshot.js.map +1 -0
- package/dist/chromium/screenshots/url.screenshot.d.ts +50 -0
- package/dist/chromium/screenshots/url.screenshot.js +66 -0
- package/dist/chromium/screenshots/url.screenshot.js.map +1 -0
- package/dist/chromium/utils/converter.utils.js +3 -0
- package/dist/chromium/utils/converter.utils.js.map +1 -1
- package/dist/chromium/utils/screenshot.utils.d.ts +22 -0
- package/dist/chromium/utils/screenshot.utils.js +75 -0
- package/dist/chromium/utils/screenshot.utils.js.map +1 -0
- package/dist/common/constants.d.ts +4 -0
- package/dist/common/constants.js +4 -0
- package/dist/common/constants.js.map +1 -1
- package/dist/common/index.d.ts +1 -1
- package/dist/common/types.d.ts +3 -0
- package/dist/libre-office/utils/constants.js +2 -1
- package/dist/libre-office/utils/constants.js.map +1 -1
- package/dist/main.config.d.ts +10 -1
- package/dist/main.config.js +10 -1
- package/dist/main.config.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.js +4 -1
- package/dist/main.js.map +1 -1
- package/dist/pdf-engines/pdf.engine.d.ts +23 -1
- package/dist/pdf-engines/pdf.engine.js +34 -4
- package/dist/pdf-engines/pdf.engine.js.map +1 -1
- package/package.json +7 -7
- package/src/chromium/converters/html.converter.ts +20 -3
- package/src/chromium/converters/markdown.converter.ts +20 -3
- package/src/chromium/converters/url.converter.ts +20 -3
- package/src/chromium/index.ts +3 -0
- package/src/chromium/interfaces/converter.types.ts +2 -1
- package/src/chromium/interfaces/screenshot.types.ts +12 -0
- package/src/chromium/screenshots/html.screenshot.ts +100 -0
- package/src/chromium/screenshots/markdown.screenshot.ts +95 -0
- package/src/chromium/screenshots/screenshot.ts +22 -0
- package/src/chromium/screenshots/tests/html.screenshot.test.ts +192 -0
- package/src/chromium/screenshots/tests/markdown.screenshot.test.ts +176 -0
- package/src/chromium/screenshots/tests/url.screenshot.test.ts +166 -0
- package/src/chromium/screenshots/url.screenshot.ts +91 -0
- package/src/chromium/utils/converter.utils.ts +3 -0
- package/src/chromium/utils/screenshot.utils.ts +115 -0
- package/src/chromium/utils/tests/converter.utils.test.ts +33 -2
- package/src/chromium/utils/tests/screenshot.utils.test.ts +284 -0
- package/src/common/constants.ts +4 -0
- package/src/common/index.ts +1 -1
- package/src/common/tests/gotenberg.utils.test.ts +46 -0
- package/src/common/types.ts +4 -0
- package/src/libre-office/utils/constants.ts +2 -1
- package/src/main.config.ts +12 -2
- package/src/main.ts +8 -1
- package/src/pdf-engines/pdf.engine.ts +52 -1
- package/src/pdf-engines/tests/pdf.engine.test.ts +36 -0
|
@@ -20,8 +20,8 @@ class PDFEngine {
|
|
|
20
20
|
* @param {PathLikeOrReadStream[]} options.files - An array of PathLikes or ReadStreams to the PDF files to be merged.
|
|
21
21
|
* @returns {Promise<Buffer>} A Promise resolving to the merged PDF content as a Buffer.
|
|
22
22
|
*/
|
|
23
|
-
static merge(
|
|
24
|
-
return tslib_1.__awaiter(this,
|
|
23
|
+
static merge(_a) {
|
|
24
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ files }) {
|
|
25
25
|
const data = new form_data_1.default();
|
|
26
26
|
yield engine_utils_1.PDFEngineUtils.addFiles(files, data);
|
|
27
27
|
const endpoint = `${main_config_1.Chromiumly.GOTENBERG_ENDPOINT}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.merge}`;
|
|
@@ -39,8 +39,8 @@ class PDFEngine {
|
|
|
39
39
|
* @param {boolean} [options.merge] - Indicates whether to merge the resulting PDFs.
|
|
40
40
|
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
|
|
41
41
|
*/
|
|
42
|
-
static convert(
|
|
43
|
-
return tslib_1.__awaiter(this,
|
|
42
|
+
static convert(_a) {
|
|
43
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ files, properties, pdfFormat, pdfUA, merge }) {
|
|
44
44
|
const data = new form_data_1.default();
|
|
45
45
|
if (pdfFormat) {
|
|
46
46
|
data.append('pdfa', pdfFormat);
|
|
@@ -59,6 +59,36 @@ class PDFEngine {
|
|
|
59
59
|
return common_1.GotenbergUtils.fetch(endpoint, data);
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Reads metadata from the provided files.
|
|
64
|
+
*
|
|
65
|
+
* @param {PathLikeOrReadStream[]} files An array of PathLikes or ReadStreams to the PDF files.
|
|
66
|
+
* @returns {Promise<Buffer>} A Promise resolving to the metadata buffer.
|
|
67
|
+
*/
|
|
68
|
+
static readMetadata(files) {
|
|
69
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const data = new form_data_1.default();
|
|
71
|
+
yield engine_utils_1.PDFEngineUtils.addFiles(files, data);
|
|
72
|
+
const endpoint = `${main_config_1.Chromiumly.GOTENBERG_ENDPOINT}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.readMetadata}`;
|
|
73
|
+
return common_1.GotenbergUtils.fetch(endpoint, data);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Writes metadata to the provided PDF files.
|
|
78
|
+
*
|
|
79
|
+
* @param {PathLikeOrReadStream[]} files - An array of PathLikes or ReadStreams to the PDF files.
|
|
80
|
+
* @param {Metadata} metadata - Metadata to be written.
|
|
81
|
+
* @returns {Promise<Buffer>} A Promise that resolves to the PDF file containing metadata as a buffer.
|
|
82
|
+
*/
|
|
83
|
+
static writeMetadata(_a) {
|
|
84
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ files, metadata }) {
|
|
85
|
+
const data = new form_data_1.default();
|
|
86
|
+
data.append('metadata', JSON.stringify(metadata));
|
|
87
|
+
yield engine_utils_1.PDFEngineUtils.addFiles(files, data);
|
|
88
|
+
const endpoint = `${main_config_1.Chromiumly.GOTENBERG_ENDPOINT}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.writeMetadata}`;
|
|
89
|
+
return common_1.GotenbergUtils.fetch(endpoint, data);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
62
92
|
/**
|
|
63
93
|
* Generates a PDF file from a buffer and saves it to the "__generated__" directory.
|
|
64
94
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.engine.js","sourceRoot":"","sources":["../../src/pdf-engines/pdf.engine.ts"],"names":[],"mappings":";;;;AAAA,2BAA8B;AAC9B,wDAAwB;AAExB,kEAAiC;AAEjC,gDAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"pdf.engine.js","sourceRoot":"","sources":["../../src/pdf-engines/pdf.engine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chromiumly",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"types": "dist/main.d.ts",
|
|
@@ -41,19 +41,19 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@babel/preset-typescript": "7.
|
|
44
|
+
"@babel/preset-typescript": "7.24.1",
|
|
45
45
|
"@commitlint/cli": "^19.0.3",
|
|
46
46
|
"@commitlint/config-conventional": "^19.0.3",
|
|
47
47
|
"@commitlint/cz-commitlint": "^19.0.3",
|
|
48
48
|
"@release-it/conventional-changelog": "8.0.1",
|
|
49
|
-
"@types/config": "3.3.
|
|
49
|
+
"@types/config": "3.3.4",
|
|
50
50
|
"@types/dotenv": "8.2.0",
|
|
51
51
|
"@types/form-data": "2.5.0",
|
|
52
52
|
"@types/jest": "29.5.12",
|
|
53
|
-
"@types/node": "20.11.
|
|
53
|
+
"@types/node": "20.11.30",
|
|
54
54
|
"@types/node-fetch": "2.6.11",
|
|
55
|
-
"@typescript-eslint/eslint-plugin": "7.1
|
|
56
|
-
"@typescript-eslint/parser": "7.1
|
|
55
|
+
"@typescript-eslint/eslint-plugin": "7.3.1",
|
|
56
|
+
"@typescript-eslint/parser": "7.3.1",
|
|
57
57
|
"commitizen": "4.3.0",
|
|
58
58
|
"eslint": "8.57.0",
|
|
59
59
|
"eslint-config-prettier": "^9.1.0",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"ts-jest": "29.1.2",
|
|
68
68
|
"ts-node": "10.9.2",
|
|
69
69
|
"tslib": "2.6.2",
|
|
70
|
-
"typescript": "5.
|
|
70
|
+
"typescript": "5.4.3"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"config": "3.3.11",
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import FormData from 'form-data';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
GotenbergUtils,
|
|
5
|
+
Metadata,
|
|
6
|
+
PathLikeOrReadStream,
|
|
7
|
+
PdfFormat
|
|
8
|
+
} from '../../common';
|
|
4
9
|
import { PageProperties } from '../interfaces/converter.types';
|
|
5
10
|
import { ConverterUtils } from '../utils/converter.utils';
|
|
6
11
|
import { Converter } from './converter';
|
|
@@ -40,6 +45,7 @@ export class HtmlConverter extends Converter {
|
|
|
40
45
|
* @param {number[]} [options.failOnHttpStatusCodes] - Whether to fail on HTTP status code.
|
|
41
46
|
* @param {boolean} [options.failOnConsoleExceptions] - Whether to fail on console exceptions during conversion.
|
|
42
47
|
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
|
|
48
|
+
* @param {Metadata} options.metadata - Metadata to be written.
|
|
43
49
|
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
|
|
44
50
|
*/
|
|
45
51
|
async convert({
|
|
@@ -57,23 +63,33 @@ export class HtmlConverter extends Converter {
|
|
|
57
63
|
extraHttpHeaders,
|
|
58
64
|
failOnHttpStatusCodes,
|
|
59
65
|
failOnConsoleExceptions,
|
|
60
|
-
skipNetworkIdleEvent
|
|
66
|
+
skipNetworkIdleEvent,
|
|
67
|
+
metadata
|
|
61
68
|
}: {
|
|
62
69
|
html: PathLikeOrReadStream;
|
|
63
70
|
assets?: { file: PathLikeOrReadStream; name: string }[];
|
|
64
71
|
header?: PathLikeOrReadStream;
|
|
65
72
|
footer?: PathLikeOrReadStream;
|
|
66
73
|
properties?: PageProperties;
|
|
74
|
+
/**
|
|
75
|
+
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for pdfFormat.
|
|
76
|
+
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
|
|
77
|
+
*/
|
|
67
78
|
pdfFormat?: PdfFormat;
|
|
68
79
|
pdfUA?: boolean;
|
|
69
80
|
emulatedMediaType?: EmulatedMediaType;
|
|
70
81
|
waitDelay?: string;
|
|
71
82
|
waitForExpression?: string;
|
|
83
|
+
/**
|
|
84
|
+
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for userAgent.
|
|
85
|
+
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
|
|
86
|
+
*/
|
|
72
87
|
userAgent?: string;
|
|
73
88
|
extraHttpHeaders?: Record<string, string>;
|
|
74
89
|
failOnHttpStatusCodes?: number[];
|
|
75
90
|
failOnConsoleExceptions?: boolean;
|
|
76
91
|
skipNetworkIdleEvent?: boolean;
|
|
92
|
+
metadata?: Metadata;
|
|
77
93
|
}): Promise<Buffer> {
|
|
78
94
|
const data = new FormData();
|
|
79
95
|
|
|
@@ -100,7 +116,8 @@ export class HtmlConverter extends Converter {
|
|
|
100
116
|
extraHttpHeaders,
|
|
101
117
|
failOnHttpStatusCodes,
|
|
102
118
|
failOnConsoleExceptions,
|
|
103
|
-
skipNetworkIdleEvent
|
|
119
|
+
skipNetworkIdleEvent,
|
|
120
|
+
metadata
|
|
104
121
|
});
|
|
105
122
|
|
|
106
123
|
return GotenbergUtils.fetch(this.endpoint, data);
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import FormData from 'form-data';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
GotenbergUtils,
|
|
5
|
+
PdfFormat,
|
|
6
|
+
PathLikeOrReadStream,
|
|
7
|
+
Metadata
|
|
8
|
+
} from '../../common';
|
|
4
9
|
import { PageProperties } from '../interfaces/converter.types';
|
|
5
10
|
import { ConverterUtils } from '../utils/converter.utils';
|
|
6
11
|
import { Converter } from './converter';
|
|
@@ -41,6 +46,7 @@ export class MarkdownConverter extends Converter {
|
|
|
41
46
|
* @param {number []} [options.failOnHttpStatusCodes] - Whether to fail on HTTP status code.
|
|
42
47
|
* @param {boolean} [options.failOnConsoleExceptions] - Whether to fail on console exceptions during conversion.
|
|
43
48
|
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
|
|
49
|
+
* @param {Metadata} options.metadata - Metadata to be written.
|
|
44
50
|
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
|
|
45
51
|
*/
|
|
46
52
|
async convert({
|
|
@@ -58,23 +64,33 @@ export class MarkdownConverter extends Converter {
|
|
|
58
64
|
extraHttpHeaders,
|
|
59
65
|
failOnHttpStatusCodes,
|
|
60
66
|
failOnConsoleExceptions,
|
|
61
|
-
skipNetworkIdleEvent
|
|
67
|
+
skipNetworkIdleEvent,
|
|
68
|
+
metadata
|
|
62
69
|
}: {
|
|
63
70
|
html: PathLikeOrReadStream;
|
|
64
71
|
markdown: PathLikeOrReadStream;
|
|
65
72
|
header?: PathLikeOrReadStream;
|
|
66
73
|
footer?: PathLikeOrReadStream;
|
|
67
74
|
properties?: PageProperties;
|
|
75
|
+
/**
|
|
76
|
+
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for pdfFormat.
|
|
77
|
+
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
|
|
78
|
+
*/
|
|
68
79
|
pdfFormat?: PdfFormat;
|
|
69
80
|
pdfUA?: boolean;
|
|
70
81
|
emulatedMediaType?: EmulatedMediaType;
|
|
71
82
|
waitDelay?: string;
|
|
72
83
|
waitForExpression?: string;
|
|
84
|
+
/**
|
|
85
|
+
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for userAgent.
|
|
86
|
+
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
|
|
87
|
+
*/
|
|
73
88
|
userAgent?: string;
|
|
74
89
|
extraHttpHeaders?: Record<string, string>;
|
|
75
90
|
failOnHttpStatusCodes?: number[];
|
|
76
91
|
failOnConsoleExceptions?: boolean;
|
|
77
92
|
skipNetworkIdleEvent?: boolean;
|
|
93
|
+
metadata?: Metadata;
|
|
78
94
|
}): Promise<Buffer> {
|
|
79
95
|
const data = new FormData();
|
|
80
96
|
|
|
@@ -95,7 +111,8 @@ export class MarkdownConverter extends Converter {
|
|
|
95
111
|
extraHttpHeaders,
|
|
96
112
|
failOnHttpStatusCodes,
|
|
97
113
|
failOnConsoleExceptions,
|
|
98
|
-
skipNetworkIdleEvent
|
|
114
|
+
skipNetworkIdleEvent,
|
|
115
|
+
metadata
|
|
99
116
|
});
|
|
100
117
|
|
|
101
118
|
return GotenbergUtils.fetch(this.endpoint, data);
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { URL } from 'url';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
GotenbergUtils,
|
|
5
|
+
PdfFormat,
|
|
6
|
+
PathLikeOrReadStream,
|
|
7
|
+
Metadata
|
|
8
|
+
} from '../../common';
|
|
4
9
|
import { PageProperties } from '../interfaces/converter.types';
|
|
5
10
|
import { ConverterUtils } from '../utils/converter.utils';
|
|
6
11
|
import { Converter } from './converter';
|
|
@@ -40,6 +45,7 @@ export class UrlConverter extends Converter {
|
|
|
40
45
|
* @param {number[]} [options.failOnHttpStatusCodes] - Whether to fail on HTTP status code.
|
|
41
46
|
* @param {boolean} [options.failOnConsoleExceptions] - Whether to fail on console exceptions during conversion.
|
|
42
47
|
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
|
|
48
|
+
* @param {Metadata} options.metadata - Metadata to be written.
|
|
43
49
|
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
|
|
44
50
|
*/
|
|
45
51
|
async convert({
|
|
@@ -56,22 +62,32 @@ export class UrlConverter extends Converter {
|
|
|
56
62
|
extraHttpHeaders,
|
|
57
63
|
failOnHttpStatusCodes,
|
|
58
64
|
failOnConsoleExceptions,
|
|
59
|
-
skipNetworkIdleEvent
|
|
65
|
+
skipNetworkIdleEvent,
|
|
66
|
+
metadata
|
|
60
67
|
}: {
|
|
61
68
|
url: string;
|
|
62
69
|
header?: PathLikeOrReadStream;
|
|
63
70
|
footer?: PathLikeOrReadStream;
|
|
64
71
|
properties?: PageProperties;
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for pdfFormat.
|
|
74
|
+
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
|
|
75
|
+
*/
|
|
65
76
|
pdfFormat?: PdfFormat;
|
|
66
77
|
pdfUA?: boolean;
|
|
67
78
|
emulatedMediaType?: EmulatedMediaType;
|
|
68
79
|
waitDelay?: string;
|
|
69
80
|
waitForExpression?: string;
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for userAgent.
|
|
83
|
+
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
|
|
84
|
+
*/
|
|
70
85
|
userAgent?: string;
|
|
71
86
|
extraHttpHeaders?: Record<string, string>;
|
|
72
87
|
failOnHttpStatusCodes?: number[];
|
|
73
88
|
failOnConsoleExceptions?: boolean;
|
|
74
89
|
skipNetworkIdleEvent?: boolean;
|
|
90
|
+
metadata?: Metadata;
|
|
75
91
|
}): Promise<Buffer> {
|
|
76
92
|
const _url = new URL(url);
|
|
77
93
|
const data = new FormData();
|
|
@@ -91,7 +107,8 @@ export class UrlConverter extends Converter {
|
|
|
91
107
|
extraHttpHeaders,
|
|
92
108
|
failOnHttpStatusCodes,
|
|
93
109
|
failOnConsoleExceptions,
|
|
94
|
-
skipNetworkIdleEvent
|
|
110
|
+
skipNetworkIdleEvent,
|
|
111
|
+
metadata
|
|
95
112
|
});
|
|
96
113
|
|
|
97
114
|
return GotenbergUtils.fetch(this.endpoint, data);
|
package/src/chromium/index.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { UrlScreenshot } from './screenshots/url.screenshot';
|
|
2
|
+
export { MarkdownScreenshot } from './screenshots/markdown.screenshot';
|
|
3
|
+
export { HtmlScreenshot } from './screenshots/html.screenshot';
|
|
1
4
|
export { HtmlConverter } from './converters/html.converter';
|
|
2
5
|
export { MarkdownConverter } from './converters/markdown.converter';
|
|
3
6
|
export { UrlConverter } from './converters/url.converter';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PdfFormat } from '../../common';
|
|
1
|
+
import { Metadata, PdfFormat } from '../../common';
|
|
2
2
|
import { ChromiumOptions } from './common.types';
|
|
3
3
|
|
|
4
4
|
type PageSize = {
|
|
@@ -30,4 +30,5 @@ export type ConversionOptions = ChromiumOptions & {
|
|
|
30
30
|
pdfFormat?: PdfFormat;
|
|
31
31
|
pdfUA?: boolean; // Enable PDF for Universal Access for optimal accessibility (default false)
|
|
32
32
|
userAgent?: string;
|
|
33
|
+
metadata?: Metadata;
|
|
33
34
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ChromiumOptions } from './common.types';
|
|
2
|
+
|
|
3
|
+
export type ImageProperties = {
|
|
4
|
+
format: 'png' | 'jpeg' | 'webp'; //The image compression format, either "png", "jpeg" or "webp".
|
|
5
|
+
quality?: number; // The compression quality from range 0 to 100 (jpeg only).
|
|
6
|
+
omitBackground?: boolean; // Hide the default white background and allow generating screenshots with transparency.
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export type ScreenshotOptions = ChromiumOptions & {
|
|
10
|
+
properties?: ImageProperties;
|
|
11
|
+
optimizeForSpeed?: boolean; // Define whether to optimize image encoding for speed, not for resulting size.
|
|
12
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import FormData from 'form-data';
|
|
2
|
+
|
|
3
|
+
import { GotenbergUtils, PathLikeOrReadStream } from '../../common';
|
|
4
|
+
import { ChromiumRoute } from '../../main.config';
|
|
5
|
+
import { EmulatedMediaType } from '../interfaces/common.types';
|
|
6
|
+
import { ScreenshotUtils } from '../utils/screenshot.utils';
|
|
7
|
+
import { Screenshot } from './screenshot';
|
|
8
|
+
import { ImageProperties } from '../interfaces/screenshot.types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Class representing an HTML Screenshot that extends the base Screenshot class.
|
|
12
|
+
* This class is used to screenshot HTML content using Gotenberg service.
|
|
13
|
+
*
|
|
14
|
+
* @extends Screenshot
|
|
15
|
+
*/
|
|
16
|
+
export class HtmlScreenshot extends Screenshot {
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of HtmlScreenshot.
|
|
19
|
+
* Initializes the Screenshot with the HTML screenshot route.
|
|
20
|
+
*/
|
|
21
|
+
constructor() {
|
|
22
|
+
super(ChromiumRoute.HTML);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Screenshots HTML content.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object} options - Screenshot options.
|
|
29
|
+
* @param {PathLikeOrReadStream} options.html - PathLike or ReadStream of the HTML content to be screenshoted.
|
|
30
|
+
* @param {PathLikeOrReadStream} [options.header] - PathLike or ReadStream of the header HTML content.
|
|
31
|
+
* @param {PathLikeOrReadStream} [options.footer] - PathLike or ReadStream of the footer HTML content.
|
|
32
|
+
* @param {ImageProperties} [options.properties] - Image properties for the screenshot.
|
|
33
|
+
* @param {EmulatedMediaType} [options.emulatedMediaType] - Emulated media type for the screenshot.
|
|
34
|
+
* @param {string} [options.waitDelay] - Delay before the screenshot process starts.
|
|
35
|
+
* @param {string} [options.waitForExpression] - JavaScript expression to wait for before completing the screenshot.
|
|
36
|
+
* @param {Record<string, string>} [options.extraHttpHeaders] - Additional HTTP headers for the screenshot.
|
|
37
|
+
* @param {number []} [options.failOnHttpStatusCodes] - Whether to fail on HTTP status code.
|
|
38
|
+
* @param {boolean} [options.failOnConsoleExceptions] - Whether to fail on console exceptions during screenshot.
|
|
39
|
+
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
|
|
40
|
+
* @param {boolean} [options.optimizeForSpeed] - Whether to optimize for speed.
|
|
41
|
+
* @returns {Promise<Buffer>} A Promise resolving to the image buffer.
|
|
42
|
+
*/
|
|
43
|
+
async capture({
|
|
44
|
+
html,
|
|
45
|
+
assets,
|
|
46
|
+
header,
|
|
47
|
+
footer,
|
|
48
|
+
properties,
|
|
49
|
+
emulatedMediaType,
|
|
50
|
+
waitDelay,
|
|
51
|
+
waitForExpression,
|
|
52
|
+
extraHttpHeaders,
|
|
53
|
+
failOnConsoleExceptions,
|
|
54
|
+
failOnHttpStatusCodes,
|
|
55
|
+
skipNetworkIdleEvent,
|
|
56
|
+
optimizeForSpeed
|
|
57
|
+
}: {
|
|
58
|
+
html: PathLikeOrReadStream;
|
|
59
|
+
assets?: { file: PathLikeOrReadStream; name: string }[];
|
|
60
|
+
header?: PathLikeOrReadStream;
|
|
61
|
+
footer?: PathLikeOrReadStream;
|
|
62
|
+
properties?: ImageProperties;
|
|
63
|
+
emulatedMediaType?: EmulatedMediaType;
|
|
64
|
+
waitDelay?: string;
|
|
65
|
+
waitForExpression?: string;
|
|
66
|
+
extraHttpHeaders?: Record<string, string>;
|
|
67
|
+
failOnConsoleExceptions?: boolean;
|
|
68
|
+
failOnHttpStatusCodes?: number[];
|
|
69
|
+
skipNetworkIdleEvent?: boolean;
|
|
70
|
+
optimizeForSpeed?: boolean;
|
|
71
|
+
}): Promise<Buffer> {
|
|
72
|
+
const data = new FormData();
|
|
73
|
+
|
|
74
|
+
await GotenbergUtils.addFile(data, html, 'index.html');
|
|
75
|
+
|
|
76
|
+
if (assets?.length) {
|
|
77
|
+
await Promise.all(
|
|
78
|
+
assets.map(({ file, name }) =>
|
|
79
|
+
GotenbergUtils.addFile(data, file, name)
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
await ScreenshotUtils.customize(data, {
|
|
85
|
+
header,
|
|
86
|
+
footer,
|
|
87
|
+
properties,
|
|
88
|
+
emulatedMediaType,
|
|
89
|
+
waitDelay,
|
|
90
|
+
waitForExpression,
|
|
91
|
+
extraHttpHeaders,
|
|
92
|
+
failOnHttpStatusCodes,
|
|
93
|
+
failOnConsoleExceptions,
|
|
94
|
+
skipNetworkIdleEvent,
|
|
95
|
+
optimizeForSpeed
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
return GotenbergUtils.fetch(this.endpoint, data);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import FormData from 'form-data';
|
|
2
|
+
|
|
3
|
+
import { GotenbergUtils, PathLikeOrReadStream } from '../../common';
|
|
4
|
+
import { ImageProperties } from '../interfaces/screenshot.types';
|
|
5
|
+
import { ScreenshotUtils } from '../utils/screenshot.utils';
|
|
6
|
+
import { Screenshot } from './screenshot';
|
|
7
|
+
import { ChromiumRoute } from '../../main.config';
|
|
8
|
+
import { EmulatedMediaType } from '../interfaces/common.types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Class representing a Markdown screenshot that extends the base Screenshot class.
|
|
12
|
+
* This class is used to screenshots HTML with markdown content using Gotenberg service.
|
|
13
|
+
*
|
|
14
|
+
* @extends Screenshot
|
|
15
|
+
*/
|
|
16
|
+
export class MarkdownScreenshot extends Screenshot {
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of MarkdownScreenshot.
|
|
19
|
+
* Initializes the Screenshot with the Markdown screenshot route.
|
|
20
|
+
*/
|
|
21
|
+
constructor() {
|
|
22
|
+
super(ChromiumRoute.MARKDOWN);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Screenshots HTML with markdown.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object} options - Screenshot options.
|
|
29
|
+
* @param {PathLikeOrReadStream} options.html - PathLike or ReadStream of the HTML content to be screenshoted.
|
|
30
|
+
* @param {PathLikeOrReadStream} options.markdown - PathLike or ReadStream of the Markdown content to be screenshoted.
|
|
31
|
+
* @param {PathLikeOrReadStream} [options.header] - PathLike or ReadStream of the header HTML content.
|
|
32
|
+
* @param {PathLikeOrReadStream} [options.footer] - PathLike or ReadStream of the footer HTML content.
|
|
33
|
+
* @param {ImageProperties} [options.properties] - Image properties for the screenshot.
|
|
34
|
+
* @param {EmulatedMediaType} [options.emulatedMediaType] - Emulated media type for the screenshot.
|
|
35
|
+
* @param {string} [options.waitDelay] - Delay before the screenshot process starts.
|
|
36
|
+
* @param {string} [options.waitForExpression] - JavaScript expression to wait for before completing the screenshot.
|
|
37
|
+
* @param {Record<string, string>} [options.extraHttpHeaders] - Additional HTTP headers for the screenshot.
|
|
38
|
+
* @param {number []} [options.failOnHttpStatusCodes] - Whether to fail on HTTP status code.
|
|
39
|
+
* @param {boolean} [options.failOnConsoleExceptions] - Whether to fail on console exceptions during screenshot.
|
|
40
|
+
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
|
|
41
|
+
* @param {boolean} [options.optimizeForSpeed] - Whether to optimize for speed.
|
|
42
|
+
* @returns {Promise<Buffer>} A Promise resolving to the image buffer.
|
|
43
|
+
*/
|
|
44
|
+
async capture({
|
|
45
|
+
html,
|
|
46
|
+
markdown,
|
|
47
|
+
header,
|
|
48
|
+
footer,
|
|
49
|
+
properties,
|
|
50
|
+
emulatedMediaType,
|
|
51
|
+
waitDelay,
|
|
52
|
+
waitForExpression,
|
|
53
|
+
extraHttpHeaders,
|
|
54
|
+
failOnHttpStatusCodes,
|
|
55
|
+
failOnConsoleExceptions,
|
|
56
|
+
skipNetworkIdleEvent,
|
|
57
|
+
optimizeForSpeed
|
|
58
|
+
}: {
|
|
59
|
+
html: PathLikeOrReadStream;
|
|
60
|
+
markdown: PathLikeOrReadStream;
|
|
61
|
+
header?: PathLikeOrReadStream;
|
|
62
|
+
footer?: PathLikeOrReadStream;
|
|
63
|
+
properties?: ImageProperties;
|
|
64
|
+
emulatedMediaType?: EmulatedMediaType;
|
|
65
|
+
waitDelay?: string;
|
|
66
|
+
waitForExpression?: string;
|
|
67
|
+
extraHttpHeaders?: Record<string, string>;
|
|
68
|
+
failOnHttpStatusCodes?: number[];
|
|
69
|
+
failOnConsoleExceptions?: boolean;
|
|
70
|
+
skipNetworkIdleEvent?: boolean;
|
|
71
|
+
optimizeForSpeed?: boolean;
|
|
72
|
+
}): Promise<Buffer> {
|
|
73
|
+
const data = new FormData();
|
|
74
|
+
|
|
75
|
+
await GotenbergUtils.addFile(data, html, 'index.html');
|
|
76
|
+
|
|
77
|
+
await GotenbergUtils.addFile(data, markdown, 'file.md');
|
|
78
|
+
|
|
79
|
+
await ScreenshotUtils.customize(data, {
|
|
80
|
+
header,
|
|
81
|
+
footer,
|
|
82
|
+
properties,
|
|
83
|
+
emulatedMediaType,
|
|
84
|
+
waitDelay,
|
|
85
|
+
waitForExpression,
|
|
86
|
+
extraHttpHeaders,
|
|
87
|
+
failOnHttpStatusCodes,
|
|
88
|
+
failOnConsoleExceptions,
|
|
89
|
+
skipNetworkIdleEvent,
|
|
90
|
+
optimizeForSpeed
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return GotenbergUtils.fetch(this.endpoint, data);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Chromiumly, ChromiumRoute } from '../../main.config';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Abstract class representing a generic screenshot.
|
|
5
|
+
* Concrete screenshot classes should extend this class and implement specific screenshot logic.
|
|
6
|
+
*/
|
|
7
|
+
export abstract class Screenshot {
|
|
8
|
+
/**
|
|
9
|
+
* The endpoint URL for the screenshot.
|
|
10
|
+
*/
|
|
11
|
+
readonly endpoint: string;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Creates an instance of the screenshot class.
|
|
15
|
+
* Initializes the endpoint URL based on the provided ChromiumRoute.
|
|
16
|
+
*
|
|
17
|
+
* @param {ChromiumRoute} route - The ChromiumRoute enum value representing the screenshot route.
|
|
18
|
+
*/
|
|
19
|
+
constructor(route: ChromiumRoute) {
|
|
20
|
+
this.endpoint = `${Chromiumly.GOTENBERG_ENDPOINT}/${Chromiumly.CHROMIUM_SCREENSHOT_PATH}/${Chromiumly.CHROMIUM_ROUTES[route]}`;
|
|
21
|
+
}
|
|
22
|
+
}
|