@pdfme/generator 3.1.1 → 3.1.2-dev.1
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/.eslintrc.cjs +3 -0
- package/dist/cjs/__tests__/integration1.test.js +1 -1
- package/dist/cjs/__tests__/integration2.test.js +1 -1
- package/dist/cjs/__tests__/integration3.test.js +1 -1
- package/dist/cjs/src/constants.js +1 -1
- package/dist/cjs/src/constants.js.map +1 -1
- package/dist/cjs/src/generate.js +9 -24
- package/dist/cjs/src/generate.js.map +1 -1
- package/dist/cjs/src/helper.js +100 -0
- package/dist/cjs/src/helper.js.map +1 -0
- package/dist/esm/__tests__/integration1.test.js +1 -1
- package/dist/esm/__tests__/integration2.test.js +1 -1
- package/dist/esm/__tests__/integration3.test.js +1 -1
- package/dist/esm/src/constants.js +1 -1
- package/dist/esm/src/constants.js.map +1 -1
- package/dist/esm/src/generate.js +8 -23
- package/dist/esm/src/generate.js.map +1 -1
- package/dist/esm/src/helper.js +70 -0
- package/dist/esm/src/helper.js.map +1 -0
- package/dist/types/src/constants.d.ts +1 -1
- package/dist/types/src/helper.d.ts +31 -0
- package/package.json +4 -10
- package/src/constants.ts +1 -1
- package/src/generate.ts +10 -32
- package/src/helper.ts +115 -0
- package/tsconfig.json +3 -3
- package/.eslintrc.js +0 -31
- package/dist/cjs/src/pdfUtils.js +0 -36
- package/dist/cjs/src/pdfUtils.js.map +0 -1
- package/dist/esm/src/pdfUtils.js +0 -31
- package/dist/esm/src/pdfUtils.js.map +0 -1
- package/dist/types/src/pdfUtils.d.ts +0 -15
- package/src/pdfUtils.ts +0 -48
- /package/{teardown.js → teardown.mjs} +0 -0
package/.eslintrc.cjs
ADDED
@@ -9,7 +9,7 @@ const templates_1 = require("./assets/templates");
|
|
9
9
|
const schemas_1 = require("@pdfme/schemas");
|
10
10
|
const utils_1 = require("./utils");
|
11
11
|
describe('generate integration test(label, envelope)', () => {
|
12
|
-
describe.each([templates_1.label, templates_1.envelope])('%
|
12
|
+
describe.each([templates_1.label, templates_1.envelope])('%s', (templateData) => {
|
13
13
|
const entries = Object.entries(templateData);
|
14
14
|
for (let l = 0; l < entries.length; l += 1) {
|
15
15
|
const [key, template] = entries[l];
|
@@ -9,7 +9,7 @@ const templates_1 = require("./assets/templates");
|
|
9
9
|
const schemas_1 = require("@pdfme/schemas");
|
10
10
|
const utils_1 = require("./utils");
|
11
11
|
describe('generate integration test(barcode, business)', () => {
|
12
|
-
describe.each([templates_1.barcode, templates_1.business])('%
|
12
|
+
describe.each([templates_1.barcode, templates_1.business])('%s', (templateData) => {
|
13
13
|
const entries = Object.entries(templateData);
|
14
14
|
for (let l = 0; l < entries.length; l += 1) {
|
15
15
|
const [key, template] = entries[l];
|
@@ -9,7 +9,7 @@ const templates_1 = require("./assets/templates");
|
|
9
9
|
const schemas_1 = require("@pdfme/schemas");
|
10
10
|
const utils_1 = require("./utils");
|
11
11
|
describe('generate integration test(textType, other)', () => {
|
12
|
-
describe.each([templates_1.textType, templates_1.other])('%
|
12
|
+
describe.each([templates_1.textType, templates_1.other])('%s', (templateData) => {
|
13
13
|
const entries = Object.entries(templateData);
|
14
14
|
for (let l = 0; l < entries.length; l += 1) {
|
15
15
|
const [key, template] = entries[l];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,4BAAqC,CAAC"}
|
package/dist/cjs/src/generate.js
CHANGED
@@ -24,29 +24,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
26
|
const pdfLib = __importStar(require("@pdfme/pdf-lib"));
|
27
|
-
const fontkit = __importStar(require("fontkit"));
|
28
27
|
const common_1 = require("@pdfme/common");
|
29
|
-
const
|
30
|
-
const pdfUtils_js_1 = require("./pdfUtils.js");
|
31
|
-
const constants_js_1 = require("./constants.js");
|
32
|
-
const preprocessing = async ({ template }) => {
|
33
|
-
const { basePdf } = template;
|
34
|
-
const pdfDoc = await pdfLib.PDFDocument.create();
|
35
|
-
// @ts-ignore
|
36
|
-
pdfDoc.registerFontkit(fontkit);
|
37
|
-
const pagesAndBoxes = await (0, pdfUtils_js_1.getEmbeddedPagesAndEmbedPdfBoxes)({ pdfDoc, basePdf });
|
38
|
-
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
39
|
-
return { pdfDoc, embeddedPages, embedPdfBoxes };
|
40
|
-
};
|
41
|
-
const postProcessing = ({ pdfDoc }) => {
|
42
|
-
pdfDoc.setProducer(constants_js_1.TOOL_NAME);
|
43
|
-
pdfDoc.setCreator(constants_js_1.TOOL_NAME);
|
44
|
-
};
|
28
|
+
const helper_js_1 = require("./helper.js");
|
45
29
|
const generate = async (props) => {
|
46
30
|
(0, common_1.checkGenerateProps)(props);
|
47
31
|
const { inputs, template, options = {}, plugins: userPlugins = {} } = props;
|
48
|
-
const { pdfDoc, embeddedPages, embedPdfBoxes } = await preprocessing({
|
49
|
-
|
32
|
+
const { pdfDoc, embeddedPages, embedPdfBoxes, renderObj } = await (0, helper_js_1.preprocessing)({
|
33
|
+
template,
|
34
|
+
userPlugins,
|
35
|
+
});
|
50
36
|
const _cache = new Map();
|
51
37
|
for (let i = 0; i < inputs.length; i += 1) {
|
52
38
|
const inputObj = inputs[i];
|
@@ -56,7 +42,7 @@ const generate = async (props) => {
|
|
56
42
|
const { width: pageWidth, height: pageHeight } = embeddedPage;
|
57
43
|
const embedPdfBox = embedPdfBoxes[j];
|
58
44
|
const page = pdfDoc.addPage([pageWidth, pageHeight]);
|
59
|
-
(0,
|
45
|
+
(0, helper_js_1.drawEmbeddedPage)({ page, embeddedPage, embedPdfBox });
|
60
46
|
for (let l = 0; l < keys.length; l += 1) {
|
61
47
|
const key = keys[l];
|
62
48
|
const schemaObj = template.schemas[j];
|
@@ -65,16 +51,15 @@ const generate = async (props) => {
|
|
65
51
|
if (!schema || !value) {
|
66
52
|
continue;
|
67
53
|
}
|
68
|
-
const render =
|
54
|
+
const render = renderObj[schema.type];
|
69
55
|
if (!render) {
|
70
|
-
|
71
|
-
Check this document: https://pdfme.com/docs/custom-schemas`);
|
56
|
+
continue;
|
72
57
|
}
|
73
58
|
await render({ value, schema, pdfLib, pdfDoc, page, options, _cache });
|
74
59
|
}
|
75
60
|
}
|
76
61
|
}
|
77
|
-
postProcessing({ pdfDoc });
|
62
|
+
(0, helper_js_1.postProcessing)({ pdfDoc, options });
|
78
63
|
return pdfDoc.save();
|
79
64
|
};
|
80
65
|
exports.default = generate;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;AAEzC,0CAAmD;AACnD,2CAA8E;AAE9E,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAoB,EAAE,EAAE;IAC9C,IAAA,2BAAkB,EAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IAE5E,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,yBAAa,EAAC;QAC9E,QAAQ;QACR,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAChD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;YAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAErD,IAAA,4BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAE5B,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;oBACrB,SAAS;iBACV;gBAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,EAAE;oBACX,SAAS;iBACV;gBAED,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;aACxE;SACF;KACF;IAED,IAAA,0BAAc,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.postProcessing = exports.preprocessing = exports.drawEmbeddedPage = exports.getEmbeddedPagesAndEmbedPdfBoxes = void 0;
|
27
|
+
const fontkit = __importStar(require("fontkit"));
|
28
|
+
const pdfLib = __importStar(require("@pdfme/pdf-lib"));
|
29
|
+
const schemas_1 = require("@pdfme/schemas");
|
30
|
+
const pdf_lib_1 = require("@pdfme/pdf-lib");
|
31
|
+
const common_1 = require("@pdfme/common");
|
32
|
+
const constants_js_1 = require("./constants.js");
|
33
|
+
const getEmbeddedPagesAndEmbedPdfBoxes = async (arg) => {
|
34
|
+
const { pdfDoc, basePdf } = arg;
|
35
|
+
let embeddedPages = [];
|
36
|
+
let embedPdfBoxes = [];
|
37
|
+
const willLoadPdf = typeof basePdf === 'string' ? await (0, common_1.getB64BasePdf)(basePdf) : basePdf;
|
38
|
+
const embedPdf = await pdf_lib_1.PDFDocument.load(willLoadPdf);
|
39
|
+
const embedPdfPages = embedPdf.getPages();
|
40
|
+
embedPdfBoxes = embedPdfPages.map((p) => ({
|
41
|
+
mediaBox: p.getMediaBox(),
|
42
|
+
bleedBox: p.getBleedBox(),
|
43
|
+
trimBox: p.getTrimBox(),
|
44
|
+
}));
|
45
|
+
const boundingBoxes = embedPdfPages.map((p) => {
|
46
|
+
const { x, y, width, height } = p.getMediaBox();
|
47
|
+
return { left: x, bottom: y, right: width, top: height + y };
|
48
|
+
});
|
49
|
+
const transformationMatrices = embedPdfPages.map(() => [1, 0, 0, 1, 0, 0]);
|
50
|
+
embeddedPages = await pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
51
|
+
return { embeddedPages, embedPdfBoxes };
|
52
|
+
};
|
53
|
+
exports.getEmbeddedPagesAndEmbedPdfBoxes = getEmbeddedPagesAndEmbedPdfBoxes;
|
54
|
+
const drawEmbeddedPage = (arg) => {
|
55
|
+
const { page, embeddedPage, embedPdfBox } = arg;
|
56
|
+
page.drawPage(embeddedPage);
|
57
|
+
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
58
|
+
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
59
|
+
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
60
|
+
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
61
|
+
};
|
62
|
+
exports.drawEmbeddedPage = drawEmbeddedPage;
|
63
|
+
const preprocessing = async (arg) => {
|
64
|
+
const { template, userPlugins } = arg;
|
65
|
+
const { basePdf } = template;
|
66
|
+
const pdfDoc = await pdfLib.PDFDocument.create();
|
67
|
+
// @ts-ignore
|
68
|
+
pdfDoc.registerFontkit(fontkit);
|
69
|
+
const pagesAndBoxes = await (0, exports.getEmbeddedPagesAndEmbedPdfBoxes)({ pdfDoc, basePdf });
|
70
|
+
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
71
|
+
const pluginValues = (Object.values(userPlugins).length > 0
|
72
|
+
? Object.values(userPlugins)
|
73
|
+
: Object.values(schemas_1.builtInPlugins));
|
74
|
+
const schemaTypes = template.schemas.flatMap((schemaObj) => Object.values(schemaObj).map((schema) => schema.type));
|
75
|
+
const renderObj = schemaTypes.reduce((acc, type) => {
|
76
|
+
const render = pluginValues.find((pv) => pv.propPanel.defaultSchema.type === type);
|
77
|
+
if (!render) {
|
78
|
+
throw new Error(`[@pdfme/generator] Renderer for type ${type} not found.
|
79
|
+
Check this document: https://pdfme.com/docs/custom-schemas`);
|
80
|
+
}
|
81
|
+
return { ...acc, [type]: render.pdf };
|
82
|
+
}, {});
|
83
|
+
return { pdfDoc, embeddedPages, embedPdfBoxes, renderObj };
|
84
|
+
};
|
85
|
+
exports.preprocessing = preprocessing;
|
86
|
+
const postProcessing = (props) => {
|
87
|
+
const { pdfDoc, options } = props;
|
88
|
+
const { author = constants_js_1.TOOL_NAME, creationDate = new Date(), creator = constants_js_1.TOOL_NAME, keywords = [], language = 'en-US', modificationDate = new Date(), producer = constants_js_1.TOOL_NAME, subject = '', title = '', } = options;
|
89
|
+
pdfDoc.setAuthor(author);
|
90
|
+
pdfDoc.setCreationDate(creationDate);
|
91
|
+
pdfDoc.setCreator(creator);
|
92
|
+
pdfDoc.setKeywords(keywords);
|
93
|
+
pdfDoc.setLanguage(language);
|
94
|
+
pdfDoc.setModificationDate(modificationDate);
|
95
|
+
pdfDoc.setProducer(producer);
|
96
|
+
pdfDoc.setSubject(subject);
|
97
|
+
pdfDoc.setTitle(title);
|
98
|
+
};
|
99
|
+
exports.postProcessing = postProcessing;
|
100
|
+
//# sourceMappingURL=helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/helper.ts"],"names":[],"mappings":"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"}
|
@@ -4,7 +4,7 @@ import { label, envelope } from './assets/templates';
|
|
4
4
|
import { text, image } from '@pdfme/schemas';
|
5
5
|
import { getFont, getPdf, getPdfTmpPath, getPdfAssertPath } from './utils';
|
6
6
|
describe('generate integration test(label, envelope)', () => {
|
7
|
-
describe.each([label, envelope])('%
|
7
|
+
describe.each([label, envelope])('%s', (templateData) => {
|
8
8
|
const entries = Object.entries(templateData);
|
9
9
|
for (let l = 0; l < entries.length; l += 1) {
|
10
10
|
const [key, template] = entries[l];
|
@@ -4,7 +4,7 @@ import { barcode, business } from './assets/templates';
|
|
4
4
|
import { text, image, barcodes } from '@pdfme/schemas';
|
5
5
|
import { getFont, getPdf, getPdfTmpPath, getPdfAssertPath } from './utils';
|
6
6
|
describe('generate integration test(barcode, business)', () => {
|
7
|
-
describe.each([barcode, business])('%
|
7
|
+
describe.each([barcode, business])('%s', (templateData) => {
|
8
8
|
const entries = Object.entries(templateData);
|
9
9
|
for (let l = 0; l < entries.length; l += 1) {
|
10
10
|
const [key, template] = entries[l];
|
@@ -4,7 +4,7 @@ import { textType, other } from './assets/templates';
|
|
4
4
|
import { text, image } from '@pdfme/schemas';
|
5
5
|
import { getFont, getPdf, getPdfTmpPath, getPdfAssertPath } from './utils';
|
6
6
|
describe('generate integration test(textType, other)', () => {
|
7
|
-
describe.each([textType, other])('%
|
7
|
+
describe.each([textType, other])('%s', (templateData) => {
|
8
8
|
const entries = Object.entries(templateData);
|
9
9
|
for (let l = 0; l < entries.length; l += 1) {
|
10
10
|
const [key, template] = entries[l];
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const TOOL_NAME = 'pdfme (https://
|
1
|
+
export const TOOL_NAME = 'pdfme (https://pdfme.com/)';
|
2
2
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,4BAAqC,CAAC"}
|
package/dist/esm/src/generate.js
CHANGED
@@ -1,27 +1,13 @@
|
|
1
1
|
import * as pdfLib from '@pdfme/pdf-lib';
|
2
|
-
import * as fontkit from 'fontkit';
|
3
2
|
import { checkGenerateProps } from '@pdfme/common';
|
4
|
-
import {
|
5
|
-
import { drawEmbeddedPage, getEmbeddedPagesAndEmbedPdfBoxes } from './pdfUtils.js';
|
6
|
-
import { TOOL_NAME } from './constants.js';
|
7
|
-
const preprocessing = async ({ template }) => {
|
8
|
-
const { basePdf } = template;
|
9
|
-
const pdfDoc = await pdfLib.PDFDocument.create();
|
10
|
-
// @ts-ignore
|
11
|
-
pdfDoc.registerFontkit(fontkit);
|
12
|
-
const pagesAndBoxes = await getEmbeddedPagesAndEmbedPdfBoxes({ pdfDoc, basePdf });
|
13
|
-
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
14
|
-
return { pdfDoc, embeddedPages, embedPdfBoxes };
|
15
|
-
};
|
16
|
-
const postProcessing = ({ pdfDoc }) => {
|
17
|
-
pdfDoc.setProducer(TOOL_NAME);
|
18
|
-
pdfDoc.setCreator(TOOL_NAME);
|
19
|
-
};
|
3
|
+
import { drawEmbeddedPage, preprocessing, postProcessing } from './helper.js';
|
20
4
|
const generate = async (props) => {
|
21
5
|
checkGenerateProps(props);
|
22
6
|
const { inputs, template, options = {}, plugins: userPlugins = {} } = props;
|
23
|
-
const { pdfDoc, embeddedPages, embedPdfBoxes } = await preprocessing({
|
24
|
-
|
7
|
+
const { pdfDoc, embeddedPages, embedPdfBoxes, renderObj } = await preprocessing({
|
8
|
+
template,
|
9
|
+
userPlugins,
|
10
|
+
});
|
25
11
|
const _cache = new Map();
|
26
12
|
for (let i = 0; i < inputs.length; i += 1) {
|
27
13
|
const inputObj = inputs[i];
|
@@ -40,16 +26,15 @@ const generate = async (props) => {
|
|
40
26
|
if (!schema || !value) {
|
41
27
|
continue;
|
42
28
|
}
|
43
|
-
const render =
|
29
|
+
const render = renderObj[schema.type];
|
44
30
|
if (!render) {
|
45
|
-
|
46
|
-
Check this document: https://pdfme.com/docs/custom-schemas`);
|
31
|
+
continue;
|
47
32
|
}
|
48
33
|
await render({ value, schema, pdfLib, pdfDoc, page, options, _cache });
|
49
34
|
}
|
50
35
|
}
|
51
36
|
}
|
52
|
-
postProcessing({ pdfDoc });
|
37
|
+
postProcessing({ pdfDoc, options });
|
53
38
|
return pdfDoc.save();
|
54
39
|
};
|
55
40
|
export default generate;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAoB,EAAE,EAAE;IAC9C,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IAE5E,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC;QAC9E,QAAQ;QACR,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAChD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;YAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAErD,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAE5B,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;oBACrB,SAAS;iBACV;gBAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,EAAE;oBACX,SAAS;iBACV;gBAED,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;aACxE;SACF;KACF;IAED,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import * as fontkit from 'fontkit';
|
2
|
+
import * as pdfLib from '@pdfme/pdf-lib';
|
3
|
+
import { builtInPlugins } from '@pdfme/schemas';
|
4
|
+
import { PDFDocument } from '@pdfme/pdf-lib';
|
5
|
+
import { getB64BasePdf } from '@pdfme/common';
|
6
|
+
import { TOOL_NAME } from './constants.js';
|
7
|
+
export const getEmbeddedPagesAndEmbedPdfBoxes = async (arg) => {
|
8
|
+
const { pdfDoc, basePdf } = arg;
|
9
|
+
let embeddedPages = [];
|
10
|
+
let embedPdfBoxes = [];
|
11
|
+
const willLoadPdf = typeof basePdf === 'string' ? await getB64BasePdf(basePdf) : basePdf;
|
12
|
+
const embedPdf = await PDFDocument.load(willLoadPdf);
|
13
|
+
const embedPdfPages = embedPdf.getPages();
|
14
|
+
embedPdfBoxes = embedPdfPages.map((p) => ({
|
15
|
+
mediaBox: p.getMediaBox(),
|
16
|
+
bleedBox: p.getBleedBox(),
|
17
|
+
trimBox: p.getTrimBox(),
|
18
|
+
}));
|
19
|
+
const boundingBoxes = embedPdfPages.map((p) => {
|
20
|
+
const { x, y, width, height } = p.getMediaBox();
|
21
|
+
return { left: x, bottom: y, right: width, top: height + y };
|
22
|
+
});
|
23
|
+
const transformationMatrices = embedPdfPages.map(() => [1, 0, 0, 1, 0, 0]);
|
24
|
+
embeddedPages = await pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
25
|
+
return { embeddedPages, embedPdfBoxes };
|
26
|
+
};
|
27
|
+
export const drawEmbeddedPage = (arg) => {
|
28
|
+
const { page, embeddedPage, embedPdfBox } = arg;
|
29
|
+
page.drawPage(embeddedPage);
|
30
|
+
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
31
|
+
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
32
|
+
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
33
|
+
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
34
|
+
};
|
35
|
+
export const preprocessing = async (arg) => {
|
36
|
+
const { template, userPlugins } = arg;
|
37
|
+
const { basePdf } = template;
|
38
|
+
const pdfDoc = await pdfLib.PDFDocument.create();
|
39
|
+
// @ts-ignore
|
40
|
+
pdfDoc.registerFontkit(fontkit);
|
41
|
+
const pagesAndBoxes = await getEmbeddedPagesAndEmbedPdfBoxes({ pdfDoc, basePdf });
|
42
|
+
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
43
|
+
const pluginValues = (Object.values(userPlugins).length > 0
|
44
|
+
? Object.values(userPlugins)
|
45
|
+
: Object.values(builtInPlugins));
|
46
|
+
const schemaTypes = template.schemas.flatMap((schemaObj) => Object.values(schemaObj).map((schema) => schema.type));
|
47
|
+
const renderObj = schemaTypes.reduce((acc, type) => {
|
48
|
+
const render = pluginValues.find((pv) => pv.propPanel.defaultSchema.type === type);
|
49
|
+
if (!render) {
|
50
|
+
throw new Error(`[@pdfme/generator] Renderer for type ${type} not found.
|
51
|
+
Check this document: https://pdfme.com/docs/custom-schemas`);
|
52
|
+
}
|
53
|
+
return { ...acc, [type]: render.pdf };
|
54
|
+
}, {});
|
55
|
+
return { pdfDoc, embeddedPages, embedPdfBoxes, renderObj };
|
56
|
+
};
|
57
|
+
export const postProcessing = (props) => {
|
58
|
+
const { pdfDoc, options } = props;
|
59
|
+
const { author = TOOL_NAME, creationDate = new Date(), creator = TOOL_NAME, keywords = [], language = 'en-US', modificationDate = new Date(), producer = TOOL_NAME, subject = '', title = '', } = options;
|
60
|
+
pdfDoc.setAuthor(author);
|
61
|
+
pdfDoc.setCreationDate(creationDate);
|
62
|
+
pdfDoc.setCreator(creator);
|
63
|
+
pdfDoc.setKeywords(keywords);
|
64
|
+
pdfDoc.setLanguage(language);
|
65
|
+
pdfDoc.setModificationDate(modificationDate);
|
66
|
+
pdfDoc.setProducer(producer);
|
67
|
+
pdfDoc.setSubject(subject);
|
68
|
+
pdfDoc.setTitle(title);
|
69
|
+
};
|
70
|
+
//# sourceMappingURL=helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/helper.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
export declare const TOOL_NAME: "pdfme (https://
|
1
|
+
export declare const TOOL_NAME: "pdfme (https://pdfme.com/)";
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import * as pdfLib from '@pdfme/pdf-lib';
|
2
|
+
import type { GeneratorOptions, Template, PDFRenderProps } from '@pdfme/common';
|
3
|
+
import type { Schema, Plugins } from '@pdfme/common';
|
4
|
+
import { PDFPage, PDFDocument, PDFEmbeddedPage } from '@pdfme/pdf-lib';
|
5
|
+
import { BasePdf } from '@pdfme/common';
|
6
|
+
import type { EmbedPdfBox } from './types';
|
7
|
+
export declare const getEmbeddedPagesAndEmbedPdfBoxes: (arg: {
|
8
|
+
pdfDoc: PDFDocument;
|
9
|
+
basePdf: BasePdf;
|
10
|
+
}) => Promise<{
|
11
|
+
embeddedPages: pdfLib.PDFEmbeddedPage[];
|
12
|
+
embedPdfBoxes: EmbedPdfBox[];
|
13
|
+
}>;
|
14
|
+
export declare const drawEmbeddedPage: (arg: {
|
15
|
+
page: PDFPage;
|
16
|
+
embeddedPage: PDFEmbeddedPage;
|
17
|
+
embedPdfBox: EmbedPdfBox;
|
18
|
+
}) => void;
|
19
|
+
export declare const preprocessing: (arg: {
|
20
|
+
template: Template;
|
21
|
+
userPlugins: Plugins;
|
22
|
+
}) => Promise<{
|
23
|
+
pdfDoc: pdfLib.PDFDocument;
|
24
|
+
embeddedPages: pdfLib.PDFEmbeddedPage[];
|
25
|
+
embedPdfBoxes: EmbedPdfBox[];
|
26
|
+
renderObj: Record<string, (arg: PDFRenderProps<Schema>) => Promise<void>>;
|
27
|
+
}>;
|
28
|
+
export declare const postProcessing: (props: {
|
29
|
+
pdfDoc: pdfLib.PDFDocument;
|
30
|
+
options: GeneratorOptions;
|
31
|
+
}) => void;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@pdfme/generator",
|
3
|
-
"version": "3.1.1",
|
3
|
+
"version": "3.1.2-dev.1",
|
4
4
|
"sideEffects": false,
|
5
5
|
"author": "hand-dot",
|
6
6
|
"license": "MIT",
|
@@ -21,7 +21,6 @@
|
|
21
21
|
"bugs": {
|
22
22
|
"url": "https://github.com/pdfme/pdfme/issues"
|
23
23
|
},
|
24
|
-
"type": "module",
|
25
24
|
"main": "dist/cjs/src/index.js",
|
26
25
|
"module": "dist/esm/src/index.js",
|
27
26
|
"types": "dist/types/src/index.d.ts",
|
@@ -32,19 +31,14 @@
|
|
32
31
|
"types": "./dist/types/src/index.d.ts"
|
33
32
|
}
|
34
33
|
},
|
35
|
-
"engines": {
|
36
|
-
"node": ">=16"
|
37
|
-
},
|
38
34
|
"scripts": {
|
39
|
-
"develop": "tsc -w",
|
35
|
+
"develop": "tsc -p tsconfig.esm.json -w",
|
40
36
|
"build": "npm-run-all --parallel build:cjs build:esm",
|
41
37
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
42
38
|
"build:esm": "tsc -p tsconfig.esm.json",
|
43
39
|
"clean": "rimraf dist",
|
44
|
-
"lint": "
|
40
|
+
"lint": "eslint --ext .ts src",
|
45
41
|
"test": "jest",
|
46
|
-
"lint:watch": "tsc -w --noEmit",
|
47
|
-
"test:watch": "jest --coverage --watch",
|
48
42
|
"prune": "ts-prune src",
|
49
43
|
"prettier": "prettier --write 'src/**/*.ts'"
|
50
44
|
},
|
@@ -64,7 +58,7 @@
|
|
64
58
|
},
|
65
59
|
"jest": {
|
66
60
|
"resolver": "ts-jest-resolver",
|
67
|
-
"globalTeardown": "<rootDir>/teardown.
|
61
|
+
"globalTeardown": "<rootDir>/teardown.mjs",
|
68
62
|
"moduleFileExtensions": [
|
69
63
|
"js",
|
70
64
|
"ts"
|
package/src/constants.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const TOOL_NAME = 'pdfme (https://
|
1
|
+
export const TOOL_NAME = 'pdfme (https://pdfme.com/)' as const;
|
package/src/generate.ts
CHANGED
@@ -1,36 +1,16 @@
|
|
1
1
|
import * as pdfLib from '@pdfme/pdf-lib';
|
2
|
-
import
|
3
|
-
import type { GenerateProps, Template } from '@pdfme/common';
|
2
|
+
import type { GenerateProps } from '@pdfme/common';
|
4
3
|
import { checkGenerateProps } from '@pdfme/common';
|
5
|
-
import {
|
6
|
-
import { drawEmbeddedPage, getEmbeddedPagesAndEmbedPdfBoxes } from './pdfUtils.js';
|
7
|
-
import { TOOL_NAME } from './constants.js';
|
8
|
-
|
9
|
-
const preprocessing = async ({ template }: { template: Template }) => {
|
10
|
-
const { basePdf } = template;
|
11
|
-
|
12
|
-
const pdfDoc = await pdfLib.PDFDocument.create();
|
13
|
-
// @ts-ignore
|
14
|
-
pdfDoc.registerFontkit(fontkit);
|
15
|
-
|
16
|
-
const pagesAndBoxes = await getEmbeddedPagesAndEmbedPdfBoxes({ pdfDoc, basePdf });
|
17
|
-
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
18
|
-
|
19
|
-
return { pdfDoc, embeddedPages, embedPdfBoxes };
|
20
|
-
};
|
21
|
-
|
22
|
-
const postProcessing = ({ pdfDoc }: { pdfDoc: pdfLib.PDFDocument }) => {
|
23
|
-
pdfDoc.setProducer(TOOL_NAME);
|
24
|
-
pdfDoc.setCreator(TOOL_NAME);
|
25
|
-
};
|
4
|
+
import { drawEmbeddedPage, preprocessing, postProcessing } from './helper.js';
|
26
5
|
|
27
6
|
const generate = async (props: GenerateProps) => {
|
28
7
|
checkGenerateProps(props);
|
29
8
|
const { inputs, template, options = {}, plugins: userPlugins = {} } = props;
|
30
9
|
|
31
|
-
const { pdfDoc, embeddedPages, embedPdfBoxes } = await preprocessing({
|
32
|
-
|
33
|
-
|
10
|
+
const { pdfDoc, embeddedPages, embedPdfBoxes, renderObj } = await preprocessing({
|
11
|
+
template,
|
12
|
+
userPlugins,
|
13
|
+
});
|
34
14
|
|
35
15
|
const _cache = new Map();
|
36
16
|
|
@@ -55,19 +35,17 @@ const generate = async (props: GenerateProps) => {
|
|
55
35
|
continue;
|
56
36
|
}
|
57
37
|
|
58
|
-
const render =
|
59
|
-
(plugin) => plugin.propPanel.defaultSchema.type === schema.type
|
60
|
-
)?.pdf;
|
38
|
+
const render = renderObj[schema.type];
|
61
39
|
if (!render) {
|
62
|
-
|
63
|
-
Check this document: https://pdfme.com/docs/custom-schemas`);
|
40
|
+
continue;
|
64
41
|
}
|
42
|
+
|
65
43
|
await render({ value, schema, pdfLib, pdfDoc, page, options, _cache });
|
66
44
|
}
|
67
45
|
}
|
68
46
|
}
|
69
47
|
|
70
|
-
postProcessing({ pdfDoc });
|
48
|
+
postProcessing({ pdfDoc, options });
|
71
49
|
|
72
50
|
return pdfDoc.save();
|
73
51
|
};
|
package/src/helper.ts
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
import * as fontkit from 'fontkit';
|
2
|
+
import * as pdfLib from '@pdfme/pdf-lib';
|
3
|
+
import type { GeneratorOptions, Template, PDFRenderProps, Plugin } from '@pdfme/common';
|
4
|
+
import type { Schema, Plugins } from '@pdfme/common';
|
5
|
+
import { builtInPlugins } from '@pdfme/schemas';
|
6
|
+
import { PDFPage, PDFDocument, PDFEmbeddedPage, TransformationMatrix } from '@pdfme/pdf-lib';
|
7
|
+
import { getB64BasePdf, BasePdf } from '@pdfme/common';
|
8
|
+
import { TOOL_NAME } from './constants.js';
|
9
|
+
import type { EmbedPdfBox } from './types';
|
10
|
+
|
11
|
+
export const getEmbeddedPagesAndEmbedPdfBoxes = async (arg: {
|
12
|
+
pdfDoc: PDFDocument;
|
13
|
+
basePdf: BasePdf;
|
14
|
+
}) => {
|
15
|
+
const { pdfDoc, basePdf } = arg;
|
16
|
+
let embeddedPages: PDFEmbeddedPage[] = [];
|
17
|
+
let embedPdfBoxes: EmbedPdfBox[] = [];
|
18
|
+
const willLoadPdf = typeof basePdf === 'string' ? await getB64BasePdf(basePdf) : basePdf;
|
19
|
+
const embedPdf = await PDFDocument.load(willLoadPdf);
|
20
|
+
const embedPdfPages = embedPdf.getPages();
|
21
|
+
|
22
|
+
embedPdfBoxes = embedPdfPages.map((p) => ({
|
23
|
+
mediaBox: p.getMediaBox(),
|
24
|
+
bleedBox: p.getBleedBox(),
|
25
|
+
trimBox: p.getTrimBox(),
|
26
|
+
}));
|
27
|
+
|
28
|
+
const boundingBoxes = embedPdfPages.map((p) => {
|
29
|
+
const { x, y, width, height } = p.getMediaBox();
|
30
|
+
|
31
|
+
return { left: x, bottom: y, right: width, top: height + y };
|
32
|
+
});
|
33
|
+
|
34
|
+
const transformationMatrices = embedPdfPages.map(
|
35
|
+
() => [1, 0, 0, 1, 0, 0] as TransformationMatrix
|
36
|
+
);
|
37
|
+
|
38
|
+
embeddedPages = await pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
39
|
+
|
40
|
+
return { embeddedPages, embedPdfBoxes };
|
41
|
+
};
|
42
|
+
|
43
|
+
export const drawEmbeddedPage = (arg: {
|
44
|
+
page: PDFPage;
|
45
|
+
embeddedPage: PDFEmbeddedPage;
|
46
|
+
embedPdfBox: EmbedPdfBox;
|
47
|
+
}) => {
|
48
|
+
const { page, embeddedPage, embedPdfBox } = arg;
|
49
|
+
page.drawPage(embeddedPage);
|
50
|
+
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
51
|
+
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
52
|
+
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
53
|
+
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
54
|
+
};
|
55
|
+
|
56
|
+
export const preprocessing = async (arg: { template: Template; userPlugins: Plugins }) => {
|
57
|
+
const { template, userPlugins } = arg;
|
58
|
+
const { basePdf } = template;
|
59
|
+
|
60
|
+
const pdfDoc = await pdfLib.PDFDocument.create();
|
61
|
+
// @ts-ignore
|
62
|
+
pdfDoc.registerFontkit(fontkit);
|
63
|
+
|
64
|
+
const pagesAndBoxes = await getEmbeddedPagesAndEmbedPdfBoxes({ pdfDoc, basePdf });
|
65
|
+
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
66
|
+
|
67
|
+
const pluginValues = (
|
68
|
+
Object.values(userPlugins).length > 0
|
69
|
+
? Object.values(userPlugins)
|
70
|
+
: Object.values(builtInPlugins)
|
71
|
+
) as Plugin<Schema>[];
|
72
|
+
|
73
|
+
const schemaTypes = template.schemas.flatMap((schemaObj) =>
|
74
|
+
Object.values(schemaObj).map((schema) => schema.type)
|
75
|
+
);
|
76
|
+
|
77
|
+
const renderObj = schemaTypes.reduce((acc, type) => {
|
78
|
+
const render = pluginValues.find((pv) => pv.propPanel.defaultSchema.type === type);
|
79
|
+
|
80
|
+
if (!render) {
|
81
|
+
throw new Error(`[@pdfme/generator] Renderer for type ${type} not found.
|
82
|
+
Check this document: https://pdfme.com/docs/custom-schemas`);
|
83
|
+
}
|
84
|
+
return { ...acc, [type]: render.pdf };
|
85
|
+
}, {} as Record<string, (arg: PDFRenderProps<Schema>) => Promise<void>>);
|
86
|
+
|
87
|
+
return { pdfDoc, embeddedPages, embedPdfBoxes, renderObj };
|
88
|
+
};
|
89
|
+
|
90
|
+
export const postProcessing = (props: {
|
91
|
+
pdfDoc: pdfLib.PDFDocument;
|
92
|
+
options: GeneratorOptions;
|
93
|
+
}) => {
|
94
|
+
const { pdfDoc, options } = props;
|
95
|
+
const {
|
96
|
+
author = TOOL_NAME,
|
97
|
+
creationDate = new Date(),
|
98
|
+
creator = TOOL_NAME,
|
99
|
+
keywords = [],
|
100
|
+
language = 'en-US',
|
101
|
+
modificationDate = new Date(),
|
102
|
+
producer = TOOL_NAME,
|
103
|
+
subject = '',
|
104
|
+
title = '',
|
105
|
+
} = options;
|
106
|
+
pdfDoc.setAuthor(author);
|
107
|
+
pdfDoc.setCreationDate(creationDate);
|
108
|
+
pdfDoc.setCreator(creator);
|
109
|
+
pdfDoc.setKeywords(keywords);
|
110
|
+
pdfDoc.setLanguage(language);
|
111
|
+
pdfDoc.setModificationDate(modificationDate);
|
112
|
+
pdfDoc.setProducer(producer);
|
113
|
+
pdfDoc.setSubject(subject);
|
114
|
+
pdfDoc.setTitle(title);
|
115
|
+
};
|
package/tsconfig.json
CHANGED
package/.eslintrc.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module.exports = {
|
2
|
-
root: true,
|
3
|
-
env: {
|
4
|
-
es6: true,
|
5
|
-
node: true,
|
6
|
-
},
|
7
|
-
overrides: [
|
8
|
-
{
|
9
|
-
files: ['*.ts'], // Your TypeScript files extension
|
10
|
-
parserOptions: {
|
11
|
-
project: ['./tsconfig.esm.json'], // Specify it only for TypeScript files
|
12
|
-
},
|
13
|
-
},
|
14
|
-
],
|
15
|
-
parser: '@typescript-eslint/parser',
|
16
|
-
plugins: ['prettier', '@typescript-eslint'],
|
17
|
-
rules: {
|
18
|
-
'no-use-before-define': 'off',
|
19
|
-
'dot-notation': 'warn',
|
20
|
-
'@typescript-eslint/no-use-before-define': ['error'],
|
21
|
-
'@typescript-eslint/explicit-function-return-type': 'off',
|
22
|
-
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
23
|
-
},
|
24
|
-
extends: ['plugin:@typescript-eslint/recommended', 'prettier', 'plugin:prettier/recommended'],
|
25
|
-
parserOptions: {
|
26
|
-
parser: 'typescript-eslint-parser',
|
27
|
-
ecmaVersion: 2018,
|
28
|
-
sourceType: 'module',
|
29
|
-
project: 'tsconfig.esm.json',
|
30
|
-
},
|
31
|
-
};
|
package/dist/cjs/src/pdfUtils.js
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.drawEmbeddedPage = exports.getEmbeddedPagesAndEmbedPdfBoxes = void 0;
|
4
|
-
const pdf_lib_1 = require("@pdfme/pdf-lib");
|
5
|
-
const common_1 = require("@pdfme/common");
|
6
|
-
const getEmbeddedPagesAndEmbedPdfBoxes = async (arg) => {
|
7
|
-
const { pdfDoc, basePdf } = arg;
|
8
|
-
let embeddedPages = [];
|
9
|
-
let embedPdfBoxes = [];
|
10
|
-
const willLoadPdf = typeof basePdf === 'string' ? await (0, common_1.getB64BasePdf)(basePdf) : basePdf;
|
11
|
-
const embedPdf = await pdf_lib_1.PDFDocument.load(willLoadPdf);
|
12
|
-
const embedPdfPages = embedPdf.getPages();
|
13
|
-
embedPdfBoxes = embedPdfPages.map((p) => ({
|
14
|
-
mediaBox: p.getMediaBox(),
|
15
|
-
bleedBox: p.getBleedBox(),
|
16
|
-
trimBox: p.getTrimBox(),
|
17
|
-
}));
|
18
|
-
const boundingBoxes = embedPdfPages.map((p) => {
|
19
|
-
const { x, y, width, height } = p.getMediaBox();
|
20
|
-
return { left: x, bottom: y, right: width, top: height + y };
|
21
|
-
});
|
22
|
-
const transformationMatrices = embedPdfPages.map(() => [1, 0, 0, 1, 0, 0]);
|
23
|
-
embeddedPages = await pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
24
|
-
return { embeddedPages, embedPdfBoxes };
|
25
|
-
};
|
26
|
-
exports.getEmbeddedPagesAndEmbedPdfBoxes = getEmbeddedPagesAndEmbedPdfBoxes;
|
27
|
-
const drawEmbeddedPage = (arg) => {
|
28
|
-
const { page, embeddedPage, embedPdfBox } = arg;
|
29
|
-
page.drawPage(embeddedPage);
|
30
|
-
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
31
|
-
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
32
|
-
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
33
|
-
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
34
|
-
};
|
35
|
-
exports.drawEmbeddedPage = drawEmbeddedPage;
|
36
|
-
//# sourceMappingURL=pdfUtils.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"pdfUtils.js","sourceRoot":"","sources":["../../../src/pdfUtils.ts"],"names":[],"mappings":";;;AAAA,4CAA6F;AAC7F,0CAAuD;AAGhD,MAAM,gCAAgC,GAAG,KAAK,EAAE,GAGtD,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAChC,IAAI,aAAa,GAAsB,EAAE,CAAC;IAC1C,IAAI,aAAa,GAAkB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACzF,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAE1C,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE;QACzB,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE;QACzB,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE;KACxB,CAAC,CAAC,CAAC;IAEJ,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAEhD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAC9C,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAyB,CACjD,CAAC;IAEF,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAE9F,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC,CAAC;AA9BW,QAAA,gCAAgC,oCA8B3C;AAEK,MAAM,gBAAgB,GAAG,CAAC,GAIhC,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B"}
|
package/dist/esm/src/pdfUtils.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
import { PDFDocument } from '@pdfme/pdf-lib';
|
2
|
-
import { getB64BasePdf } from '@pdfme/common';
|
3
|
-
export const getEmbeddedPagesAndEmbedPdfBoxes = async (arg) => {
|
4
|
-
const { pdfDoc, basePdf } = arg;
|
5
|
-
let embeddedPages = [];
|
6
|
-
let embedPdfBoxes = [];
|
7
|
-
const willLoadPdf = typeof basePdf === 'string' ? await getB64BasePdf(basePdf) : basePdf;
|
8
|
-
const embedPdf = await PDFDocument.load(willLoadPdf);
|
9
|
-
const embedPdfPages = embedPdf.getPages();
|
10
|
-
embedPdfBoxes = embedPdfPages.map((p) => ({
|
11
|
-
mediaBox: p.getMediaBox(),
|
12
|
-
bleedBox: p.getBleedBox(),
|
13
|
-
trimBox: p.getTrimBox(),
|
14
|
-
}));
|
15
|
-
const boundingBoxes = embedPdfPages.map((p) => {
|
16
|
-
const { x, y, width, height } = p.getMediaBox();
|
17
|
-
return { left: x, bottom: y, right: width, top: height + y };
|
18
|
-
});
|
19
|
-
const transformationMatrices = embedPdfPages.map(() => [1, 0, 0, 1, 0, 0]);
|
20
|
-
embeddedPages = await pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
21
|
-
return { embeddedPages, embedPdfBoxes };
|
22
|
-
};
|
23
|
-
export const drawEmbeddedPage = (arg) => {
|
24
|
-
const { page, embeddedPage, embedPdfBox } = arg;
|
25
|
-
page.drawPage(embeddedPage);
|
26
|
-
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
27
|
-
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
28
|
-
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
29
|
-
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
30
|
-
};
|
31
|
-
//# sourceMappingURL=pdfUtils.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"pdfUtils.js","sourceRoot":"","sources":["../../../src/pdfUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAyC,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAW,MAAM,eAAe,CAAC;AAGvD,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,EAAE,GAGtD,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAChC,IAAI,aAAa,GAAsB,EAAE,CAAC;IAC1C,IAAI,aAAa,GAAkB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACzF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAE1C,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE;QACzB,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE;QACzB,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE;KACxB,CAAC,CAAC,CAAC;IAEJ,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAEhD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAC9C,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAyB,CACjD,CAAC;IAEF,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAE9F,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAIhC,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC,CAAC"}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { PDFPage, PDFDocument, PDFEmbeddedPage } from '@pdfme/pdf-lib';
|
2
|
-
import { BasePdf } from '@pdfme/common';
|
3
|
-
import type { EmbedPdfBox } from './types';
|
4
|
-
export declare const getEmbeddedPagesAndEmbedPdfBoxes: (arg: {
|
5
|
-
pdfDoc: PDFDocument;
|
6
|
-
basePdf: BasePdf;
|
7
|
-
}) => Promise<{
|
8
|
-
embeddedPages: PDFEmbeddedPage[];
|
9
|
-
embedPdfBoxes: EmbedPdfBox[];
|
10
|
-
}>;
|
11
|
-
export declare const drawEmbeddedPage: (arg: {
|
12
|
-
page: PDFPage;
|
13
|
-
embeddedPage: PDFEmbeddedPage;
|
14
|
-
embedPdfBox: EmbedPdfBox;
|
15
|
-
}) => void;
|
package/src/pdfUtils.ts
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
import { PDFPage, PDFDocument, PDFEmbeddedPage, TransformationMatrix } from '@pdfme/pdf-lib';
|
2
|
-
import { getB64BasePdf, BasePdf } from '@pdfme/common';
|
3
|
-
import type { EmbedPdfBox } from './types';
|
4
|
-
|
5
|
-
export const getEmbeddedPagesAndEmbedPdfBoxes = async (arg: {
|
6
|
-
pdfDoc: PDFDocument;
|
7
|
-
basePdf: BasePdf;
|
8
|
-
}) => {
|
9
|
-
const { pdfDoc, basePdf } = arg;
|
10
|
-
let embeddedPages: PDFEmbeddedPage[] = [];
|
11
|
-
let embedPdfBoxes: EmbedPdfBox[] = [];
|
12
|
-
const willLoadPdf = typeof basePdf === 'string' ? await getB64BasePdf(basePdf) : basePdf;
|
13
|
-
const embedPdf = await PDFDocument.load(willLoadPdf);
|
14
|
-
const embedPdfPages = embedPdf.getPages();
|
15
|
-
|
16
|
-
embedPdfBoxes = embedPdfPages.map((p) => ({
|
17
|
-
mediaBox: p.getMediaBox(),
|
18
|
-
bleedBox: p.getBleedBox(),
|
19
|
-
trimBox: p.getTrimBox(),
|
20
|
-
}));
|
21
|
-
|
22
|
-
const boundingBoxes = embedPdfPages.map((p) => {
|
23
|
-
const { x, y, width, height } = p.getMediaBox();
|
24
|
-
|
25
|
-
return { left: x, bottom: y, right: width, top: height + y };
|
26
|
-
});
|
27
|
-
|
28
|
-
const transformationMatrices = embedPdfPages.map(
|
29
|
-
() => [1, 0, 0, 1, 0, 0] as TransformationMatrix
|
30
|
-
);
|
31
|
-
|
32
|
-
embeddedPages = await pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
33
|
-
|
34
|
-
return { embeddedPages, embedPdfBoxes };
|
35
|
-
};
|
36
|
-
|
37
|
-
export const drawEmbeddedPage = (arg: {
|
38
|
-
page: PDFPage;
|
39
|
-
embeddedPage: PDFEmbeddedPage;
|
40
|
-
embedPdfBox: EmbedPdfBox;
|
41
|
-
}) => {
|
42
|
-
const { page, embeddedPage, embedPdfBox } = arg;
|
43
|
-
page.drawPage(embeddedPage);
|
44
|
-
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
45
|
-
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
46
|
-
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
47
|
-
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
48
|
-
};
|
File without changes
|