abstract-document 10.0.4 → 11.0.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/CHANGELOG.md +6 -0
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.js +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.js +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.js +1 -1
- package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images-overflow.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images-overflow.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images-overflow.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-dasharray.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-dasharray.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-dasharray.js.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.d.ts.map +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.js +1 -1
- package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/font.d.ts +1 -1
- package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/font.js +19 -19
- package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/measure.d.ts +4 -3
- package/lib/abstract-document-exporters/pdf/measure.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/measure.js +24 -24
- package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/paginate.d.ts +2 -1
- package/lib/abstract-document-exporters/pdf/paginate.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/paginate.js +3 -7
- package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/render-image.d.ts +2 -1
- package/lib/abstract-document-exporters/pdf/render-image.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/render-image.js +2 -8
- package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/render.d.ts +3 -2
- package/lib/abstract-document-exporters/pdf/render.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/render.js +26 -36
- package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
- package/lib/abstract-document-xml/parse-xml/parse-xml.d.ts +2 -2
- package/lib/abstract-document-xml/parse-xml/parse-xml.d.ts.map +1 -1
- package/lib/abstract-document-xml/parse-xml/parse-xml.js.map +1 -1
- package/package.json +12 -13
- package/src/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-image.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Group.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Header and footer.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Header → footer.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed hyperlink and textrun.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed hyperlink → textrun.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed textrun and images.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed textrun → images.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple images.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple tables.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Center alignment.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with End alignment.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment that linebreaks.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Page numbering.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table colSpan and rowSpan.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table colSpan → rowSpan.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table without rows.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single hyperlink.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single image.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment that linebreaks.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment that linebreaks.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment that linebreaks.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/hello with Arial font.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/hello.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/letter-dimensions.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/page-orientation-landscape.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/page-orientation-portrait.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/tocSeparator.docx +0 -0
- package/src/abstract-document-exporters/__tests__/docx2/tmp/world.docx +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images-overflow.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-dasharray.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image.tsx +1 -1
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Absolute position group.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Absolute position header and footer.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Absolute position paragraph.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Absolute position section in group.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Absolute position section in table.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Absolute position table.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Paragraphs.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Tables.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Group no keeptogether.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Group too big for one page.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Header and footer.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Hyperlink internal linktarget.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Hyperlink internal.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Manual line break.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Manual line breaks empty lines.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed hyperlink and textrun no underline.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed hyperlink and textrun with underline.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed hyperlink and textrun.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed textrun and images.pdf and b/package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed textrun → images.pdf +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images overflow.pdf +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images.pdf +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Center alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with End alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment that linebreaks.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Page numbering.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table row that doesnt fit page.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table single row.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with group.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with header 2.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with header.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin bottom.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin top single table.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin top.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with rowSpan multipages.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with rowSpan.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all auto.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all fix.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table background.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of image.pdf +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of text.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table center alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table colSpan and rowSpan.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table minimal row height.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table mix auto fix.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table padding.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table right alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table row alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell with wrapping.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with default colored borders.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with header.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with multi colored borders.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with single colored borders.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single date.pdf +3 -3
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single figure.pdf +13 -15
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink centered.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink no underline.pdf +17 -19
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink right aligned.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image from URL.pdf +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color hex.pdf +13 -17
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color name.pdf +13 -17
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color url.pdf +12 -18
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg dasharray.pdf +12 -16
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image.pdf +0 -0
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun baseline alphabetic.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun baseline bottom.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun baseline hanging.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun baseline middle.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun baseline top.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment that linebreaks.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment that linebreaks.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Justify alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment that linebreaks.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with super and subscripts.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/Table of content separator.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/hello with roman font.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/hello.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/pagebreak.pdf +2 -2
- package/src/abstract-document-exporters/__tests__/pdf/tmp/world.pdf +2 -2
- package/src/abstract-document-exporters/pdf/font.ts +19 -20
- package/src/abstract-document-exporters/pdf/measure.ts +34 -30
- package/src/abstract-document-exporters/pdf/paginate.ts +15 -14
- package/src/abstract-document-exporters/pdf/render-image.ts +4 -7
- package/src/abstract-document-exporters/pdf/render.ts +72 -54
- package/src/abstract-document-xml/parse-xml/parse-xml.ts +2 -2
|
@@ -5,26 +5,30 @@ import { registerFonts, getFontNameStyle } from "./font";
|
|
|
5
5
|
|
|
6
6
|
//tslint:disable:no-any variable-name
|
|
7
7
|
|
|
8
|
-
export function measure(
|
|
9
|
-
let pdf = new
|
|
8
|
+
export function measure(pdfKit: PDFKit.PDFDocument, document: AD.AbstractDoc.AbstractDoc): Map<any, AD.Size.Size> {
|
|
9
|
+
let pdf = new pdfKit();
|
|
10
10
|
registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
|
|
11
11
|
return mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export function measurePages(
|
|
15
|
-
|
|
15
|
+
pdfKit: PDFKit.PDFDocument,
|
|
16
16
|
document: AD.AbstractDoc.AbstractDoc,
|
|
17
17
|
pages: ReadonlyArray<Page>
|
|
18
18
|
): Map<any, AD.Size.Size> {
|
|
19
|
-
let pdf = new
|
|
20
|
-
registerFonts(
|
|
19
|
+
let pdf = new pdfKit();
|
|
20
|
+
registerFonts(
|
|
21
|
+
(fontName: string, fontSource: AD.Font.FontSource, fontFamily: string) =>
|
|
22
|
+
pdf.registerFont(fontName, fontSource, fontFamily),
|
|
23
|
+
document
|
|
24
|
+
);
|
|
21
25
|
return mergeMaps(
|
|
22
26
|
pages.map((page) => measureSection(pdf, document, page.section, page.header, page.footer, page.elements))
|
|
23
27
|
);
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
function measureSection(
|
|
27
|
-
|
|
31
|
+
pdfKit: PDFKit.PDFDocument,
|
|
28
32
|
parentResources: AD.Resources.Resources,
|
|
29
33
|
section: AD.Section.Section,
|
|
30
34
|
separateHeader?: ReadonlyArray<AD.SectionElement.SectionElement>,
|
|
@@ -42,23 +46,23 @@ function measureSection(
|
|
|
42
46
|
const contentAvailableWidth =
|
|
43
47
|
pageWidth - (section.page.style.contentMargins.left + section.page.style.contentMargins.right);
|
|
44
48
|
const contentAvailableSize = AD.Size.create(contentAvailableWidth, pageHeight);
|
|
45
|
-
const sectionSizes = children.map((e) => measureSectionElement(
|
|
49
|
+
const sectionSizes = children.map((e) => measureSectionElement(pdfKit, resources, contentAvailableSize, e));
|
|
46
50
|
|
|
47
51
|
const headerAvailableWidth =
|
|
48
52
|
pageWidth - (section.page.style.headerMargins.left + section.page.style.headerMargins.right);
|
|
49
53
|
const headerAvailableSize = AD.Size.create(headerAvailableWidth, pageHeight);
|
|
50
|
-
const headerSizes = header.map((e) => measureSectionElement(
|
|
54
|
+
const headerSizes = header.map((e) => measureSectionElement(pdfKit, resources, headerAvailableSize, e));
|
|
51
55
|
|
|
52
56
|
const footerAvailableWidth =
|
|
53
57
|
pageWidth - (section.page.style.footerMargins.left + section.page.style.footerMargins.right);
|
|
54
58
|
const footerAvailableSize = AD.Size.create(footerAvailableWidth, pageHeight);
|
|
55
|
-
const footerSizes = footer.map((e) => measureSectionElement(
|
|
59
|
+
const footerSizes = footer.map((e) => measureSectionElement(pdfKit, resources, footerAvailableSize, e));
|
|
56
60
|
|
|
57
61
|
return mergeMaps([...sectionSizes, ...headerSizes, ...footerSizes]);
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
function measureSectionElement(
|
|
61
|
-
pdf:
|
|
65
|
+
pdf: PDFKit.PDFDocument,
|
|
62
66
|
parentResources: AD.Resources.Resources,
|
|
63
67
|
availableSize: AD.Size.Size,
|
|
64
68
|
element: AD.SectionElement.SectionElement
|
|
@@ -85,7 +89,7 @@ function measurePageBreak(availableSize: AD.Size.Size, pageBreak: AD.PageBreak.P
|
|
|
85
89
|
}
|
|
86
90
|
|
|
87
91
|
function measureParagraph(
|
|
88
|
-
|
|
92
|
+
pdfKit: PDFKit.PDFDocument,
|
|
89
93
|
resources: AD.Resources.Resources,
|
|
90
94
|
availableSize: AD.Size.Size,
|
|
91
95
|
paragraph: AD.Paragraph.Paragraph
|
|
@@ -129,7 +133,7 @@ function measureParagraph(
|
|
|
129
133
|
hasAtomImage = true;
|
|
130
134
|
}
|
|
131
135
|
const atomSize = measureAtom(
|
|
132
|
-
|
|
136
|
+
pdfKit,
|
|
133
137
|
resources,
|
|
134
138
|
style.textStyle,
|
|
135
139
|
contentAvailableSize,
|
|
@@ -154,7 +158,7 @@ function measureParagraph(
|
|
|
154
158
|
} else if (hasAtomImage) {
|
|
155
159
|
paragraphHeight += desiredHeight + currentRowHeight;
|
|
156
160
|
} else {
|
|
157
|
-
paragraphHeight +=
|
|
161
|
+
paragraphHeight += pdfKit.heightOfString(concatenatedText, {
|
|
158
162
|
width: textOptions && textOptions.lineBreak === false ? Infinity : availableSize.width,
|
|
159
163
|
...textOptions,
|
|
160
164
|
});
|
|
@@ -192,7 +196,7 @@ function getBiggestStyle(
|
|
|
192
196
|
}
|
|
193
197
|
|
|
194
198
|
export function measureTable(
|
|
195
|
-
|
|
199
|
+
pdfKit: PDFKit.PDFDocument,
|
|
196
200
|
resources: AD.Resources.Resources,
|
|
197
201
|
availableSize: AD.Size.Size,
|
|
198
202
|
table: AD.Table.Table
|
|
@@ -228,7 +232,7 @@ export function measureTable(
|
|
|
228
232
|
|
|
229
233
|
for (let element of cell.children) {
|
|
230
234
|
const elementAvailableSize = AD.Size.create(contentAvailableWidth, Infinity);
|
|
231
|
-
const elementSizes = measureSectionElement(
|
|
235
|
+
const elementSizes = measureSectionElement(pdfKit, resources, elementAvailableSize, element);
|
|
232
236
|
elementSizes.forEach((v, k) => desiredSizes.set(k, v));
|
|
233
237
|
const elementSize = getDesiredSize(element, desiredSizes);
|
|
234
238
|
if (!AD.Position.isPositionAbsolute(element)) {
|
|
@@ -290,13 +294,13 @@ export function measureTable(
|
|
|
290
294
|
}
|
|
291
295
|
|
|
292
296
|
function measureGroup(
|
|
293
|
-
|
|
297
|
+
pdfKit: PDFKit.PDFDocument,
|
|
294
298
|
resources: AD.Resources.Resources,
|
|
295
299
|
availableSize: AD.Size.Size,
|
|
296
300
|
keepTogether: AD.Group.Group
|
|
297
301
|
): Map<any, AD.Size.Size> {
|
|
298
302
|
let desiredSizes = mergeMaps(
|
|
299
|
-
keepTogether.children.map((e) => measureSectionElement(
|
|
303
|
+
keepTogether.children.map((e) => measureSectionElement(pdfKit, resources, availableSize, e))
|
|
300
304
|
);
|
|
301
305
|
let desiredHeight = keepTogether.children.reduce(
|
|
302
306
|
(sum, e) => sum + (AD.Position.isPositionAbsolute(e) ? 0 : getDesiredSize(e, desiredSizes).height),
|
|
@@ -307,7 +311,7 @@ function measureGroup(
|
|
|
307
311
|
}
|
|
308
312
|
|
|
309
313
|
function measureAtom(
|
|
310
|
-
|
|
314
|
+
pdfKit: PDFKit.PDFDocument,
|
|
311
315
|
resources: AD.Resources.Resources,
|
|
312
316
|
textStyle: AD.TextStyle.TextStyle,
|
|
313
317
|
availableSize: AD.Size.Size,
|
|
@@ -316,17 +320,17 @@ function measureAtom(
|
|
|
316
320
|
): AD.Size.Size {
|
|
317
321
|
switch (atom.type) {
|
|
318
322
|
case "TextRun":
|
|
319
|
-
return measureTextRun(
|
|
323
|
+
return measureTextRun(pdfKit, resources, textStyle, atom, availableSize);
|
|
320
324
|
case "TextField":
|
|
321
|
-
return measureTextField(
|
|
325
|
+
return measureTextField(pdfKit, resources, textStyle, atom, availableSize);
|
|
322
326
|
case "Image":
|
|
323
327
|
return measureImage(availableSize, atom);
|
|
324
328
|
case "HyperLink":
|
|
325
|
-
return measureHyperLink(
|
|
329
|
+
return measureHyperLink(pdfKit, resources, textStyle, atom, availableSize);
|
|
326
330
|
case "TocSeparator":
|
|
327
|
-
return measureTocSeparator(
|
|
331
|
+
return measureTocSeparator(pdfKit, textStyle, availableSize, availableRowSpace);
|
|
328
332
|
case "LineBreak":
|
|
329
|
-
return measureLineBreak(
|
|
333
|
+
return measureLineBreak(pdfKit, resources, textStyle, availableSize);
|
|
330
334
|
case "LinkTarget":
|
|
331
335
|
return {
|
|
332
336
|
width: availableSize.width,
|
|
@@ -338,12 +342,12 @@ function measureAtom(
|
|
|
338
342
|
}
|
|
339
343
|
|
|
340
344
|
function measureLineBreak(
|
|
341
|
-
|
|
345
|
+
pdfKit: PDFKit.PDFDocument,
|
|
342
346
|
resources: AD.Resources.Resources,
|
|
343
347
|
textStyle: AD.TextStyle.TextStyle,
|
|
344
348
|
availableSize: AD.Size.Size
|
|
345
349
|
): AD.Size.Size {
|
|
346
|
-
const textSize = measureText(
|
|
350
|
+
const textSize = measureText(pdfKit, "A", textStyle, availableSize);
|
|
347
351
|
return {
|
|
348
352
|
height: textSize.height,
|
|
349
353
|
width: 0,
|
|
@@ -351,7 +355,7 @@ function measureLineBreak(
|
|
|
351
355
|
}
|
|
352
356
|
|
|
353
357
|
function measureTextRun(
|
|
354
|
-
pdf:
|
|
358
|
+
pdf: PDFKit.PDFDocument,
|
|
355
359
|
resources: AD.Resources.Resources,
|
|
356
360
|
textStyle: AD.TextStyle.TextStyle,
|
|
357
361
|
textRun: AD.TextRun.TextRun,
|
|
@@ -369,7 +373,7 @@ function measureTextRun(
|
|
|
369
373
|
}
|
|
370
374
|
|
|
371
375
|
function measureHyperLink(
|
|
372
|
-
pdf:
|
|
376
|
+
pdf: PDFKit.PDFDocument,
|
|
373
377
|
resources: AD.Resources.Resources,
|
|
374
378
|
textStyle: AD.TextStyle.TextStyle,
|
|
375
379
|
hyperLink: AD.HyperLink.HyperLink,
|
|
@@ -386,7 +390,7 @@ function measureHyperLink(
|
|
|
386
390
|
}
|
|
387
391
|
|
|
388
392
|
function measureTextField(
|
|
389
|
-
pdf:
|
|
393
|
+
pdf: PDFKit.PDFDocument,
|
|
390
394
|
resources: AD.Resources.Resources,
|
|
391
395
|
textStyle: AD.TextStyle.TextStyle,
|
|
392
396
|
textField: AD.TextField.TextField,
|
|
@@ -412,7 +416,7 @@ function measureTextField(
|
|
|
412
416
|
}
|
|
413
417
|
|
|
414
418
|
function measureTocSeparator(
|
|
415
|
-
pdf:
|
|
419
|
+
pdf: PDFKit.PDFDocument,
|
|
416
420
|
textStyle: AD.TextStyle.TextStyle,
|
|
417
421
|
availableSize: AD.Size.Size,
|
|
418
422
|
availableRowSpace: number
|
|
@@ -431,7 +435,7 @@ function measureImage(availableSize: AD.Size.Size, image: AD.Image.Image): AD.Si
|
|
|
431
435
|
}
|
|
432
436
|
|
|
433
437
|
function measureText(
|
|
434
|
-
pdf:
|
|
438
|
+
pdf: PDFKit.PDFDocument,
|
|
435
439
|
text: string,
|
|
436
440
|
textStyle: AD.TextStyle.TextStyle,
|
|
437
441
|
availableSize: AD.Size.Size
|
|
@@ -3,8 +3,6 @@ import { getResources } from "../shared/get_resources";
|
|
|
3
3
|
import { registerFonts } from "./font";
|
|
4
4
|
import { measureTable } from "./measure";
|
|
5
5
|
|
|
6
|
-
/* tslint:disable:no-any */
|
|
7
|
-
|
|
8
6
|
export interface Page {
|
|
9
7
|
readonly pageNo: number;
|
|
10
8
|
readonly namedDestionations: ReadonlyArray<string>;
|
|
@@ -17,19 +15,18 @@ export interface Page {
|
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
export function paginate(
|
|
20
|
-
pdfKit:
|
|
18
|
+
pdfKit: PDFKit.PDFDocument,
|
|
21
19
|
document: AD.AbstractDoc.AbstractDoc,
|
|
22
20
|
desiredSizes: Map<any, AD.Size.Size>
|
|
23
21
|
): ReadonlyArray<Page> {
|
|
24
22
|
const resources = getResources(document);
|
|
25
|
-
let pdf = new pdfKit({
|
|
26
|
-
compress: false,
|
|
27
|
-
autoFirstPage: false,
|
|
28
|
-
bufferPages: true,
|
|
29
|
-
}) as any;
|
|
30
|
-
|
|
31
|
-
registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
|
|
23
|
+
let pdf = new pdfKit({ compress: false, autoFirstPage: false, bufferPages: true });
|
|
32
24
|
|
|
25
|
+
registerFonts(
|
|
26
|
+
(fontName: string, fontSource: AD.Font.FontSource, fontFamily: string) =>
|
|
27
|
+
pdf.registerFont(fontName, fontSource, fontFamily),
|
|
28
|
+
document
|
|
29
|
+
);
|
|
33
30
|
let pages = new Array<Page>();
|
|
34
31
|
for (let section of document.children) {
|
|
35
32
|
const previousPage = pages.length > 0 ? pages[pages.length - 1] : undefined;
|
|
@@ -40,7 +37,7 @@ export function paginate(
|
|
|
40
37
|
}
|
|
41
38
|
|
|
42
39
|
function splitSection(
|
|
43
|
-
pdfKit:
|
|
40
|
+
pdfKit: PDFKit.PDFDocument,
|
|
44
41
|
document: AD.AbstractDoc.AbstractDoc,
|
|
45
42
|
parentResources: AD.Resources.Resources,
|
|
46
43
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
@@ -138,7 +135,7 @@ function splitSection(
|
|
|
138
135
|
}
|
|
139
136
|
|
|
140
137
|
function splitTable(
|
|
141
|
-
pdfKit:
|
|
138
|
+
pdfKit: PDFKit.PDFDocument,
|
|
142
139
|
document: AD.AbstractDoc.AbstractDoc,
|
|
143
140
|
resources: AD.Resources.Resources,
|
|
144
141
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
@@ -370,7 +367,7 @@ function getDesiredSize(element: {}, desiredSizes: Map<{}, AD.Size.Size>): AD.Si
|
|
|
370
367
|
}
|
|
371
368
|
|
|
372
369
|
function splitTableAt(
|
|
373
|
-
pdfKit:
|
|
370
|
+
pdfKit: PDFKit.PDFDocument,
|
|
374
371
|
document: AD.AbstractDoc.AbstractDoc,
|
|
375
372
|
resources: AD.Resources.Resources,
|
|
376
373
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
@@ -420,7 +417,11 @@ function splitTableAt(
|
|
|
420
417
|
|
|
421
418
|
const availableSize = getDesiredSize(table, desiredSizes);
|
|
422
419
|
let pdf = new pdfKit();
|
|
423
|
-
registerFonts(
|
|
420
|
+
registerFonts(
|
|
421
|
+
(fontName: string, fontSource: AD.Font.FontSource, fontFamily: string) =>
|
|
422
|
+
pdf.registerFont(fontName, fontSource, fontFamily),
|
|
423
|
+
document
|
|
424
|
+
);
|
|
424
425
|
const headSizes = measureTable(pdf, resources, availableSize, tableHead);
|
|
425
426
|
const tailSizes = measureTable(pdf, resources, availableSize, tableTail);
|
|
426
427
|
|
|
@@ -6,13 +6,11 @@ import { getFontNameStyle, getFontName, isFontAvailable } from "./font";
|
|
|
6
6
|
|
|
7
7
|
export function renderImage(
|
|
8
8
|
resources: AD.Resources.Resources,
|
|
9
|
-
|
|
10
|
-
pdf: any,
|
|
9
|
+
pdf: PDFKit.PDFDocument,
|
|
11
10
|
finalRect: AD.Rect.Rect,
|
|
12
11
|
textStyle: AD.TextStyle.TextStyle,
|
|
13
12
|
image: AD.Image.Image
|
|
14
|
-
|
|
15
|
-
): any {
|
|
13
|
+
): void {
|
|
16
14
|
const aImage = image.imageResource.abstractImage;
|
|
17
15
|
const position = AD.Point.create(finalRect.x, finalRect.y);
|
|
18
16
|
const scaleX = finalRect.width / aImage.size.width;
|
|
@@ -26,8 +24,7 @@ export function renderImage(
|
|
|
26
24
|
|
|
27
25
|
function abstractComponentToPdf(
|
|
28
26
|
resources: AD.Resources.Resources,
|
|
29
|
-
|
|
30
|
-
pdf: any,
|
|
27
|
+
pdf: PDFKit.PDFDocument,
|
|
31
28
|
component: AbstractImage.Component,
|
|
32
29
|
textStyle: AD.TextStyle.TextStyle
|
|
33
30
|
): void {
|
|
@@ -213,6 +210,6 @@ function colorToOpacity(color: AbstractImage.Color): number {
|
|
|
213
210
|
return color.a / 255;
|
|
214
211
|
}
|
|
215
212
|
|
|
216
|
-
function colorToRgb(color: AbstractImage.Color):
|
|
213
|
+
function colorToRgb(color: AbstractImage.Color): [number, number, number] {
|
|
217
214
|
return [color.r, color.g, color.b];
|
|
218
215
|
}
|
|
@@ -11,8 +11,7 @@ export type PdfExportOptions = {
|
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export function exportToHTML5Blob(
|
|
14
|
-
|
|
15
|
-
pdfKit: any,
|
|
14
|
+
pdfKit: PDFKit.PDFDocument,
|
|
16
15
|
doc: AD.AbstractDoc.AbstractDoc,
|
|
17
16
|
options: PdfExportOptions = { compress: false }
|
|
18
17
|
): Promise<Blob> {
|
|
@@ -33,8 +32,8 @@ export function exportToHTML5Blob(
|
|
|
33
32
|
* @param options
|
|
34
33
|
*/
|
|
35
34
|
export function exportToStream(
|
|
36
|
-
pdfKit:
|
|
37
|
-
blobStream:
|
|
35
|
+
pdfKit: PDFKit.PDFDocument,
|
|
36
|
+
blobStream: any,
|
|
38
37
|
doc: AD.AbstractDoc.AbstractDoc,
|
|
39
38
|
options: PdfExportOptions = { compress: false }
|
|
40
39
|
): void {
|
|
@@ -42,12 +41,19 @@ export function exportToStream(
|
|
|
42
41
|
pdf.pipe(blobStream);
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
function createDocument(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
function createDocument(
|
|
45
|
+
pdfKit: PDFKit.PDFDocument,
|
|
46
|
+
options: PdfExportOptions,
|
|
47
|
+
ad: AD.AbstractDoc.AbstractDoc
|
|
48
|
+
): PDFKit.PDFDocument {
|
|
49
|
+
let pdf = new pdfKit({ ...options, autoFirstPage: false, bufferPages: true });
|
|
50
|
+
|
|
51
|
+
const document = preProcess(ad);
|
|
52
|
+
registerFonts(
|
|
53
|
+
(fontName: string, fontSource: AD.Font.FontSource, fontFamily: string) =>
|
|
54
|
+
pdf.registerFont(fontName, fontSource, fontFamily),
|
|
55
|
+
document
|
|
56
|
+
);
|
|
51
57
|
const desiredSizes = measure(pdfKit, document);
|
|
52
58
|
const pages = paginate(pdfKit, document, desiredSizes);
|
|
53
59
|
const updatedPages = updatePageRefs(pages);
|
|
@@ -62,7 +68,7 @@ function createDocument(pdfKit: any, options: PdfExportOptions, doc: AD.Abstract
|
|
|
62
68
|
|
|
63
69
|
function renderPage(
|
|
64
70
|
parentResources: AD.Resources.Resources,
|
|
65
|
-
|
|
71
|
+
pdfKit: PDFKit.PDFDocument,
|
|
66
72
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
67
73
|
page: Page
|
|
68
74
|
): void {
|
|
@@ -70,11 +76,11 @@ function renderPage(
|
|
|
70
76
|
const style = section.page.style;
|
|
71
77
|
const resources = AD.Resources.mergeResources([parentResources, section]);
|
|
72
78
|
const pageHeight = AD.PageStyle.getHeight(style);
|
|
73
|
-
const contentRect = addPage(
|
|
79
|
+
const contentRect = addPage(pdfKit, page);
|
|
74
80
|
|
|
75
81
|
page.namedDestionations.forEach((dest) => {
|
|
76
|
-
if (
|
|
77
|
-
|
|
82
|
+
if ((pdfKit as any).addNamedDestination) {
|
|
83
|
+
(pdfKit as any).addNamedDestination(dest);
|
|
78
84
|
}
|
|
79
85
|
});
|
|
80
86
|
|
|
@@ -86,7 +92,7 @@ function renderPage(
|
|
|
86
92
|
const isAbsolute = AD.Position.isPositionAbsolute(element);
|
|
87
93
|
renderSectionElement(
|
|
88
94
|
resources,
|
|
89
|
-
|
|
95
|
+
pdfKit,
|
|
90
96
|
desiredSizes,
|
|
91
97
|
AD.Rect.create(headerX, isAbsolute ? headerStart : headerY, elementSize.width, elementSize.height),
|
|
92
98
|
element
|
|
@@ -109,7 +115,7 @@ function renderPage(
|
|
|
109
115
|
const isAbsolute = AD.Position.isPositionAbsolute(element);
|
|
110
116
|
renderSectionElement(
|
|
111
117
|
resources,
|
|
112
|
-
|
|
118
|
+
pdfKit,
|
|
113
119
|
desiredSizes,
|
|
114
120
|
AD.Rect.create(footerX, isAbsolute ? footerStart : footerY, elementSize.width, elementSize.height),
|
|
115
121
|
element
|
|
@@ -126,7 +132,7 @@ function renderPage(
|
|
|
126
132
|
const isAbsolute = AD.Position.isPositionAbsolute(element);
|
|
127
133
|
renderSectionElement(
|
|
128
134
|
resources,
|
|
129
|
-
|
|
135
|
+
pdfKit,
|
|
130
136
|
desiredSizes,
|
|
131
137
|
AD.Rect.create(contentRect.x, isAbsolute ? elementStart : y, elementSize.width, elementSize.height),
|
|
132
138
|
element
|
|
@@ -137,22 +143,17 @@ function renderPage(
|
|
|
137
143
|
}
|
|
138
144
|
}
|
|
139
145
|
|
|
140
|
-
function addPage(pdf:
|
|
146
|
+
function addPage(pdf: PDFKit.PDFDocument, page: Page): AD.Rect.Rect {
|
|
141
147
|
const section = page.section;
|
|
142
148
|
const style = section.page.style;
|
|
143
149
|
// This is rotated later depending on the orientation.
|
|
144
150
|
const pageWidth = AD.PageStyle.getPaperWidth(style.paperSize);
|
|
145
151
|
const pageHeight = AD.PageStyle.getPaperHeight(style.paperSize);
|
|
146
152
|
const layout = style.orientation === "Landscape" ? "landscape" : "portrait";
|
|
147
|
-
const pageOptions = {
|
|
153
|
+
const pageOptions: PDFKit.PDFDocumentOptions = {
|
|
148
154
|
size: [pageWidth, pageHeight],
|
|
149
155
|
layout: layout,
|
|
150
|
-
margins: {
|
|
151
|
-
top: 0,
|
|
152
|
-
left: 0,
|
|
153
|
-
right: 0,
|
|
154
|
-
bottom: 0,
|
|
155
|
-
},
|
|
156
|
+
margins: { top: 0, left: 0, right: 0, bottom: 0 },
|
|
156
157
|
};
|
|
157
158
|
pdf.addPage(pageOptions);
|
|
158
159
|
return page.contentRect;
|
|
@@ -160,7 +161,7 @@ function addPage(pdf: any, page: Page): AD.Rect.Rect {
|
|
|
160
161
|
|
|
161
162
|
function renderSectionElement(
|
|
162
163
|
parentResources: AD.Resources.Resources,
|
|
163
|
-
pdf:
|
|
164
|
+
pdf: PDFKit.PDFDocument,
|
|
164
165
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
165
166
|
finalRect: AD.Rect.Rect,
|
|
166
167
|
element: AD.SectionElement.SectionElement
|
|
@@ -181,7 +182,7 @@ function renderSectionElement(
|
|
|
181
182
|
|
|
182
183
|
function renderGroup(
|
|
183
184
|
resources: AD.Resources.Resources,
|
|
184
|
-
|
|
185
|
+
pdfKit: PDFKit.PDFDocument,
|
|
185
186
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
186
187
|
finalRect: AD.Rect.Rect,
|
|
187
188
|
group: AD.Group.Group
|
|
@@ -194,7 +195,7 @@ function renderGroup(
|
|
|
194
195
|
const isAbsolute = AD.Position.isPositionAbsolute(element);
|
|
195
196
|
renderSectionElement(
|
|
196
197
|
resources,
|
|
197
|
-
|
|
198
|
+
pdfKit,
|
|
198
199
|
desiredSizes,
|
|
199
200
|
AD.Rect.create(finalX, isAbsolute ? startY : y, elementSize.width, elementSize.height),
|
|
200
201
|
element
|
|
@@ -207,7 +208,7 @@ function renderGroup(
|
|
|
207
208
|
|
|
208
209
|
function renderParagraph(
|
|
209
210
|
resources: AD.Resources.Resources,
|
|
210
|
-
|
|
211
|
+
pdfKit: PDFKit.PDFDocument,
|
|
211
212
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
212
213
|
finalRect: AD.Rect.Rect,
|
|
213
214
|
paragraph: AD.Paragraph.Paragraph
|
|
@@ -317,7 +318,7 @@ function renderParagraph(
|
|
|
317
318
|
const atomSize = getDesiredSize(atom, desiredSizes);
|
|
318
319
|
renderAtom(
|
|
319
320
|
resources,
|
|
320
|
-
|
|
321
|
+
pdfKit,
|
|
321
322
|
AD.Rect.create(x, y, atomSize.width, atomSize.height),
|
|
322
323
|
style.textStyle,
|
|
323
324
|
atom,
|
|
@@ -352,7 +353,7 @@ function parseAlignment(paragraphAlignment: AD.ParagraphStyle.TextAlignment | un
|
|
|
352
353
|
|
|
353
354
|
function renderAtom(
|
|
354
355
|
resources: AD.Resources.Resources,
|
|
355
|
-
|
|
356
|
+
pdfKit: PDFKit.PDFDocument,
|
|
356
357
|
finalRect: AD.Rect.Rect,
|
|
357
358
|
textStyle: AD.TextStyle.TextStyle,
|
|
358
359
|
atom: AD.Atom.Atom,
|
|
@@ -363,19 +364,39 @@ function renderAtom(
|
|
|
363
364
|
): void {
|
|
364
365
|
switch (atom.type) {
|
|
365
366
|
case "TextField":
|
|
366
|
-
renderTextField(
|
|
367
|
+
renderTextField(
|
|
368
|
+
resources,
|
|
369
|
+
pdfKit,
|
|
370
|
+
finalRect,
|
|
371
|
+
textStyle,
|
|
372
|
+
atom,
|
|
373
|
+
alignment,
|
|
374
|
+
isFirstAtom,
|
|
375
|
+
isLastAtom,
|
|
376
|
+
availableWidth
|
|
377
|
+
);
|
|
367
378
|
return;
|
|
368
379
|
case "TextRun":
|
|
369
|
-
renderTextRun(resources,
|
|
380
|
+
renderTextRun(resources, pdfKit, finalRect, textStyle, atom, alignment, isFirstAtom, isLastAtom, availableWidth);
|
|
370
381
|
return;
|
|
371
382
|
case "Image":
|
|
372
|
-
renderImage(resources,
|
|
383
|
+
renderImage(resources, pdfKit, finalRect, textStyle, atom);
|
|
373
384
|
return;
|
|
374
385
|
case "HyperLink":
|
|
375
|
-
renderHyperLink(
|
|
386
|
+
renderHyperLink(
|
|
387
|
+
resources,
|
|
388
|
+
pdfKit,
|
|
389
|
+
finalRect,
|
|
390
|
+
textStyle,
|
|
391
|
+
atom,
|
|
392
|
+
alignment,
|
|
393
|
+
isFirstAtom,
|
|
394
|
+
isLastAtom,
|
|
395
|
+
availableWidth
|
|
396
|
+
);
|
|
376
397
|
return;
|
|
377
398
|
case "TocSeparator":
|
|
378
|
-
renderTocSeparator(
|
|
399
|
+
renderTocSeparator(pdfKit, finalRect, textStyle, atom);
|
|
379
400
|
return;
|
|
380
401
|
case "LinkTarget":
|
|
381
402
|
return;
|
|
@@ -386,7 +407,7 @@ function renderAtom(
|
|
|
386
407
|
|
|
387
408
|
function renderTextField(
|
|
388
409
|
resources: AD.Resources.Resources,
|
|
389
|
-
|
|
410
|
+
pdfKit: PDFKit.PDFDocument,
|
|
390
411
|
finalRect: AD.Rect.Rect,
|
|
391
412
|
textStyle: AD.TextStyle.TextStyle,
|
|
392
413
|
textField: AD.TextField.TextField,
|
|
@@ -405,7 +426,7 @@ function renderTextField(
|
|
|
405
426
|
switch (textField.fieldType) {
|
|
406
427
|
case "Date":
|
|
407
428
|
drawText(
|
|
408
|
-
|
|
429
|
+
pdfKit,
|
|
409
430
|
finalRect,
|
|
410
431
|
style,
|
|
411
432
|
new Date(Date.now()).toDateString(),
|
|
@@ -419,7 +440,7 @@ function renderTextField(
|
|
|
419
440
|
case "TotalPages":
|
|
420
441
|
case "PageNumberOf":
|
|
421
442
|
if (textField.text) {
|
|
422
|
-
drawText(
|
|
443
|
+
drawText(pdfKit, finalRect, style, textField.text, alignment, isFirstAtom, isLastAtom, availableWidth);
|
|
423
444
|
}
|
|
424
445
|
return;
|
|
425
446
|
}
|
|
@@ -427,7 +448,7 @@ function renderTextField(
|
|
|
427
448
|
|
|
428
449
|
function renderTextRun(
|
|
429
450
|
resources: AD.Resources.Resources,
|
|
430
|
-
pdf:
|
|
451
|
+
pdf: PDFKit.PDFDocument,
|
|
431
452
|
finalRect: AD.Rect.Rect,
|
|
432
453
|
textStyle: AD.TextStyle.TextStyle,
|
|
433
454
|
textRun: AD.TextRun.TextRun,
|
|
@@ -450,7 +471,7 @@ function renderTextRun(
|
|
|
450
471
|
|
|
451
472
|
function renderHyperLink(
|
|
452
473
|
resources: AD.Resources.Resources,
|
|
453
|
-
pdf:
|
|
474
|
+
pdf: PDFKit.PDFDocument,
|
|
454
475
|
finalRect: AD.Rect.Rect,
|
|
455
476
|
textStyle: AD.TextStyle.TextStyle,
|
|
456
477
|
hyperLink: AD.HyperLink.HyperLink,
|
|
@@ -471,7 +492,7 @@ function renderHyperLink(
|
|
|
471
492
|
}
|
|
472
493
|
|
|
473
494
|
function renderTocSeparator(
|
|
474
|
-
pdf:
|
|
495
|
+
pdf: PDFKit.PDFDocument,
|
|
475
496
|
finalRect: AD.Rect.Rect,
|
|
476
497
|
textStyle: AD.TextStyle.TextStyle,
|
|
477
498
|
tocSeparator: AD.TocSeparator.TocSeparator
|
|
@@ -480,7 +501,7 @@ function renderTocSeparator(
|
|
|
480
501
|
}
|
|
481
502
|
|
|
482
503
|
function drawHyperLink(
|
|
483
|
-
pdf:
|
|
504
|
+
pdf: PDFKit.PDFDocument,
|
|
484
505
|
finalRect: AD.Rect.Rect,
|
|
485
506
|
textStyle: AD.TextStyle.TextStyle,
|
|
486
507
|
hyperLink: AD.HyperLink.HyperLink,
|
|
@@ -522,10 +543,7 @@ function drawHyperLink(
|
|
|
522
543
|
...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
|
|
523
544
|
});
|
|
524
545
|
if (textStyle.underline === undefined ? true : textStyle.underline) {
|
|
525
|
-
pdf.underline(xUnderline, finalRect.y + 2, finalRect.width, finalRect.height, {
|
|
526
|
-
align: isSingleAtom ? alignment : "left",
|
|
527
|
-
color: "blue",
|
|
528
|
-
});
|
|
546
|
+
pdf.underline(xUnderline, finalRect.y + 2, finalRect.width, finalRect.height, { color: "blue" });
|
|
529
547
|
}
|
|
530
548
|
} else {
|
|
531
549
|
pdf.text(hyperLink.text, {
|
|
@@ -550,7 +568,7 @@ function drawHyperLink(
|
|
|
550
568
|
}
|
|
551
569
|
|
|
552
570
|
function drawText(
|
|
553
|
-
pdf:
|
|
571
|
+
pdf: PDFKit.PDFDocument,
|
|
554
572
|
finalRect: AD.Rect.Rect,
|
|
555
573
|
textStyle: AD.TextStyle.TextStyle,
|
|
556
574
|
text: string,
|
|
@@ -599,7 +617,7 @@ function drawText(
|
|
|
599
617
|
}
|
|
600
618
|
|
|
601
619
|
function drawDottedLine(
|
|
602
|
-
pdf:
|
|
620
|
+
pdf: PDFKit.PDFDocument,
|
|
603
621
|
finalRect: AD.Rect.Rect,
|
|
604
622
|
textStyle: AD.TextStyle.TextStyle,
|
|
605
623
|
tocSeparator: AD.TocSeparator.TocSeparator
|
|
@@ -648,7 +666,7 @@ function drawDottedLine(
|
|
|
648
666
|
|
|
649
667
|
function renderTable(
|
|
650
668
|
resources: AD.Resources.Resources,
|
|
651
|
-
pdf:
|
|
669
|
+
pdf: PDFKit.PDFDocument,
|
|
652
670
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
653
671
|
finalRect: AD.Rect.Rect,
|
|
654
672
|
table: AD.Table.Table
|
|
@@ -678,7 +696,7 @@ function renderTable(
|
|
|
678
696
|
|
|
679
697
|
function renderRow(
|
|
680
698
|
resources: AD.Resources.Resources,
|
|
681
|
-
pdf:
|
|
699
|
+
pdf: PDFKit.PDFDocument,
|
|
682
700
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
683
701
|
finalRect: AD.Rect.Rect,
|
|
684
702
|
tableCellStyle: AD.TableCellStyle.TableCellStyle,
|
|
@@ -714,7 +732,7 @@ function renderRow(
|
|
|
714
732
|
|
|
715
733
|
function renderCell(
|
|
716
734
|
resources: AD.Resources.Resources,
|
|
717
|
-
pdf:
|
|
735
|
+
pdf: PDFKit.PDFDocument,
|
|
718
736
|
desiredSizes: Map<{}, AD.Size.Size>,
|
|
719
737
|
finalRect: AD.Rect.Rect,
|
|
720
738
|
tableCellStyle: AD.TableCellStyle.TableCellStyle,
|
|
@@ -818,7 +836,7 @@ function getDesiredSize(element: {}, desiredSizes: Map<{}, AD.Size.Size>): AD.Si
|
|
|
818
836
|
throw new Error("Could not find size for element!");
|
|
819
837
|
}
|
|
820
838
|
|
|
821
|
-
function applyTextOffset(pdf:
|
|
839
|
+
function applyTextOffset(pdf: PDFKit.PDFDocument, textStyle: AD.TextStyle.TextStyle): void {
|
|
822
840
|
const offset = calculateTextOffset(textStyle);
|
|
823
841
|
if (offset < 0) {
|
|
824
842
|
pdf.moveDown(Math.abs(offset));
|
|
@@ -827,7 +845,7 @@ function applyTextOffset(pdf: any, textStyle: AD.TextStyle.TextStyle): void {
|
|
|
827
845
|
}
|
|
828
846
|
}
|
|
829
847
|
|
|
830
|
-
function resetTextOffset(pdf:
|
|
848
|
+
function resetTextOffset(pdf: PDFKit.PDFDocument, textStyle: AD.TextStyle.TextStyle): void {
|
|
831
849
|
const offset = calculateTextOffset(textStyle);
|
|
832
850
|
if (offset < 0) {
|
|
833
851
|
pdf.moveUp(Math.abs(offset));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { X2jOptions,
|
|
1
|
+
import { X2jOptions, XMLParser } from "fast-xml-parser";
|
|
2
2
|
import Mustache from "mustache";
|
|
3
3
|
import { xsd } from "../xsd-template";
|
|
4
4
|
import { errorToReadableText, validateXml } from "./validation";
|
|
@@ -60,7 +60,7 @@ export function parseMustacheXml(
|
|
|
60
60
|
return { type: "Ok", xml: parseXml(mustacheResolvedXml, options) };
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
export function parseXml(text: string, options?:
|
|
63
|
+
export function parseXml(text: string, options?: Partial<X2jOptions>): ReadonlyArray<XmlElement> {
|
|
64
64
|
const parser = new XMLParser(options);
|
|
65
65
|
// Unescape HTML entity
|
|
66
66
|
parser.addEntity("#x2F", "/");
|