abstract-document 20.0.3 → 20.0.4
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 +3 -3
- package/lib/abstract-document/atoms/line-break.d.ts +1 -1
- package/lib/abstract-document/atoms/line-break.d.ts.map +1 -1
- package/lib/abstract-document/atoms/line-break.js +1 -1
- package/lib/abstract-document/atoms/line-break.js.map +1 -1
- package/lib/abstract-document/atoms/link-target.js +1 -1
- package/lib/abstract-document/atoms/text-run.d.ts.map +1 -1
- package/lib/abstract-document/atoms/text-run.js +1 -0
- package/lib/abstract-document/atoms/text-run.js.map +1 -1
- package/lib/abstract-document/markdown/markdown.js +1 -1
- package/lib/abstract-document/markdown/markdown.js.map +1 -1
- package/lib/abstract-document/numberings/numbering-format.d.ts.map +1 -1
- package/lib/abstract-document/primitives/layout-foundation-color.js +4 -4
- package/lib/abstract-document/primitives/layout-foundation-color.js.map +1 -1
- package/lib/abstract-document/primitives/layout-foundation.js +1 -1
- package/lib/abstract-document/primitives/point.js +1 -1
- package/lib/abstract-document/section-elements/paragraph.js +1 -1
- package/lib/abstract-document/section-elements/paragraph.js.map +1 -1
- package/lib/abstract-document/styles/paragraph-style.js +1 -1
- package/lib/abstract-document/styles/paragraph-style.js.map +1 -1
- package/lib/abstract-document/styles/table-cell-style.d.ts.map +1 -1
- package/lib/abstract-document/styles/table-cell-style.js +1 -1
- package/lib/abstract-document/styles/table-cell-style.js.map +1 -1
- package/lib/abstract-document/styles/table-style.js +1 -1
- package/lib/abstract-document/styles/table-style.js.map +1 -1
- package/lib/abstract-document/styles/text-style.js +1 -1
- package/lib/abstract-document/styles/text-style.js.map +1 -1
- package/lib/abstract-document-exporters/docx/string-utils.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/string-utils.js +1 -3
- package/lib/abstract-document-exporters/docx/string-utils.js.map +1 -1
- package/lib/abstract-document-exporters/docx/xml-writer.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/xml-writer.js +1 -0
- package/lib/abstract-document-exporters/docx/xml-writer.js.map +1 -1
- package/lib/abstract-document-exporters/docx2/render-image.js +1 -1
- package/lib/abstract-document-exporters/docx2/render-image.js.map +1 -1
- package/lib/abstract-document-exporters/docx2/render.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx2/render.js +9 -5
- package/lib/abstract-document-exporters/docx2/render.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/font.js +1 -0
- package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/measure.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/measure.js +3 -2
- package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/paginate.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/paginate.js +3 -2
- package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/pre-process.js +2 -1
- package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/render-image.js +1 -1
- package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/render.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/render.js +1 -0
- package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/std-fonts.js +1 -1
- package/lib/abstract-document-exporters/pdf/textRunRow.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/textRunRow.js +21 -15
- package/lib/abstract-document-exporters/pdf/textRunRow.js.map +1 -1
- package/lib/abstract-document-jsx/index.js.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/creator.d.ts.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js +7 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js.map +1 -1
- package/package.json +4 -4
- package/src/abstract-document/atoms/line-break.ts +1 -1
- package/src/abstract-document/atoms/link-target.ts +1 -1
- package/src/abstract-document/atoms/text-run.ts +1 -0
- package/src/abstract-document/markdown/markdown.ts +2 -2
- package/src/abstract-document/numberings/numbering-format.ts +1 -7
- package/src/abstract-document/primitives/layout-foundation-color.ts +4 -4
- package/src/abstract-document/primitives/layout-foundation.ts +1 -1
- package/src/abstract-document/primitives/point.ts +1 -1
- package/src/abstract-document/section-elements/paragraph.ts +1 -1
- package/src/abstract-document/styles/paragraph-style.ts +1 -1
- package/src/abstract-document/styles/table-cell-style.ts +1 -8
- package/src/abstract-document/styles/table-style.ts +1 -1
- package/src/abstract-document/styles/text-style.ts +20 -20
- package/src/abstract-document-exporters/docx/string-utils.ts +1 -5
- package/src/abstract-document-exporters/docx/xml-writer.ts +1 -0
- package/src/abstract-document-exporters/docx2/render-image.ts +5 -5
- package/src/abstract-document-exporters/docx2/render.ts +62 -40
- package/src/abstract-document-exporters/pdf/font.ts +11 -10
- package/src/abstract-document-exporters/pdf/measure.ts +4 -2
- package/src/abstract-document-exporters/pdf/paginate.ts +11 -6
- package/src/abstract-document-exporters/pdf/pre-process.ts +2 -1
- package/src/abstract-document-exporters/pdf/render-image.ts +9 -9
- package/src/abstract-document-exporters/pdf/render.ts +1 -0
- package/src/abstract-document-exporters/pdf/std-fonts.ts +1 -1
- package/src/abstract-document-exporters/pdf/textRunRow.ts +108 -74
- package/src/abstract-document-jsx/index.ts +1 -1
- package/src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts +10 -10
- package/src/abstract-document-xml/abstract-doc-of-xml/creator.ts +7 -1
- package/src/abstract-document-xml/xsd-template/styles.ts +1 -1
- package/lib/abstract-document/table/text-row.d.ts +0 -2
- package/lib/abstract-document/table/text-row.d.ts.map +0 -1
- package/lib/abstract-document/table/text-row.js +0 -2
- package/lib/abstract-document/table/text-row.js.map +0 -1
- package/lib/abstract-document-exporters/docx/docx-document-renderer.d.ts +0 -2
- package/lib/abstract-document-exporters/docx/docx-document-renderer.d.ts.map +0 -1
- package/lib/abstract-document-exporters/docx/docx-document-renderer.js +0 -1085
- package/lib/abstract-document-exporters/docx/docx-document-renderer.js.map +0 -1
- package/src/abstract-document/table/text-row.ts +0 -0
- package/src/abstract-document-exporters/docx/docx-document-renderer.ts +0 -1084
|
@@ -21,7 +21,7 @@ export function renderImage(image: Image, textStyle: TextStyle, resources: AD.Re
|
|
|
21
21
|
const firstComp = aImage.components[0];
|
|
22
22
|
const resource =
|
|
23
23
|
!aImage.size.width && !aImage.size.height && firstComp?.type === "binaryimage" && firstComp.data.type === "url"
|
|
24
|
-
? resources.imageResources?.[firstComp.data.url] ?? image.imageResource
|
|
24
|
+
? (resources.imageResources?.[firstComp.data.url] ?? image.imageResource)
|
|
25
25
|
: image.imageResource;
|
|
26
26
|
|
|
27
27
|
const rect = resourceRect(resource, {
|
|
@@ -307,15 +307,15 @@ function textComponentToSvg(component: AbstractImage.Text): string {
|
|
|
307
307
|
component.horizontalGrowthDirection === "left"
|
|
308
308
|
? "end"
|
|
309
309
|
: component.horizontalGrowthDirection === "uniform"
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
? "middle"
|
|
311
|
+
: "start";
|
|
312
312
|
|
|
313
313
|
const dominantBaseline =
|
|
314
314
|
component.verticalGrowthDirection === "up"
|
|
315
315
|
? "text-after-edge"
|
|
316
316
|
: component.verticalGrowthDirection === "uniform"
|
|
317
|
-
|
|
318
|
-
|
|
317
|
+
? "middle"
|
|
318
|
+
: "text-before-edge";
|
|
319
319
|
|
|
320
320
|
return `<text x="${component.position.x}" y="${component.position.y}" font-family="${escapeXml(
|
|
321
321
|
component.fontFamily
|
|
@@ -39,23 +39,27 @@ const abstractDocPixelToDocxDXARatio = 20;
|
|
|
39
39
|
const abstractDocBorderToDocxBorderSizeRatio = 8;
|
|
40
40
|
|
|
41
41
|
export function exportToHTML5Blob(doc: AD.AbstractDoc.AbstractDoc): Promise<Blob> {
|
|
42
|
-
return new Promise((resolve) => {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
43
|
const docx = createDocument(doc);
|
|
44
|
-
Packer.toBlob(docx)
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
Packer.toBlob(docx)
|
|
45
|
+
.then((blob) => {
|
|
46
|
+
resolve(blob);
|
|
47
|
+
})
|
|
48
|
+
.catch(reject);
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
export function exportToStream(blobStream: NodeJS.WritableStream, doc: AD.AbstractDoc.AbstractDoc): void {
|
|
51
53
|
const docx = createDocument(doc);
|
|
52
54
|
|
|
53
|
-
Packer.toBuffer(docx)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
Packer.toBuffer(docx)
|
|
56
|
+
.then((buffer) => {
|
|
57
|
+
const readableStream = new Readable();
|
|
58
|
+
readableStream.push(buffer);
|
|
59
|
+
readableStream.push(null);
|
|
60
|
+
readableStream.pipe(blobStream);
|
|
61
|
+
})
|
|
62
|
+
.catch((err: unknown) => blobStream.emit("error", err instanceof Error ? err : new Error(String(err))));
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
/**
|
|
@@ -85,28 +89,40 @@ function renderSection(section: AD.Section.Section, parentResources: AD.Resource
|
|
|
85
89
|
|
|
86
90
|
const resources = AD.Resources.mergeResources([parentResources, section]);
|
|
87
91
|
|
|
88
|
-
const headerChildren = section.page.header.reduce(
|
|
89
|
-
sofar
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
const headerChildren = section.page.header.reduce(
|
|
93
|
+
(sofar, c) => {
|
|
94
|
+
sofar.push(...renderSectionElement(c, resources, contentAvailableWidth));
|
|
95
|
+
return sofar;
|
|
96
|
+
},
|
|
97
|
+
[] as Array<Paragraph | Table>
|
|
98
|
+
);
|
|
92
99
|
|
|
93
100
|
const firstpageHeaderChildren = hasFrontHeader
|
|
94
|
-
? section.page.frontHeader.reduce(
|
|
95
|
-
sofar
|
|
96
|
-
|
|
97
|
-
|
|
101
|
+
? section.page.frontHeader.reduce(
|
|
102
|
+
(sofar, c) => {
|
|
103
|
+
sofar.push(...renderSectionElement(c, resources, contentAvailableWidth));
|
|
104
|
+
return sofar;
|
|
105
|
+
},
|
|
106
|
+
[] as Array<Paragraph | Table>
|
|
107
|
+
)
|
|
98
108
|
: [];
|
|
99
109
|
|
|
100
|
-
const footerChildren = section.page.footer.reduce(
|
|
101
|
-
sofar
|
|
102
|
-
|
|
103
|
-
|
|
110
|
+
const footerChildren = section.page.footer.reduce(
|
|
111
|
+
(sofar, c) => {
|
|
112
|
+
sofar.push(...renderSectionElement(c, resources, contentAvailableWidth));
|
|
113
|
+
return sofar;
|
|
114
|
+
},
|
|
115
|
+
[] as Array<Paragraph | Table>
|
|
116
|
+
);
|
|
104
117
|
|
|
105
118
|
const firstPageFooterChildren = hasFrontFooter
|
|
106
|
-
? section.page.frontFooter.reduce(
|
|
107
|
-
sofar
|
|
108
|
-
|
|
109
|
-
|
|
119
|
+
? section.page.frontFooter.reduce(
|
|
120
|
+
(sofar, c) => {
|
|
121
|
+
sofar.push(...renderSectionElement(c, resources, contentAvailableWidth));
|
|
122
|
+
return sofar;
|
|
123
|
+
},
|
|
124
|
+
[] as Array<Paragraph | Table>
|
|
125
|
+
)
|
|
110
126
|
: [];
|
|
111
127
|
|
|
112
128
|
const contentChildren = [
|
|
@@ -119,10 +135,13 @@ function renderSection(section: AD.Section.Section, parentResources: AD.Resource
|
|
|
119
135
|
}),
|
|
120
136
|
],
|
|
121
137
|
}),
|
|
122
|
-
...section.children.reduce(
|
|
123
|
-
sofar
|
|
124
|
-
|
|
125
|
-
|
|
138
|
+
...section.children.reduce(
|
|
139
|
+
(sofar, c) => {
|
|
140
|
+
sofar.push(...renderSectionElement(c, resources, contentAvailableWidth));
|
|
141
|
+
return sofar;
|
|
142
|
+
},
|
|
143
|
+
[] as Array<Paragraph | Table>
|
|
144
|
+
),
|
|
126
145
|
];
|
|
127
146
|
|
|
128
147
|
return {
|
|
@@ -266,8 +285,8 @@ function renderTable(
|
|
|
266
285
|
style.alignment === "Left"
|
|
267
286
|
? AlignmentType.LEFT
|
|
268
287
|
: style.alignment === "Right"
|
|
269
|
-
|
|
270
|
-
|
|
288
|
+
? AlignmentType.RIGHT
|
|
289
|
+
: AlignmentType.CENTER,
|
|
271
290
|
margins: {
|
|
272
291
|
top: styleMargins.top * abstractDocPixelToDocxDXARatio,
|
|
273
292
|
bottom: styleMargins.bottom * abstractDocPixelToDocxDXARatio,
|
|
@@ -368,8 +387,8 @@ function renderCell(
|
|
|
368
387
|
(style.verticalAlignment && style.verticalAlignment === "Top"
|
|
369
388
|
? VerticalAlign.TOP
|
|
370
389
|
: style.verticalAlignment === "Bottom"
|
|
371
|
-
|
|
372
|
-
|
|
390
|
+
? VerticalAlign.BOTTOM
|
|
391
|
+
: VerticalAlign.CENTER) || undefined,
|
|
373
392
|
shading: {
|
|
374
393
|
fill: style.background ? style.background : undefined,
|
|
375
394
|
},
|
|
@@ -408,10 +427,13 @@ function renderCell(
|
|
|
408
427
|
},
|
|
409
428
|
},
|
|
410
429
|
|
|
411
|
-
children: cell.children.reduce(
|
|
412
|
-
sofar
|
|
413
|
-
|
|
414
|
-
|
|
430
|
+
children: cell.children.reduce(
|
|
431
|
+
(sofar, c) => {
|
|
432
|
+
sofar.push(...renderSectionElement(c, resources, abstractDocPxCellWidth, keepNext));
|
|
433
|
+
return sofar;
|
|
434
|
+
},
|
|
435
|
+
[] as Array<Paragraph | Table>
|
|
436
|
+
),
|
|
415
437
|
});
|
|
416
438
|
}
|
|
417
439
|
|
|
@@ -581,8 +603,8 @@ function renderParagraph(
|
|
|
581
603
|
(style.alignment === "Center"
|
|
582
604
|
? AlignmentType.CENTER
|
|
583
605
|
: style.alignment === "End"
|
|
584
|
-
|
|
585
|
-
|
|
606
|
+
? AlignmentType.END
|
|
607
|
+
: AlignmentType.START)) ||
|
|
586
608
|
undefined,
|
|
587
609
|
|
|
588
610
|
spacing: {
|
|
@@ -33,16 +33,16 @@ function getFontWeightFromStyle(textStyle: AD.TextStyle.TextStyle): TextFontWeig
|
|
|
33
33
|
return textStyle.fontWeight
|
|
34
34
|
? textStyle.fontWeight
|
|
35
35
|
: textStyle.light
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
? "light"
|
|
37
|
+
: textStyle.normal
|
|
38
|
+
? "normal"
|
|
39
|
+
: textStyle.bold
|
|
40
|
+
? "bold"
|
|
41
|
+
: textStyle.mediumBold
|
|
42
|
+
? "mediumBold"
|
|
43
|
+
: textStyle.extraBold
|
|
44
|
+
? "extraBold"
|
|
45
|
+
: "normal";
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function getFontWeightFromAttributes(attribs: Record<string, string>): TextFontWeight {
|
|
@@ -57,6 +57,7 @@ export function getFontNameStyle(textStyle: AD.TextStyle.TextStyle): string {
|
|
|
57
57
|
|
|
58
58
|
export function getFontStyleName(attributes: Record<string, string>): keyof Font {
|
|
59
59
|
const fontWeight = getFontWeightFromAttributes(attributes);
|
|
60
|
+
// oxlint-disable-next-line typescript/no-unnecessary-template-expression
|
|
60
61
|
const stringifiedItalic = `${attributes["italic"]}`;
|
|
61
62
|
const italic = stringifiedItalic === "true" || stringifiedItalic === "1";
|
|
62
63
|
if (fontWeight === "normal") {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as AD from "../../abstract-document/index.js";
|
|
2
2
|
import { exhaustiveCheck } from "ts-exhaustive-check";
|
|
3
|
+
// oxlint-disable-next-line import/no-cycle -- type-only, erased at compile time
|
|
3
4
|
import type { Page } from "./paginate.js";
|
|
5
|
+
// oxlint-disable-next-line import/no-cycle -- both sides only call each other from function bodies
|
|
4
6
|
import { getHeaderAndFooter } from "./paginate.js";
|
|
5
7
|
import { registerFonts, getFontNameStyle } from "./font.js";
|
|
6
8
|
|
|
@@ -303,7 +305,7 @@ export function measureTable(
|
|
|
303
305
|
return a.child.rowSpan - b.child.rowSpan;
|
|
304
306
|
}
|
|
305
307
|
});
|
|
306
|
-
const minRowHeights =
|
|
308
|
+
const minRowHeights = Array.from({ length: rows.length }, () => 0);
|
|
307
309
|
for (const { child, rowIndex } of cells) {
|
|
308
310
|
const rowSpan = child.rowSpan || 1;
|
|
309
311
|
let currentHeight = 0;
|
|
@@ -488,7 +490,7 @@ function measureImage(
|
|
|
488
490
|
const firstComp = ai.components[0];
|
|
489
491
|
const resource =
|
|
490
492
|
!ai.size.width && !ai.size.height && firstComp?.type === "binaryimage" && firstComp.data.type === "url"
|
|
491
|
-
? resources.imageResources?.[firstComp.data.url] ?? image.imageResource
|
|
493
|
+
? (resources.imageResources?.[firstComp.data.url] ?? image.imageResource)
|
|
492
494
|
: image.imageResource;
|
|
493
495
|
|
|
494
496
|
let desiredWidth = availableSize.width;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as AD from "../../abstract-document/index.js";
|
|
2
2
|
import { getResources } from "../shared/get_resources.js";
|
|
3
3
|
import { registerFonts } from "./font.js";
|
|
4
|
+
// oxlint-disable-next-line import/no-cycle -- both sides only call each other from function bodies
|
|
4
5
|
import { measureTable } from "./measure.js";
|
|
5
6
|
|
|
6
7
|
export interface PageColumn {
|
|
@@ -280,12 +281,16 @@ export function getHeaderAndFooter(
|
|
|
280
281
|
return {
|
|
281
282
|
footer: normalFooter ? section.page.footer : section.page.frontFooter,
|
|
282
283
|
header: normalHeader ? section.page.header : section.page.frontHeader,
|
|
283
|
-
headerMargins: AD.LayoutFoundation.orDefault(
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
284
|
+
headerMargins: AD.LayoutFoundation.orDefault(
|
|
285
|
+
normalHeader
|
|
286
|
+
? section.page.style.headerMargins
|
|
287
|
+
: (section.page.style.firstPageHeaderMargins ?? section.page.style.headerMargins)
|
|
288
|
+
),
|
|
289
|
+
footerMargins: AD.LayoutFoundation.orDefault(
|
|
290
|
+
normalFooter
|
|
291
|
+
? section.page.style.footerMargins
|
|
292
|
+
: (section.page.style.firstPageFooterMargins ?? section.page.style.footerMargins)
|
|
293
|
+
),
|
|
289
294
|
};
|
|
290
295
|
}
|
|
291
296
|
case pageNo === 0:
|
|
@@ -183,7 +183,8 @@ function adjustParagraph(paragraph: AD.Paragraph.Paragraph): Array<AD.SectionEle
|
|
|
183
183
|
if (child.type === "TextRun") {
|
|
184
184
|
// Pdfkit will automatically split texts on "\n", which would not match with out measuring.
|
|
185
185
|
// Fix this by replacing "\n" with a LineBreak
|
|
186
|
-
|
|
186
|
+
// oxlint-disable-next-line typescript/no-unnecessary-type-conversion -- text isn't always a string at runtime
|
|
187
|
+
const text = String(child.text);
|
|
187
188
|
const lines = text.split("\n");
|
|
188
189
|
|
|
189
190
|
for (let i = 0; i < lines.length; i++) {
|
|
@@ -17,7 +17,7 @@ export function renderImage(
|
|
|
17
17
|
const firstComp = ai.components[0];
|
|
18
18
|
const resource =
|
|
19
19
|
!ai.size.width && !ai.size.height && firstComp?.type === "binaryimage" && firstComp.data.type === "url"
|
|
20
|
-
? resources.imageResources?.[firstComp.data.url] ?? image.imageResource
|
|
20
|
+
? (resources.imageResources?.[firstComp.data.url] ?? image.imageResource)
|
|
21
21
|
: image.imageResource;
|
|
22
22
|
|
|
23
23
|
const position = AD.Point.create(finalRect.x, finalRect.y);
|
|
@@ -37,15 +37,15 @@ export function renderImage(
|
|
|
37
37
|
image.horizontalAlignment === "Center"
|
|
38
38
|
? (rect.width - drawnW) / 2
|
|
39
39
|
: image.horizontalAlignment === "Right"
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
? rect.width - drawnW
|
|
41
|
+
: 0;
|
|
42
42
|
|
|
43
43
|
const offsetY =
|
|
44
44
|
image.verticalAlignment === "Center"
|
|
45
45
|
? (rect.height - drawnH) / 2
|
|
46
46
|
: image.verticalAlignment === "Bottom"
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
? rect.height - drawnH
|
|
48
|
+
: 0;
|
|
49
49
|
|
|
50
50
|
pdf.save();
|
|
51
51
|
pdf.translate(position.x + offsetX, position.y + offsetY).scale(scale);
|
|
@@ -162,14 +162,14 @@ function abstractComponentToPdf(
|
|
|
162
162
|
component.horizontalGrowthDirection === "left"
|
|
163
163
|
? -stringWidth
|
|
164
164
|
: component.horizontalGrowthDirection === "uniform"
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
? -stringWidth * 0.5
|
|
166
|
+
: 0;
|
|
167
167
|
const dy =
|
|
168
168
|
component.verticalGrowthDirection === "up"
|
|
169
169
|
? -stringHeight
|
|
170
170
|
: component.verticalGrowthDirection === "uniform"
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
? -stringHeight * 0.5
|
|
172
|
+
: 0;
|
|
173
173
|
pdf
|
|
174
174
|
.font(font)
|
|
175
175
|
.fontSize(component.fontSize)
|
|
@@ -8,6 +8,7 @@ import { renderImage } from "./render-image.js";
|
|
|
8
8
|
import { registerFonts, getFontNameStyle } from "./font.js";
|
|
9
9
|
import { registerDefaultStdFonts } from "./std-fonts.js";
|
|
10
10
|
import { toBlob, toBytes } from "pdfkit/output";
|
|
11
|
+
// oxlint-disable-next-line import/no-named-as-default -- standard pdfkit import idiom
|
|
11
12
|
import PDFDocument from "pdfkit";
|
|
12
13
|
import type { PdfKitAlignment } from "./textRunRow.js";
|
|
13
14
|
import { rowsCombineTextRuns, rowsSplit } from "./textRunRow.js";
|
|
@@ -14,7 +14,7 @@ const pdfkitExports = PdfkitModule as unknown as {
|
|
|
14
14
|
registerStdFonts?: (...fonts: ReadonlyArray<unknown>) => void;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
//
|
|
17
|
+
// oxlint-disable-next-line functional/no-let
|
|
18
18
|
let registered = false;
|
|
19
19
|
|
|
20
20
|
export function registerDefaultStdFonts(): void {
|