js.documents 4.0.19 → 4.4.5
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 +43 -29
- package/dist/cell-typing-CEWlywIc.d.cts +22 -0
- package/dist/cell-typing-CEWlywIc.d.ts +22 -0
- package/dist/codecs/read.cjs +66 -0
- package/dist/codecs/read.d.cts +15 -0
- package/dist/codecs/read.d.ts +15 -0
- package/dist/codecs/read.js +64 -0
- package/dist/codecs/registry.cjs +13 -59
- package/dist/codecs/registry.d.cts +2 -8
- package/dist/codecs/registry.d.ts +2 -8
- package/dist/codecs/registry.js +20 -64
- package/dist/convert/codec.cjs +11 -10
- package/dist/convert/codec.js +2 -1
- package/dist/convert/composition-to-pdf.cjs +133 -0
- package/dist/convert/composition-to-pdf.d.cts +7 -0
- package/dist/convert/composition-to-pdf.d.ts +7 -0
- package/dist/convert/composition-to-pdf.js +131 -0
- package/dist/convert/composition.cjs +31 -129
- package/dist/convert/composition.d.cts +14 -4
- package/dist/convert/composition.d.ts +14 -4
- package/dist/convert/composition.js +25 -128
- package/dist/convert/convert.cjs +35 -75
- package/dist/convert/convert.d.cts +5 -20
- package/dist/convert/convert.d.ts +5 -20
- package/dist/convert/convert.js +2 -32
- package/dist/convert/from-package.cjs +2 -1
- package/dist/convert/from-package.js +2 -1
- package/dist/convert/from-pdf.cjs +50 -0
- package/dist/convert/from-pdf.d.cts +26 -0
- package/dist/convert/from-pdf.d.ts +26 -0
- package/dist/convert/from-pdf.js +39 -0
- package/dist/convert/local.cjs +2 -1
- package/dist/convert/local.js +2 -1
- package/dist/convert/pdf-package-tables.cjs +76 -0
- package/dist/convert/pdf-package-tables.d.cts +6 -0
- package/dist/convert/pdf-package-tables.d.ts +6 -0
- package/dist/convert/pdf-package-tables.js +75 -0
- package/dist/csv/read.d.cts +1 -1
- package/dist/csv/read.d.ts +1 -1
- package/dist/diagnostics-DVAXKgcf.d.cts +10 -0
- package/dist/diagnostics-DVAXKgcf.d.ts +10 -0
- package/dist/edit/docx/content.cjs +1 -0
- package/dist/edit/docx/content.js +1 -0
- package/dist/edit/docx/paragraph.cjs +18 -1
- package/dist/edit/docx/paragraph.d.cts +3 -0
- package/dist/edit/docx/paragraph.d.ts +3 -0
- package/dist/edit/docx/paragraph.js +18 -1
- package/dist/edit/docx/props.cjs +1 -0
- package/dist/edit/docx/props.js +1 -0
- package/dist/edit/markdown/editor.cjs +1 -1
- package/dist/edit/markdown/editor.js +1 -1
- package/dist/edit/pdf/item.cjs +42 -1
- package/dist/edit/pdf/item.d.cts +2 -2
- package/dist/edit/pdf/item.d.ts +2 -2
- package/dist/edit/pdf/item.js +42 -2
- package/dist/edit/pdf/page.d.cts +1 -1
- package/dist/edit/pdf/page.d.ts +1 -1
- package/dist/fonts/registry.d.cts +1 -19
- package/dist/fonts/registry.d.ts +1 -19
- package/dist/hsqldb/binary-script.d.cts +1 -1
- package/dist/hsqldb/binary-script.d.ts +1 -1
- package/dist/hsqldb/cache.d.cts +1 -1
- package/dist/hsqldb/cache.d.ts +1 -1
- package/dist/hsqldb/rowformat.d.cts +1 -24
- package/dist/hsqldb/rowformat.d.ts +1 -24
- package/dist/index.cjs +17 -16
- package/dist/index.d.cts +11 -10
- package/dist/index.d.ts +11 -10
- package/dist/index.js +8 -7
- package/dist/{item-D9vQKT0T.d.cts → item-DhXpJNAQ.d.cts} +17 -3
- package/dist/{item-D9vQKT0T.d.ts → item-DhXpJNAQ.d.ts} +17 -3
- package/dist/layout/cell-typing.d.cts +1 -21
- package/dist/layout/cell-typing.d.ts +1 -21
- package/dist/layout/reconstruct.cjs +177 -14
- package/dist/layout/reconstruct.d.cts +1 -1
- package/dist/layout/reconstruct.d.ts +1 -1
- package/dist/layout/reconstruct.js +175 -12
- package/dist/layout/shared.cjs +2 -2
- package/dist/layout/shared.js +1 -1
- package/dist/markdown/math.cjs +5 -7
- package/dist/markdown/math.js +5 -7
- package/dist/markdown/read.cjs +15 -1
- package/dist/markdown/read.js +16 -2
- package/dist/markdown/write.cjs +7 -10
- package/dist/markdown/write.d.cts +3 -6
- package/dist/markdown/write.d.ts +3 -6
- package/dist/markdown/write.js +8 -11
- package/dist/metadata/write.cjs +2 -1
- package/dist/metadata/write.js +2 -1
- package/dist/model/bytes.cjs +8 -0
- package/dist/model/bytes.d.cts +2 -1
- package/dist/model/bytes.d.ts +2 -1
- package/dist/model/bytes.js +8 -1
- package/dist/odb/read.d.cts +1 -1
- package/dist/odb/read.d.ts +1 -1
- package/dist/odb/report/content.d.cts +1 -1
- package/dist/odb/report/content.d.ts +1 -1
- package/dist/odb/report/source.d.cts +1 -1
- package/dist/odb/report/source.d.ts +1 -1
- package/dist/odf/odt/read.cjs +1 -1
- package/dist/odf/odt/read.js +1 -1
- package/dist/registry-BcBT-bnX.d.cts +20 -0
- package/dist/registry-D1Pu5XxB.d.ts +20 -0
- package/dist/rowformat-Cl2exlEh.d.cts +25 -0
- package/dist/rowformat-Cl2exlEh.d.ts +25 -0
- package/dist/svg/diagnostics.d.cts +1 -9
- package/dist/svg/diagnostics.d.ts +1 -9
- package/dist/svg/read.d.cts +1 -1
- package/dist/svg/read.d.ts +1 -1
- package/dist/svg/write.d.cts +1 -1
- package/dist/svg/write.d.ts +1 -1
- package/package.json +27 -10
- package/dist/metadata/read.cjs +0 -15
- package/dist/metadata/read.d.cts +0 -9
- package/dist/metadata/read.d.ts +0 -9
- package/dist/metadata/read.js +0 -14
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import { DocumentFormat } from "../convert/port.js";
|
|
2
|
+
import { DocumentCodecOptions } from "./read.js";
|
|
2
3
|
import { ContentCodec } from "document-schema.js";
|
|
3
4
|
import { LayoutDocument } from "pdf-codec";
|
|
4
|
-
import { MarkdownImageResolver } from "markdown-codec";
|
|
5
5
|
//#region src/codecs/registry.d.ts
|
|
6
|
-
declare function isArrayBufferBacked(bytes: Uint8Array): bytes is Uint8Array<ArrayBuffer>;
|
|
7
|
-
declare function requireArrayBufferBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer>;
|
|
8
|
-
interface DocumentCodecOptions {
|
|
9
|
-
readonly signal?: AbortSignal;
|
|
10
|
-
readonly images?: MarkdownImageResolver;
|
|
11
|
-
}
|
|
12
6
|
interface LayoutEntryCodec {
|
|
13
7
|
read(bytes: Uint8Array, options?: DocumentCodecOptions): LayoutDocument;
|
|
14
8
|
write(layout: LayoutDocument, options?: DocumentCodecOptions): Uint8Array;
|
|
@@ -19,4 +13,4 @@ interface DocumentFormatCodecs {
|
|
|
19
13
|
}
|
|
20
14
|
declare const DOCUMENT_FORMAT_CODECS: Readonly<Record<DocumentFormat, DocumentFormatCodecs>>;
|
|
21
15
|
//#endregion
|
|
22
|
-
export { DOCUMENT_FORMAT_CODECS,
|
|
16
|
+
export { DOCUMENT_FORMAT_CODECS, DocumentFormatCodecs, LayoutEntryCodec };
|
package/dist/codecs/registry.js
CHANGED
|
@@ -4,107 +4,63 @@ import { buildOdtPackage } from "../edit/odt/content.js";
|
|
|
4
4
|
import { buildOdpPackage } from "../edit/odp/content.js";
|
|
5
5
|
import { buildOdsPackage } from "../edit/ods/content.js";
|
|
6
6
|
import { buildOdgPackage } from "../edit/odg/content.js";
|
|
7
|
-
import { readMarkdownContent } from "../markdown/read.js";
|
|
8
7
|
import { buildMarkdownText } from "../markdown/write.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { readOdfFormulaContent } from "../odf/formula/read.js";
|
|
12
|
-
import { readOdtContent } from "../odf/odt/read.js";
|
|
13
|
-
import { readOdpContent } from "../odf/odp/read.js";
|
|
14
|
-
import { readOdsContent } from "../odf/ods/read.js";
|
|
15
|
-
import { readOdgContent } from "../odf/odg/read.js";
|
|
16
|
-
import { decodeMarkdownText, encodeMarkdownText } from "../markdown/text.js";
|
|
17
|
-
import { decodeCsvText, encodeCsvText } from "../csv/text.js";
|
|
18
|
-
import { readCsvContent } from "../csv/read.js";
|
|
8
|
+
import { encodeMarkdownText } from "../markdown/text.js";
|
|
9
|
+
import { encodeCsvText } from "../csv/text.js";
|
|
19
10
|
import { buildCsvText } from "../csv/write.js";
|
|
20
|
-
import {
|
|
21
|
-
import { readSvgContent } from "../svg/read.js";
|
|
11
|
+
import { encodeSvgText } from "../svg/text.js";
|
|
22
12
|
import { buildSvgText } from "../svg/write.js";
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import { buildXlsxPackageFromContent
|
|
26
|
-
import {
|
|
13
|
+
import { encodeDocumentPackage } from "../package-codec.js";
|
|
14
|
+
import { CONTENT_READERS, readDocumentLayout } from "./read.js";
|
|
15
|
+
import { buildXlsxPackageFromContent } from "ooxml.js";
|
|
16
|
+
import { writePdf } from "pdf-codec";
|
|
27
17
|
//#region src/codecs/registry.ts
|
|
28
|
-
function isArrayBufferBacked(bytes) {
|
|
29
|
-
return bytes.buffer instanceof ArrayBuffer;
|
|
30
|
-
}
|
|
31
|
-
function requireArrayBufferBytes(bytes) {
|
|
32
|
-
if (!isArrayBufferBacked(bytes)) throw new TypeError("expected an ArrayBuffer-backed Uint8Array, received one backed by a SharedArrayBuffer");
|
|
33
|
-
return bytes;
|
|
34
|
-
}
|
|
35
18
|
const DOCUMENT_FORMAT_CODECS = {
|
|
36
19
|
docx: { content: {
|
|
37
|
-
read:
|
|
38
|
-
throwIfAborted(options?.signal);
|
|
39
|
-
return readDocxContent$1(decodeDocumentPackage("docx", requireArrayBufferBytes(bytes)));
|
|
40
|
-
},
|
|
20
|
+
read: CONTENT_READERS.docx,
|
|
41
21
|
write: (content) => encodeDocumentPackage("docx", buildDocxPackage(content))
|
|
42
22
|
} },
|
|
43
23
|
pptx: { content: {
|
|
44
|
-
read:
|
|
45
|
-
throwIfAborted(options?.signal);
|
|
46
|
-
return readPptxContent$1(decodeDocumentPackage("pptx", requireArrayBufferBytes(bytes)));
|
|
47
|
-
},
|
|
24
|
+
read: CONTENT_READERS.pptx,
|
|
48
25
|
write: (content) => encodeDocumentPackage("pptx", buildPptxPackage(content))
|
|
49
26
|
} },
|
|
50
27
|
odt: { content: {
|
|
51
|
-
read:
|
|
52
|
-
throwIfAborted(options?.signal);
|
|
53
|
-
return readOdtContent(decodeDocumentPackage("odt", requireArrayBufferBytes(bytes)));
|
|
54
|
-
},
|
|
28
|
+
read: CONTENT_READERS.odt,
|
|
55
29
|
write: (content) => encodeDocumentPackage("odt", buildOdtPackage(content))
|
|
56
30
|
} },
|
|
57
31
|
odp: { content: {
|
|
58
|
-
read:
|
|
59
|
-
throwIfAborted(options?.signal);
|
|
60
|
-
return readOdpContent(decodeDocumentPackage("odp", requireArrayBufferBytes(bytes)));
|
|
61
|
-
},
|
|
32
|
+
read: CONTENT_READERS.odp,
|
|
62
33
|
write: (content) => encodeDocumentPackage("odp", buildOdpPackage(content))
|
|
63
34
|
} },
|
|
64
35
|
ods: { content: {
|
|
65
|
-
read:
|
|
66
|
-
throwIfAborted(options?.signal);
|
|
67
|
-
return readOdsContent(decodeDocumentPackage("ods", requireArrayBufferBytes(bytes)));
|
|
68
|
-
},
|
|
36
|
+
read: CONTENT_READERS.ods,
|
|
69
37
|
write: (content) => encodeDocumentPackage("ods", buildOdsPackage(content))
|
|
70
38
|
} },
|
|
71
39
|
odg: { content: {
|
|
72
|
-
read:
|
|
73
|
-
throwIfAborted(options?.signal);
|
|
74
|
-
return readOdgContent(decodeDocumentPackage("odg", requireArrayBufferBytes(bytes)));
|
|
75
|
-
},
|
|
40
|
+
read: CONTENT_READERS.odg,
|
|
76
41
|
write: (content) => encodeDocumentPackage("odg", buildOdgPackage(content))
|
|
77
42
|
} },
|
|
78
|
-
odf: { content: { read:
|
|
79
|
-
throwIfAborted(options?.signal);
|
|
80
|
-
return readOdfFormulaContent(decodeDocumentPackage("odf", requireArrayBufferBytes(bytes)));
|
|
81
|
-
} } },
|
|
43
|
+
odf: { content: { read: CONTENT_READERS.odf } },
|
|
82
44
|
markdown: { content: {
|
|
83
|
-
read:
|
|
84
|
-
signal: options?.signal,
|
|
85
|
-
images: options?.images
|
|
86
|
-
}),
|
|
45
|
+
read: CONTENT_READERS.markdown,
|
|
87
46
|
write: (content) => encodeMarkdownText(buildMarkdownText(content))
|
|
88
47
|
} },
|
|
89
48
|
csv: { content: {
|
|
90
|
-
read:
|
|
49
|
+
read: CONTENT_READERS.csv,
|
|
91
50
|
write: (content) => encodeCsvText(buildCsvText(content))
|
|
92
51
|
} },
|
|
93
52
|
svg: { content: {
|
|
94
|
-
read:
|
|
53
|
+
read: CONTENT_READERS.svg,
|
|
95
54
|
write: (content) => encodeSvgText(buildSvgText(content))
|
|
96
55
|
} },
|
|
97
56
|
pdf: { layout: {
|
|
98
|
-
read:
|
|
57
|
+
read: readDocumentLayout,
|
|
99
58
|
write: (layout, options) => writePdf(layout, { signal: options?.signal })
|
|
100
59
|
} },
|
|
101
60
|
xlsx: { content: {
|
|
102
|
-
read:
|
|
103
|
-
throwIfAborted(options?.signal);
|
|
104
|
-
return readXlsxContent(decodeDocumentPackage("xlsx", requireArrayBufferBytes(bytes)));
|
|
105
|
-
},
|
|
61
|
+
read: CONTENT_READERS.xlsx,
|
|
106
62
|
write: (content) => encodeDocumentPackage("xlsx", buildXlsxPackageFromContent(content))
|
|
107
63
|
} }
|
|
108
64
|
};
|
|
109
65
|
//#endregion
|
|
110
|
-
export { DOCUMENT_FORMAT_CODECS
|
|
66
|
+
export { DOCUMENT_FORMAT_CODECS };
|
package/dist/convert/codec.cjs
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_model_bytes = require("../model/bytes.cjs");
|
|
3
3
|
const require_convert_convert = require("./convert.cjs");
|
|
4
|
+
const require_convert_from_pdf = require("./from-pdf.cjs");
|
|
4
5
|
let zod = require("zod");
|
|
5
6
|
//#region src/convert/codec.ts
|
|
6
7
|
const docxPdfCodec = zod.z.codec(require_model_bytes.DocxBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
7
8
|
decode: (docxBytes) => require_convert_convert.docxToPdf(docxBytes),
|
|
8
|
-
encode: (pdfBytes) =>
|
|
9
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToDocx(pdfBytes)
|
|
9
10
|
});
|
|
10
11
|
const pptxPdfCodec = zod.z.codec(require_model_bytes.PptxBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
11
12
|
decode: (pptxBytes) => require_convert_convert.pptxToPdf(pptxBytes),
|
|
12
|
-
encode: (pdfBytes) =>
|
|
13
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToPptx(pdfBytes)
|
|
13
14
|
});
|
|
14
15
|
const odtPdfCodec = zod.z.codec(require_model_bytes.OdtBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
15
16
|
decode: (odtBytes) => require_convert_convert.odtToPdf(odtBytes),
|
|
16
|
-
encode: (pdfBytes) =>
|
|
17
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToOdt(pdfBytes)
|
|
17
18
|
});
|
|
18
19
|
const odpPdfCodec = zod.z.codec(require_model_bytes.OdpBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
19
20
|
decode: (odpBytes) => require_convert_convert.odpToPdf(odpBytes),
|
|
20
|
-
encode: (pdfBytes) =>
|
|
21
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToOdp(pdfBytes)
|
|
21
22
|
});
|
|
22
23
|
const odsPdfCodec = zod.z.codec(require_model_bytes.OdsBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
23
24
|
decode: (odsBytes) => require_convert_convert.odsToPdf(odsBytes),
|
|
24
|
-
encode: (pdfBytes) =>
|
|
25
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToOds(pdfBytes)
|
|
25
26
|
});
|
|
26
27
|
const odgPdfCodec = zod.z.codec(require_model_bytes.OdgBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
27
28
|
decode: (odgBytes) => require_convert_convert.odgToPdf(odgBytes),
|
|
28
|
-
encode: (pdfBytes) =>
|
|
29
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToOdg(pdfBytes)
|
|
29
30
|
});
|
|
30
31
|
const xlsxPdfCodec = zod.z.codec(require_model_bytes.XlsxBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
31
32
|
decode: (xlsxBytes) => require_convert_convert.xlsxToPdf(xlsxBytes),
|
|
32
|
-
encode: (pdfBytes) =>
|
|
33
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToXlsx(pdfBytes)
|
|
33
34
|
});
|
|
34
35
|
const markdownPdfCodec = zod.z.codec(require_model_bytes.MarkdownBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
35
36
|
decode: (markdownBytes) => require_convert_convert.markdownToPdf(markdownBytes),
|
|
36
|
-
encode: (pdfBytes) =>
|
|
37
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToMarkdown(pdfBytes)
|
|
37
38
|
});
|
|
38
39
|
const svgPdfCodec = zod.z.codec(require_model_bytes.SvgBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
39
40
|
decode: (svgBytes) => require_convert_convert.svgToPdf(svgBytes),
|
|
40
|
-
encode: (pdfBytes) =>
|
|
41
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToSvg(pdfBytes)
|
|
41
42
|
});
|
|
42
43
|
const odtDocxCodec = zod.z.codec(require_model_bytes.OdtBytesSchema, require_model_bytes.DocxBytesSchema, {
|
|
43
44
|
decode: (odtBytes) => require_convert_convert.odtToDocx(odtBytes),
|
|
@@ -65,7 +66,7 @@ const xlsxMarkdownCodec = zod.z.codec(require_model_bytes.XlsxBytesSchema, requi
|
|
|
65
66
|
});
|
|
66
67
|
const csvPdfCodec = zod.z.codec(require_model_bytes.CsvBytesSchema, require_model_bytes.PdfBytesSchema, {
|
|
67
68
|
decode: (csvBytes) => require_convert_convert.csvToPdf(csvBytes),
|
|
68
|
-
encode: (pdfBytes) =>
|
|
69
|
+
encode: (pdfBytes) => require_convert_from_pdf.pdfToCsv(pdfBytes)
|
|
69
70
|
});
|
|
70
71
|
const odsCsvCodec = zod.z.codec(require_model_bytes.OdsBytesSchema, require_model_bytes.CsvBytesSchema, {
|
|
71
72
|
decode: (odsBytes) => require_convert_convert.odsToCsv(odsBytes),
|
package/dist/convert/codec.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema } from "../model/bytes.js";
|
|
2
|
-
import { csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odgToPdf, odgToSvg, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToPdf,
|
|
2
|
+
import { csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odgToPdf, odgToSvg, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToPdf, pptxToOdp, pptxToPdf, svgToOdg, svgToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert.js";
|
|
3
|
+
import { pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx } from "./from-pdf.js";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
//#region src/convert/codec.ts
|
|
5
6
|
const docxPdfCodec = z.codec(DocxBytesSchema, PdfBytesSchema, {
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_model_metadata = require("../model/metadata.cjs");
|
|
3
|
+
const require_fonts_registry = require("../fonts/registry.cjs");
|
|
4
|
+
const require_layout_engine = require("../layout/engine.cjs");
|
|
5
|
+
const require_layout_slides = require("../layout/slides.cjs");
|
|
6
|
+
const require_ports_abort = require("../ports/abort.cjs");
|
|
7
|
+
const require_layout_sheets = require("../layout/sheets.cjs");
|
|
8
|
+
const require_layout_drawing = require("../layout/drawing.cjs");
|
|
9
|
+
const require_convert_capability = require("./capability.cjs");
|
|
10
|
+
const require_convert_composition = require("./composition.cjs");
|
|
11
|
+
let document_schema_js = require("document-schema.js");
|
|
12
|
+
let pdf_codec = require("pdf-codec");
|
|
13
|
+
//#region src/convert/composition-to-pdf.ts
|
|
14
|
+
const mathMetricsAt = (sizePt) => (0, pdf_codec.loadMathFont)().metricsAt(sizePt);
|
|
15
|
+
const LAYOUT_ENGINES = {
|
|
16
|
+
wordprocessing: require_layout_engine.convertWordprocessingToLayout,
|
|
17
|
+
presentation: require_layout_slides.convertPresentationToLayout,
|
|
18
|
+
spreadsheet: require_layout_sheets.convertSpreadsheetToLayout,
|
|
19
|
+
drawing: require_layout_drawing.convertDrawingToLayout
|
|
20
|
+
};
|
|
21
|
+
function executeToPdf(format, bytes, options) {
|
|
22
|
+
if (!require_convert_composition.LAYOUT_CAPABLE.has(format)) throw new Error(`executeToPdf: '${format}' has no layout engine of its own`);
|
|
23
|
+
const node = require_convert_composition.FORMAT_NODES[format];
|
|
24
|
+
let content;
|
|
25
|
+
let fonts;
|
|
26
|
+
if (require_convert_composition.isTextFormatNode(node)) {
|
|
27
|
+
require_ports_abort.throwIfAborted(options?.signal);
|
|
28
|
+
const text = node.decode(bytes);
|
|
29
|
+
const read = node.read(text, options);
|
|
30
|
+
content = {
|
|
31
|
+
...read,
|
|
32
|
+
metadata: require_model_metadata.resolveMetadataTimestamps(read.metadata, options?.clock)
|
|
33
|
+
};
|
|
34
|
+
fonts = (0, pdf_codec.createFontRegistry)({
|
|
35
|
+
fonts: options?.fonts,
|
|
36
|
+
onSubstitution: options?.onFontSubstitution
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
const pkg = node.decode(bytes);
|
|
40
|
+
const read = node.read(pkg, options);
|
|
41
|
+
content = {
|
|
42
|
+
...read,
|
|
43
|
+
metadata: require_model_metadata.resolveMetadataTimestamps(read.metadata, options?.clock)
|
|
44
|
+
};
|
|
45
|
+
const fontSource = node.family === "odf" ? {
|
|
46
|
+
kind: "odf",
|
|
47
|
+
package: pkg
|
|
48
|
+
} : format === "pptx" ? {
|
|
49
|
+
kind: "pptx",
|
|
50
|
+
package: pkg
|
|
51
|
+
} : {
|
|
52
|
+
kind: "docx",
|
|
53
|
+
package: pkg
|
|
54
|
+
};
|
|
55
|
+
fonts = require_fonts_registry.createDocumentFontRegistry(fontSource, {
|
|
56
|
+
fonts: options?.fonts,
|
|
57
|
+
onFontSubstitution: options?.onFontSubstitution
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const measurer = (0, pdf_codec.createFontMeasurer)(fonts);
|
|
61
|
+
let layout;
|
|
62
|
+
let pages;
|
|
63
|
+
let formulas;
|
|
64
|
+
switch (content.kind) {
|
|
65
|
+
case "wordprocessing": {
|
|
66
|
+
const result = LAYOUT_ENGINES.wordprocessing(content, {
|
|
67
|
+
measurer,
|
|
68
|
+
mathMetricsAt
|
|
69
|
+
});
|
|
70
|
+
layout = result.document;
|
|
71
|
+
pages = result.pages;
|
|
72
|
+
formulas = result.formulas;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case "presentation": {
|
|
76
|
+
const result = LAYOUT_ENGINES.presentation(content, {
|
|
77
|
+
measurer,
|
|
78
|
+
mathMetricsAt
|
|
79
|
+
});
|
|
80
|
+
layout = result.document;
|
|
81
|
+
pages = result.pages;
|
|
82
|
+
formulas = result.formulas;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case "spreadsheet": {
|
|
86
|
+
const result = LAYOUT_ENGINES.spreadsheet(content, {
|
|
87
|
+
measurer,
|
|
88
|
+
mathMetricsAt,
|
|
89
|
+
signal: options?.signal
|
|
90
|
+
});
|
|
91
|
+
layout = result.document;
|
|
92
|
+
pages = result.pages;
|
|
93
|
+
formulas = result.formulas;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case "drawing": {
|
|
97
|
+
const result = LAYOUT_ENGINES.drawing(content, { measurer });
|
|
98
|
+
layout = result.document;
|
|
99
|
+
pages = result.pages;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
default: throw new Error(`executeToPdf: cannot lay out a '${content.kind}' document`);
|
|
103
|
+
}
|
|
104
|
+
if (formulas === void 0) {
|
|
105
|
+
const out = (0, pdf_codec.writePdf)(layout, {
|
|
106
|
+
signal: options?.signal,
|
|
107
|
+
onSubstitution: options?.onSubstitution,
|
|
108
|
+
fonts
|
|
109
|
+
});
|
|
110
|
+
options?.onDocument?.((0, document_schema_js.assemblePackage)(content, pages));
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
const out = (0, pdf_codec.writePdf)(layout, {
|
|
114
|
+
signal: options?.signal,
|
|
115
|
+
onSubstitution: options?.onSubstitution,
|
|
116
|
+
formulas,
|
|
117
|
+
fonts
|
|
118
|
+
});
|
|
119
|
+
options?.onDocument?.((0, document_schema_js.assemblePackage)(content, pages));
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
function convertDocument(source, target, bytes, options) {
|
|
123
|
+
const plan = require_convert_composition.resolveCompositionPlan(source, target);
|
|
124
|
+
if (plan === void 0) throw new require_convert_capability.UnsupportedConversionError(source, target);
|
|
125
|
+
return require_convert_composition.runCompositionPlan(plan, bytes, options, {
|
|
126
|
+
bridge: require_convert_composition.executeBridge,
|
|
127
|
+
fromPdf: require_convert_composition.executeFromPdf,
|
|
128
|
+
toPdf: executeToPdf
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
exports.convertDocument = convertDocument;
|
|
133
|
+
exports.executeToPdf = executeToPdf;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DocumentFormat } from "./port.cjs";
|
|
2
|
+
import { ContentFormat, UnifiedConversionOptions } from "./composition.cjs";
|
|
3
|
+
//#region src/convert/composition-to-pdf.d.ts
|
|
4
|
+
declare function executeToPdf(format: ContentFormat, bytes: Uint8Array<ArrayBuffer>, options?: UnifiedConversionOptions): Uint8Array<ArrayBuffer>;
|
|
5
|
+
declare function convertDocument(source: DocumentFormat, target: DocumentFormat, bytes: Uint8Array<ArrayBuffer>, options?: UnifiedConversionOptions): Uint8Array<ArrayBuffer>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { convertDocument, executeToPdf };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DocumentFormat } from "./port.js";
|
|
2
|
+
import { ContentFormat, UnifiedConversionOptions } from "./composition.js";
|
|
3
|
+
//#region src/convert/composition-to-pdf.d.ts
|
|
4
|
+
declare function executeToPdf(format: ContentFormat, bytes: Uint8Array<ArrayBuffer>, options?: UnifiedConversionOptions): Uint8Array<ArrayBuffer>;
|
|
5
|
+
declare function convertDocument(source: DocumentFormat, target: DocumentFormat, bytes: Uint8Array<ArrayBuffer>, options?: UnifiedConversionOptions): Uint8Array<ArrayBuffer>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { convertDocument, executeToPdf };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { resolveMetadataTimestamps } from "../model/metadata.js";
|
|
2
|
+
import { createDocumentFontRegistry } from "../fonts/registry.js";
|
|
3
|
+
import { convertWordprocessingToLayout } from "../layout/engine.js";
|
|
4
|
+
import { convertPresentationToLayout } from "../layout/slides.js";
|
|
5
|
+
import { throwIfAborted } from "../ports/abort.js";
|
|
6
|
+
import { convertSpreadsheetToLayout } from "../layout/sheets.js";
|
|
7
|
+
import { convertDrawingToLayout } from "../layout/drawing.js";
|
|
8
|
+
import { UnsupportedConversionError } from "./capability.js";
|
|
9
|
+
import { FORMAT_NODES, LAYOUT_CAPABLE, executeBridge, executeFromPdf, isTextFormatNode, resolveCompositionPlan, runCompositionPlan } from "./composition.js";
|
|
10
|
+
import { assemblePackage } from "document-schema.js";
|
|
11
|
+
import { createFontMeasurer, createFontRegistry, loadMathFont, writePdf } from "pdf-codec";
|
|
12
|
+
//#region src/convert/composition-to-pdf.ts
|
|
13
|
+
const mathMetricsAt = (sizePt) => loadMathFont().metricsAt(sizePt);
|
|
14
|
+
const LAYOUT_ENGINES = {
|
|
15
|
+
wordprocessing: convertWordprocessingToLayout,
|
|
16
|
+
presentation: convertPresentationToLayout,
|
|
17
|
+
spreadsheet: convertSpreadsheetToLayout,
|
|
18
|
+
drawing: convertDrawingToLayout
|
|
19
|
+
};
|
|
20
|
+
function executeToPdf(format, bytes, options) {
|
|
21
|
+
if (!LAYOUT_CAPABLE.has(format)) throw new Error(`executeToPdf: '${format}' has no layout engine of its own`);
|
|
22
|
+
const node = FORMAT_NODES[format];
|
|
23
|
+
let content;
|
|
24
|
+
let fonts;
|
|
25
|
+
if (isTextFormatNode(node)) {
|
|
26
|
+
throwIfAborted(options?.signal);
|
|
27
|
+
const text = node.decode(bytes);
|
|
28
|
+
const read = node.read(text, options);
|
|
29
|
+
content = {
|
|
30
|
+
...read,
|
|
31
|
+
metadata: resolveMetadataTimestamps(read.metadata, options?.clock)
|
|
32
|
+
};
|
|
33
|
+
fonts = createFontRegistry({
|
|
34
|
+
fonts: options?.fonts,
|
|
35
|
+
onSubstitution: options?.onFontSubstitution
|
|
36
|
+
});
|
|
37
|
+
} else {
|
|
38
|
+
const pkg = node.decode(bytes);
|
|
39
|
+
const read = node.read(pkg, options);
|
|
40
|
+
content = {
|
|
41
|
+
...read,
|
|
42
|
+
metadata: resolveMetadataTimestamps(read.metadata, options?.clock)
|
|
43
|
+
};
|
|
44
|
+
const fontSource = node.family === "odf" ? {
|
|
45
|
+
kind: "odf",
|
|
46
|
+
package: pkg
|
|
47
|
+
} : format === "pptx" ? {
|
|
48
|
+
kind: "pptx",
|
|
49
|
+
package: pkg
|
|
50
|
+
} : {
|
|
51
|
+
kind: "docx",
|
|
52
|
+
package: pkg
|
|
53
|
+
};
|
|
54
|
+
fonts = createDocumentFontRegistry(fontSource, {
|
|
55
|
+
fonts: options?.fonts,
|
|
56
|
+
onFontSubstitution: options?.onFontSubstitution
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const measurer = createFontMeasurer(fonts);
|
|
60
|
+
let layout;
|
|
61
|
+
let pages;
|
|
62
|
+
let formulas;
|
|
63
|
+
switch (content.kind) {
|
|
64
|
+
case "wordprocessing": {
|
|
65
|
+
const result = LAYOUT_ENGINES.wordprocessing(content, {
|
|
66
|
+
measurer,
|
|
67
|
+
mathMetricsAt
|
|
68
|
+
});
|
|
69
|
+
layout = result.document;
|
|
70
|
+
pages = result.pages;
|
|
71
|
+
formulas = result.formulas;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case "presentation": {
|
|
75
|
+
const result = LAYOUT_ENGINES.presentation(content, {
|
|
76
|
+
measurer,
|
|
77
|
+
mathMetricsAt
|
|
78
|
+
});
|
|
79
|
+
layout = result.document;
|
|
80
|
+
pages = result.pages;
|
|
81
|
+
formulas = result.formulas;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case "spreadsheet": {
|
|
85
|
+
const result = LAYOUT_ENGINES.spreadsheet(content, {
|
|
86
|
+
measurer,
|
|
87
|
+
mathMetricsAt,
|
|
88
|
+
signal: options?.signal
|
|
89
|
+
});
|
|
90
|
+
layout = result.document;
|
|
91
|
+
pages = result.pages;
|
|
92
|
+
formulas = result.formulas;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case "drawing": {
|
|
96
|
+
const result = LAYOUT_ENGINES.drawing(content, { measurer });
|
|
97
|
+
layout = result.document;
|
|
98
|
+
pages = result.pages;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
default: throw new Error(`executeToPdf: cannot lay out a '${content.kind}' document`);
|
|
102
|
+
}
|
|
103
|
+
if (formulas === void 0) {
|
|
104
|
+
const out = writePdf(layout, {
|
|
105
|
+
signal: options?.signal,
|
|
106
|
+
onSubstitution: options?.onSubstitution,
|
|
107
|
+
fonts
|
|
108
|
+
});
|
|
109
|
+
options?.onDocument?.(assemblePackage(content, pages));
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
const out = writePdf(layout, {
|
|
113
|
+
signal: options?.signal,
|
|
114
|
+
onSubstitution: options?.onSubstitution,
|
|
115
|
+
formulas,
|
|
116
|
+
fonts
|
|
117
|
+
});
|
|
118
|
+
options?.onDocument?.(assemblePackage(content, pages));
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
function convertDocument(source, target, bytes, options) {
|
|
122
|
+
const plan = resolveCompositionPlan(source, target);
|
|
123
|
+
if (plan === void 0) throw new UnsupportedConversionError(source, target);
|
|
124
|
+
return runCompositionPlan(plan, bytes, options, {
|
|
125
|
+
bridge: executeBridge,
|
|
126
|
+
fromPdf: executeFromPdf,
|
|
127
|
+
toPdf: executeToPdf
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
export { convertDocument, executeToPdf };
|