@pdfme/generator 2.2.0 → 2.2.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/dist/cjs/__tests__/generate.test.js.map +1 -1
- package/dist/cjs/src/builtInRenderer.js +9 -0
- package/dist/cjs/src/builtInRenderer.js.map +1 -0
- package/dist/cjs/src/generate.js +29 -30
- package/dist/cjs/src/generate.js.map +1 -1
- package/dist/cjs/src/pdfUtils.js +65 -0
- package/dist/cjs/src/pdfUtils.js.map +1 -0
- package/dist/cjs/src/renderUtils.js +65 -0
- package/dist/cjs/src/renderUtils.js.map +1 -0
- package/dist/cjs/src/renders/barcodes.js +37 -0
- package/dist/cjs/src/renders/barcodes.js.map +1 -0
- package/dist/cjs/src/renders/image.js +34 -0
- package/dist/cjs/src/renders/image.js.map +1 -0
- package/dist/cjs/src/renders/text.js +86 -0
- package/dist/cjs/src/renders/text.js.map +1 -0
- package/dist/cjs/src/types.js +3 -0
- package/dist/cjs/src/types.js.map +1 -0
- package/dist/esm/__tests__/generate.test.js.map +1 -1
- package/dist/esm/src/builtInRenderer.js +7 -0
- package/dist/esm/src/builtInRenderer.js.map +1 -0
- package/dist/esm/src/generate.js +23 -27
- package/dist/esm/src/generate.js.map +1 -1
- package/dist/esm/src/pdfUtils.js +59 -0
- package/dist/esm/src/pdfUtils.js.map +1 -0
- package/dist/esm/src/renderUtils.js +56 -0
- package/dist/esm/src/renderUtils.js.map +1 -0
- package/dist/esm/src/renders/barcodes.js +33 -0
- package/dist/esm/src/renders/barcodes.js.map +1 -0
- package/dist/esm/src/renders/image.js +30 -0
- package/dist/esm/src/renders/image.js.map +1 -0
- package/dist/esm/src/renders/text.js +82 -0
- package/dist/esm/src/renders/text.js.map +1 -0
- package/dist/esm/src/types.js +2 -0
- package/dist/esm/src/types.js.map +1 -0
- package/dist/types/__tests__/assets/templates/index.d.ts +132 -0
- package/dist/types/src/builtInRenderer.d.ts +3 -0
- package/dist/types/src/pdfUtils.d.ts +19 -0
- package/dist/types/src/renderUtils.d.ts +16 -0
- package/dist/types/src/renders/barcodes.d.ts +2 -0
- package/dist/types/src/renders/image.d.ts +2 -0
- package/dist/types/src/renders/text.d.ts +2 -0
- package/dist/types/src/types.d.ts +36 -0
- package/package.json +2 -7
- package/src/builtInRenderer.ts +14 -0
- package/src/generate.ts +28 -46
- package/src/pdfUtils.ts +76 -0
- package/src/renderUtils.ts +68 -0
- package/src/renders/barcodes.ts +32 -0
- package/src/renders/image.ts +24 -0
- package/src/renders/text.ts +114 -0
- package/src/types.ts +23 -0
- package/dist/cjs/__tests__/helper.test.js +0 -53
- package/dist/cjs/__tests__/helper.test.js.map +0 -1
- package/dist/cjs/src/helper.js +0 -263
- package/dist/cjs/src/helper.js.map +0 -1
- package/dist/esm/__tests__/helper.test.js +0 -48
- package/dist/esm/__tests__/helper.test.js.map +0 -1
- package/dist/esm/src/helper.js +0 -252
- package/dist/esm/src/helper.js.map +0 -1
- package/dist/types/__tests__/helper.test.d.ts +0 -1
- package/dist/types/src/helper.d.ts +0 -67
- package/src/helper.ts +0 -391
package/dist/esm/src/generate.js
CHANGED
@@ -9,33 +9,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
9
9
|
};
|
10
10
|
import { PDFDocument } from '@pdfme/pdf-lib';
|
11
11
|
import * as fontkit from 'fontkit';
|
12
|
-
import {
|
13
|
-
import
|
14
|
-
import {
|
15
|
-
|
16
|
-
|
12
|
+
import { checkGenerateProps, } from '@pdfme/common';
|
13
|
+
import builtInRenderer from './builtInRenderer';
|
14
|
+
import { drawEmbeddedPage, getEmbeddedPagesAndEmbedPdfBoxes, } from './pdfUtils';
|
15
|
+
import { TOOL_NAME } from './constants';
|
16
|
+
const preprocessing = ({ template }) => __awaiter(void 0, void 0, void 0, function* () {
|
17
17
|
const { basePdf } = template;
|
18
|
-
const fallbackFontName = getFallbackFontName(font);
|
19
18
|
const pdfDoc = yield PDFDocument.create();
|
20
19
|
// @ts-ignore
|
21
20
|
pdfDoc.registerFontkit(fontkit);
|
22
|
-
const pdfFontObj = yield embedAndGetFontObj({ pdfDoc, font });
|
23
21
|
const pagesAndBoxes = yield getEmbeddedPagesAndEmbedPdfBoxes({ pdfDoc, basePdf });
|
24
22
|
const { embeddedPages, embedPdfBoxes } = pagesAndBoxes;
|
25
|
-
return { pdfDoc,
|
23
|
+
return { pdfDoc, embeddedPages, embedPdfBoxes };
|
26
24
|
});
|
27
|
-
const postProcessing = (pdfDoc) => {
|
25
|
+
const postProcessing = ({ pdfDoc }) => {
|
28
26
|
pdfDoc.setProducer(TOOL_NAME);
|
29
27
|
pdfDoc.setCreator(TOOL_NAME);
|
30
28
|
};
|
31
29
|
const generate = (props) => __awaiter(void 0, void 0, void 0, function* () {
|
32
30
|
checkGenerateProps(props);
|
33
31
|
const { inputs, template, options = {} } = props;
|
34
|
-
const {
|
35
|
-
|
36
|
-
const
|
37
|
-
const
|
38
|
-
const inputImageCache = {};
|
32
|
+
const { pdfDoc, embeddedPages, embedPdfBoxes } = yield preprocessing({ template });
|
33
|
+
// TODO: In the future, when we support custom schemas, we will create the registry using options.renderer instead of {}.
|
34
|
+
const rendererRegistry = Object.assign(builtInRenderer, {});
|
35
|
+
const _cache = new Map();
|
39
36
|
for (let i = 0; i < inputs.length; i += 1) {
|
40
37
|
const inputObj = inputs[i];
|
41
38
|
const keys = Object.keys(inputObj);
|
@@ -47,22 +44,21 @@ const generate = (props) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
44
|
drawEmbeddedPage({ page, embeddedPage, embedPdfBox });
|
48
45
|
for (let l = 0; l < keys.length; l += 1) {
|
49
46
|
const key = keys[l];
|
50
|
-
const
|
51
|
-
const
|
52
|
-
const
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
});
|
47
|
+
const schemaObj = template.schemas[j];
|
48
|
+
const schema = schemaObj[key];
|
49
|
+
const value = inputObj[key];
|
50
|
+
if (!schema || !value) {
|
51
|
+
continue;
|
52
|
+
}
|
53
|
+
const renderer = rendererRegistry[schema.type];
|
54
|
+
if (!renderer) {
|
55
|
+
throw new Error(`Renderer for type ${schema.type} not found`);
|
56
|
+
}
|
57
|
+
yield renderer.render({ value, schema, pdfDoc, page, options, _cache });
|
62
58
|
}
|
63
59
|
}
|
64
60
|
}
|
65
|
-
postProcessing(pdfDoc);
|
61
|
+
postProcessing({ pdfDoc });
|
66
62
|
return pdfDoc.save();
|
67
63
|
});
|
68
64
|
export default generate;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import { PDFDocument } from '@pdfme/pdf-lib';
|
11
|
+
import { getB64BasePdf } from '@pdfme/common';
|
12
|
+
const embedAndGetFontObjCache = new WeakMap();
|
13
|
+
export const embedAndGetFontObj = (arg) => __awaiter(void 0, void 0, void 0, function* () {
|
14
|
+
const { pdfDoc, font } = arg;
|
15
|
+
if (embedAndGetFontObjCache.has(pdfDoc)) {
|
16
|
+
return embedAndGetFontObjCache.get(pdfDoc);
|
17
|
+
}
|
18
|
+
const fontValues = yield Promise.all(Object.values(font).map((v) => __awaiter(void 0, void 0, void 0, function* () {
|
19
|
+
let fontData = v.data;
|
20
|
+
if (typeof fontData === 'string' && fontData.startsWith('http')) {
|
21
|
+
fontData = yield fetch(fontData).then((res) => res.arrayBuffer());
|
22
|
+
}
|
23
|
+
return pdfDoc.embedFont(fontData, {
|
24
|
+
subset: typeof v.subset === 'undefined' ? true : v.subset,
|
25
|
+
});
|
26
|
+
})));
|
27
|
+
const fontObj = Object.keys(font).reduce((acc, cur, i) => Object.assign(acc, { [cur]: fontValues[i] }), {});
|
28
|
+
embedAndGetFontObjCache.set(pdfDoc, fontObj);
|
29
|
+
return fontObj;
|
30
|
+
});
|
31
|
+
export const getEmbeddedPagesAndEmbedPdfBoxes = (arg) => __awaiter(void 0, void 0, void 0, function* () {
|
32
|
+
const { pdfDoc, basePdf } = arg;
|
33
|
+
let embeddedPages = [];
|
34
|
+
let embedPdfBoxes = [];
|
35
|
+
const willLoadPdf = typeof basePdf === 'string' ? yield getB64BasePdf(basePdf) : basePdf;
|
36
|
+
const embedPdf = yield PDFDocument.load(willLoadPdf);
|
37
|
+
const embedPdfPages = embedPdf.getPages();
|
38
|
+
embedPdfBoxes = embedPdfPages.map((p) => ({
|
39
|
+
mediaBox: p.getMediaBox(),
|
40
|
+
bleedBox: p.getBleedBox(),
|
41
|
+
trimBox: p.getTrimBox(),
|
42
|
+
}));
|
43
|
+
const boundingBoxes = embedPdfPages.map((p) => {
|
44
|
+
const { x, y, width, height } = p.getMediaBox();
|
45
|
+
return { left: x, bottom: y, right: width, top: height + y };
|
46
|
+
});
|
47
|
+
const transformationMatrices = embedPdfPages.map(() => [1, 0, 0, 1, 0, 0]);
|
48
|
+
embeddedPages = yield pdfDoc.embedPages(embedPdfPages, boundingBoxes, transformationMatrices);
|
49
|
+
return { embeddedPages, embedPdfBoxes };
|
50
|
+
});
|
51
|
+
export const drawEmbeddedPage = (arg) => {
|
52
|
+
const { page, embeddedPage, embedPdfBox } = arg;
|
53
|
+
page.drawPage(embeddedPage);
|
54
|
+
const { mediaBox: mb, bleedBox: bb, trimBox: tb } = embedPdfBox;
|
55
|
+
page.setMediaBox(mb.x, mb.y, mb.width, mb.height);
|
56
|
+
page.setBleedBox(bb.x, bb.y, bb.width, bb.height);
|
57
|
+
page.setTrimBox(tb.x, tb.y, tb.width, tb.height);
|
58
|
+
};
|
59
|
+
//# sourceMappingURL=pdfUtils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pdfUtils.js","sourceRoot":"","sources":["../../../src/pdfUtils.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { degrees, rgb, } from '@pdfme/pdf-lib';
|
2
|
+
import { mm2pt } from '@pdfme/common';
|
3
|
+
const hex2rgb = (hex) => {
|
4
|
+
if (hex.slice(0, 1) === '#')
|
5
|
+
hex = hex.slice(1);
|
6
|
+
if (hex.length === 3)
|
7
|
+
hex =
|
8
|
+
hex.slice(0, 1) +
|
9
|
+
hex.slice(0, 1) +
|
10
|
+
hex.slice(1, 2) +
|
11
|
+
hex.slice(1, 2) +
|
12
|
+
hex.slice(2, 3) +
|
13
|
+
hex.slice(2, 3);
|
14
|
+
return [hex.slice(0, 2), hex.slice(2, 4), hex.slice(4, 6)].map((str) => parseInt(str, 16));
|
15
|
+
};
|
16
|
+
export const hex2RgbColor = (hexString) => {
|
17
|
+
if (hexString) {
|
18
|
+
const [r, g, b] = hex2rgb(hexString);
|
19
|
+
return rgb(r / 255, g / 255, b / 255);
|
20
|
+
}
|
21
|
+
// eslint-disable-next-line no-undefined
|
22
|
+
return undefined;
|
23
|
+
};
|
24
|
+
export const calcX = (x, alignment, boxWidth, textWidth) => {
|
25
|
+
let addition = 0;
|
26
|
+
if (alignment === 'center') {
|
27
|
+
addition = (boxWidth - textWidth) / 2;
|
28
|
+
}
|
29
|
+
else if (alignment === 'right') {
|
30
|
+
addition = boxWidth - textWidth;
|
31
|
+
}
|
32
|
+
return mm2pt(x) + addition;
|
33
|
+
};
|
34
|
+
export const calcY = (y, pageHeight, itemHeight) => pageHeight - mm2pt(y) - itemHeight;
|
35
|
+
export const renderBackgroundColor = (arg) => {
|
36
|
+
const { schema, page, pageHeight } = arg;
|
37
|
+
if (!schema.backgroundColor)
|
38
|
+
return;
|
39
|
+
const { width, height } = convertSchemaDimensionsToPt(schema);
|
40
|
+
const color = hex2RgbColor(schema.backgroundColor);
|
41
|
+
page.drawRectangle({
|
42
|
+
x: calcX(schema.position.x, 'left', width, width),
|
43
|
+
y: calcY(schema.position.y, pageHeight, height),
|
44
|
+
width,
|
45
|
+
height,
|
46
|
+
color,
|
47
|
+
});
|
48
|
+
};
|
49
|
+
export const convertSchemaDimensionsToPt = (schema) => {
|
50
|
+
const width = mm2pt(schema.width);
|
51
|
+
const height = mm2pt(schema.height);
|
52
|
+
const rotate = degrees(schema.rotate ? schema.rotate : 0);
|
53
|
+
return { width, height, rotate };
|
54
|
+
};
|
55
|
+
export const getCacheKey = (schema, input) => `${schema.type}${input}`;
|
56
|
+
//# sourceMappingURL=renderUtils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"renderUtils.js","sourceRoot":"","sources":["../../../src/renderUtils.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import { createBarCode, validateBarcodeInput, } from '@pdfme/common';
|
11
|
+
import { calcX, calcY, convertSchemaDimensionsToPt, getCacheKey } from '../renderUtils';
|
12
|
+
export const renderBarcode = (arg) => __awaiter(void 0, void 0, void 0, function* () {
|
13
|
+
const { value, schema, pdfDoc, page, _cache } = arg;
|
14
|
+
if (!validateBarcodeInput(schema.type, value))
|
15
|
+
return;
|
16
|
+
const { width, height, rotate } = convertSchemaDimensionsToPt(schema);
|
17
|
+
const opt = {
|
18
|
+
x: calcX(schema.position.x, 'left', width, width),
|
19
|
+
y: calcY(schema.position.y, page.getHeight(), height),
|
20
|
+
rotate,
|
21
|
+
width,
|
22
|
+
height,
|
23
|
+
};
|
24
|
+
const inputBarcodeCacheKey = getCacheKey(schema, value);
|
25
|
+
let image = _cache.get(inputBarcodeCacheKey);
|
26
|
+
if (!image) {
|
27
|
+
const imageBuf = yield createBarCode(Object.assign(schema, { type: schema.type, input: value }));
|
28
|
+
image = yield pdfDoc.embedPng(imageBuf);
|
29
|
+
_cache.set(inputBarcodeCacheKey, image);
|
30
|
+
}
|
31
|
+
page.drawImage(image, opt);
|
32
|
+
});
|
33
|
+
//# sourceMappingURL=barcodes.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"barcodes.js","sourceRoot":"","sources":["../../../../src/renders/barcodes.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,aAAa,EACb,oBAAoB,GAEvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEvF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAO,GAAgB,EAAE,EAAE;IACpD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACpD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAmB,EAAE,KAAK,CAAC;QAAE,OAAO;IAErE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG;QACR,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QACjD,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC;QACrD,MAAM;QACN,KAAK;QACL,MAAM;KACT,CAAC;IACF,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,QAAQ,GAAG,MAAM,aAAa,CAChC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAC5E,CAAC;QACF,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;KAC1C;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAA,CAAA"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import { calcX, calcY, convertSchemaDimensionsToPt, getCacheKey } from '../renderUtils';
|
11
|
+
export const renderImage = (arg) => __awaiter(void 0, void 0, void 0, function* () {
|
12
|
+
const { value, schema, pdfDoc, page, _cache } = arg;
|
13
|
+
const { width, height, rotate } = convertSchemaDimensionsToPt(schema);
|
14
|
+
const opt = {
|
15
|
+
x: calcX(schema.position.x, 'left', width, width),
|
16
|
+
y: calcY(schema.position.y, page.getHeight(), height),
|
17
|
+
rotate,
|
18
|
+
width,
|
19
|
+
height,
|
20
|
+
};
|
21
|
+
const inputImageCacheKey = getCacheKey(schema, value);
|
22
|
+
let image = _cache.get(inputImageCacheKey);
|
23
|
+
if (!image) {
|
24
|
+
const isPng = value.startsWith('data:image/png;');
|
25
|
+
image = yield (isPng ? pdfDoc.embedPng(value) : pdfDoc.embedJpg(value));
|
26
|
+
_cache.set(inputImageCacheKey, image);
|
27
|
+
}
|
28
|
+
page.drawImage(image, opt);
|
29
|
+
});
|
30
|
+
//# sourceMappingURL=image.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../../src/renders/image.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,GAAgB,EAAE,EAAE;IAClD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEpD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG;QACR,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QACjD,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC;QACrD,MAAM;QACN,KAAK;QACL,MAAM;KACT,CAAC;IACF,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;KACzC;IACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAA,CAAA"}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import { setCharacterSpacing, } from '@pdfme/pdf-lib';
|
11
|
+
import { DEFAULT_FONT_SIZE, DEFAULT_ALIGNMENT, DEFAULT_LINE_HEIGHT, DEFAULT_CHARACTER_SPACING, DEFAULT_FONT_COLOR, DEFAULT_VERTICAL_ALIGNMENT, VERTICAL_ALIGN_TOP, VERTICAL_ALIGN_MIDDLE, VERTICAL_ALIGN_BOTTOM, calculateDynamicFontSize, heightOfFontAtSize, getFontDescentInPt, getFontKitFont, getSplittedLines, widthOfTextAtSize, getDefaultFont, getFallbackFontName, } from '@pdfme/common';
|
12
|
+
import { embedAndGetFontObj } from '../pdfUtils';
|
13
|
+
import { hex2RgbColor, calcX, calcY, renderBackgroundColor, convertSchemaDimensionsToPt } from '../renderUtils';
|
14
|
+
const getFontProp = ({ value, font, schema }) => __awaiter(void 0, void 0, void 0, function* () {
|
15
|
+
var _a, _b, _c, _d, _e, _f;
|
16
|
+
const fontSize = schema.dynamicFontSize ? yield calculateDynamicFontSize({ textSchema: schema, font, value }) : (_a = schema.fontSize) !== null && _a !== void 0 ? _a : DEFAULT_FONT_SIZE;
|
17
|
+
const color = hex2RgbColor((_b = schema.fontColor) !== null && _b !== void 0 ? _b : DEFAULT_FONT_COLOR);
|
18
|
+
const alignment = (_c = schema.alignment) !== null && _c !== void 0 ? _c : DEFAULT_ALIGNMENT;
|
19
|
+
const verticalAlignment = (_d = schema.verticalAlignment) !== null && _d !== void 0 ? _d : DEFAULT_VERTICAL_ALIGNMENT;
|
20
|
+
const lineHeight = (_e = schema.lineHeight) !== null && _e !== void 0 ? _e : DEFAULT_LINE_HEIGHT;
|
21
|
+
const characterSpacing = (_f = schema.characterSpacing) !== null && _f !== void 0 ? _f : DEFAULT_CHARACTER_SPACING;
|
22
|
+
return { fontSize, color, alignment, verticalAlignment, lineHeight, characterSpacing };
|
23
|
+
});
|
24
|
+
export const renderText = (arg) => __awaiter(void 0, void 0, void 0, function* () {
|
25
|
+
const { value, pdfDoc, page, options } = arg;
|
26
|
+
const schema = arg.schema;
|
27
|
+
const { font = getDefaultFont() } = options;
|
28
|
+
const [pdfFontObj, fontKitFont, fontProp] = yield Promise.all([
|
29
|
+
embedAndGetFontObj({ pdfDoc, font }),
|
30
|
+
getFontKitFont(schema, font),
|
31
|
+
getFontProp({ value, font, schema: schema })
|
32
|
+
]);
|
33
|
+
const { fontSize, color, alignment, verticalAlignment, lineHeight, characterSpacing } = fontProp;
|
34
|
+
const pdfFontValue = pdfFontObj[schema.fontName ? schema.fontName : getFallbackFontName(font)];
|
35
|
+
const pageHeight = page.getHeight();
|
36
|
+
renderBackgroundColor({ schema, page, pageHeight });
|
37
|
+
const { width, height, rotate } = convertSchemaDimensionsToPt(schema);
|
38
|
+
page.pushOperators(setCharacterSpacing(characterSpacing));
|
39
|
+
const firstLineTextHeight = heightOfFontAtSize(fontKitFont, fontSize);
|
40
|
+
const descent = getFontDescentInPt(fontKitFont, fontSize);
|
41
|
+
const halfLineHeightAdjustment = lineHeight === 0 ? 0 : ((lineHeight - 1) * fontSize) / 2;
|
42
|
+
const fontWidthCalcValues = {
|
43
|
+
font: fontKitFont,
|
44
|
+
fontSize,
|
45
|
+
characterSpacing,
|
46
|
+
boxWidthInPt: width,
|
47
|
+
};
|
48
|
+
let lines = [];
|
49
|
+
value.split(/\r|\n|\r\n/g).forEach((line) => {
|
50
|
+
lines = lines.concat(getSplittedLines(line, fontWidthCalcValues));
|
51
|
+
});
|
52
|
+
// Text lines are rendered from the bottom upwards, we need to adjust the position down
|
53
|
+
let yOffset = 0;
|
54
|
+
if (verticalAlignment === VERTICAL_ALIGN_TOP) {
|
55
|
+
yOffset = firstLineTextHeight + halfLineHeightAdjustment;
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
const otherLinesHeight = lineHeight * fontSize * (lines.length - 1);
|
59
|
+
if (verticalAlignment === VERTICAL_ALIGN_BOTTOM) {
|
60
|
+
yOffset = height - otherLinesHeight + descent - halfLineHeightAdjustment;
|
61
|
+
}
|
62
|
+
else if (verticalAlignment === VERTICAL_ALIGN_MIDDLE) {
|
63
|
+
yOffset = (height - otherLinesHeight - firstLineTextHeight + descent) / 2 + firstLineTextHeight;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
lines.forEach((line, rowIndex) => {
|
67
|
+
const textWidth = widthOfTextAtSize(line, fontKitFont, fontSize, characterSpacing);
|
68
|
+
const rowYOffset = lineHeight * fontSize * rowIndex;
|
69
|
+
page.drawText(line, {
|
70
|
+
x: calcX(schema.position.x, alignment, width, textWidth),
|
71
|
+
y: calcY(schema.position.y, pageHeight, yOffset) - rowYOffset,
|
72
|
+
rotate,
|
73
|
+
size: fontSize,
|
74
|
+
color,
|
75
|
+
lineHeight: lineHeight * fontSize,
|
76
|
+
maxWidth: width,
|
77
|
+
font: pdfFontValue,
|
78
|
+
wordBreaks: [''],
|
79
|
+
});
|
80
|
+
});
|
81
|
+
});
|
82
|
+
//# sourceMappingURL=text.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/renders/text.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":""}
|