js.documents 4.0.20 → 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.
Files changed (116) hide show
  1. package/README.md +43 -29
  2. package/dist/cell-typing-CEWlywIc.d.cts +22 -0
  3. package/dist/cell-typing-CEWlywIc.d.ts +22 -0
  4. package/dist/codecs/read.cjs +66 -0
  5. package/dist/codecs/read.d.cts +15 -0
  6. package/dist/codecs/read.d.ts +15 -0
  7. package/dist/codecs/read.js +64 -0
  8. package/dist/codecs/registry.cjs +13 -59
  9. package/dist/codecs/registry.d.cts +2 -8
  10. package/dist/codecs/registry.d.ts +2 -8
  11. package/dist/codecs/registry.js +20 -64
  12. package/dist/convert/codec.cjs +11 -10
  13. package/dist/convert/codec.js +2 -1
  14. package/dist/convert/composition-to-pdf.cjs +133 -0
  15. package/dist/convert/composition-to-pdf.d.cts +7 -0
  16. package/dist/convert/composition-to-pdf.d.ts +7 -0
  17. package/dist/convert/composition-to-pdf.js +131 -0
  18. package/dist/convert/composition.cjs +31 -129
  19. package/dist/convert/composition.d.cts +14 -4
  20. package/dist/convert/composition.d.ts +14 -4
  21. package/dist/convert/composition.js +25 -128
  22. package/dist/convert/convert.cjs +35 -75
  23. package/dist/convert/convert.d.cts +5 -20
  24. package/dist/convert/convert.d.ts +5 -20
  25. package/dist/convert/convert.js +2 -32
  26. package/dist/convert/from-package.cjs +2 -1
  27. package/dist/convert/from-package.js +2 -1
  28. package/dist/convert/from-pdf.cjs +50 -0
  29. package/dist/convert/from-pdf.d.cts +26 -0
  30. package/dist/convert/from-pdf.d.ts +26 -0
  31. package/dist/convert/from-pdf.js +39 -0
  32. package/dist/convert/local.cjs +2 -1
  33. package/dist/convert/local.js +2 -1
  34. package/dist/convert/pdf-package-tables.cjs +76 -0
  35. package/dist/convert/pdf-package-tables.d.cts +6 -0
  36. package/dist/convert/pdf-package-tables.d.ts +6 -0
  37. package/dist/convert/pdf-package-tables.js +75 -0
  38. package/dist/csv/read.d.cts +1 -1
  39. package/dist/csv/read.d.ts +1 -1
  40. package/dist/diagnostics-DVAXKgcf.d.cts +10 -0
  41. package/dist/diagnostics-DVAXKgcf.d.ts +10 -0
  42. package/dist/edit/docx/content.cjs +1 -0
  43. package/dist/edit/docx/content.js +1 -0
  44. package/dist/edit/docx/paragraph.cjs +18 -1
  45. package/dist/edit/docx/paragraph.d.cts +3 -0
  46. package/dist/edit/docx/paragraph.d.ts +3 -0
  47. package/dist/edit/docx/paragraph.js +18 -1
  48. package/dist/edit/docx/props.cjs +1 -0
  49. package/dist/edit/docx/props.js +1 -0
  50. package/dist/edit/markdown/editor.cjs +1 -1
  51. package/dist/edit/markdown/editor.js +1 -1
  52. package/dist/edit/pdf/item.cjs +42 -1
  53. package/dist/edit/pdf/item.d.cts +2 -2
  54. package/dist/edit/pdf/item.d.ts +2 -2
  55. package/dist/edit/pdf/item.js +42 -2
  56. package/dist/edit/pdf/page.d.cts +1 -1
  57. package/dist/edit/pdf/page.d.ts +1 -1
  58. package/dist/fonts/registry.d.cts +1 -19
  59. package/dist/fonts/registry.d.ts +1 -19
  60. package/dist/hsqldb/binary-script.d.cts +1 -1
  61. package/dist/hsqldb/binary-script.d.ts +1 -1
  62. package/dist/hsqldb/cache.d.cts +1 -1
  63. package/dist/hsqldb/cache.d.ts +1 -1
  64. package/dist/hsqldb/rowformat.d.cts +1 -24
  65. package/dist/hsqldb/rowformat.d.ts +1 -24
  66. package/dist/index.cjs +17 -16
  67. package/dist/index.d.cts +11 -10
  68. package/dist/index.d.ts +11 -10
  69. package/dist/index.js +8 -7
  70. package/dist/{item-D9vQKT0T.d.cts → item-DhXpJNAQ.d.cts} +17 -3
  71. package/dist/{item-D9vQKT0T.d.ts → item-DhXpJNAQ.d.ts} +17 -3
  72. package/dist/layout/cell-typing.d.cts +1 -21
  73. package/dist/layout/cell-typing.d.ts +1 -21
  74. package/dist/layout/reconstruct.cjs +177 -14
  75. package/dist/layout/reconstruct.d.cts +1 -1
  76. package/dist/layout/reconstruct.d.ts +1 -1
  77. package/dist/layout/reconstruct.js +175 -12
  78. package/dist/layout/shared.cjs +2 -2
  79. package/dist/layout/shared.js +1 -1
  80. package/dist/markdown/math.cjs +5 -7
  81. package/dist/markdown/math.js +5 -7
  82. package/dist/markdown/read.cjs +15 -1
  83. package/dist/markdown/read.js +16 -2
  84. package/dist/markdown/write.cjs +7 -10
  85. package/dist/markdown/write.d.cts +3 -6
  86. package/dist/markdown/write.d.ts +3 -6
  87. package/dist/markdown/write.js +8 -11
  88. package/dist/metadata/write.cjs +2 -1
  89. package/dist/metadata/write.js +2 -1
  90. package/dist/model/bytes.cjs +8 -0
  91. package/dist/model/bytes.d.cts +2 -1
  92. package/dist/model/bytes.d.ts +2 -1
  93. package/dist/model/bytes.js +8 -1
  94. package/dist/odb/read.d.cts +1 -1
  95. package/dist/odb/read.d.ts +1 -1
  96. package/dist/odb/report/content.d.cts +1 -1
  97. package/dist/odb/report/content.d.ts +1 -1
  98. package/dist/odb/report/source.d.cts +1 -1
  99. package/dist/odb/report/source.d.ts +1 -1
  100. package/dist/odf/odt/read.cjs +1 -1
  101. package/dist/odf/odt/read.js +1 -1
  102. package/dist/registry-BcBT-bnX.d.cts +20 -0
  103. package/dist/registry-D1Pu5XxB.d.ts +20 -0
  104. package/dist/rowformat-Cl2exlEh.d.cts +25 -0
  105. package/dist/rowformat-Cl2exlEh.d.ts +25 -0
  106. package/dist/svg/diagnostics.d.cts +1 -9
  107. package/dist/svg/diagnostics.d.ts +1 -9
  108. package/dist/svg/read.d.cts +1 -1
  109. package/dist/svg/read.d.ts +1 -1
  110. package/dist/svg/write.d.cts +1 -1
  111. package/dist/svg/write.d.ts +1 -1
  112. package/package.json +27 -10
  113. package/dist/metadata/read.cjs +0 -15
  114. package/dist/metadata/read.d.cts +0 -9
  115. package/dist/metadata/read.d.ts +0 -9
  116. 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, DocumentCodecOptions, DocumentFormatCodecs, LayoutEntryCodec, isArrayBufferBacked, requireArrayBufferBytes };
16
+ export { DOCUMENT_FORMAT_CODECS, DocumentFormatCodecs, LayoutEntryCodec };
@@ -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 { readDocxContent as readDocxContent$1 } from "../ooxml/docx/read.js";
10
- import { readPptxContent as readPptxContent$1 } from "../ooxml/pptx/read.js";
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 { decodeSvgText, encodeSvgText } from "../svg/text.js";
21
- import { readSvgContent } from "../svg/read.js";
11
+ import { encodeSvgText } from "../svg/text.js";
22
12
  import { buildSvgText } from "../svg/write.js";
23
- import { throwIfAborted } from "../ports/abort.js";
24
- import { decodeDocumentPackage, encodeDocumentPackage } from "../package-codec.js";
25
- import { buildXlsxPackageFromContent, readXlsxContent } from "ooxml.js";
26
- import { readPdf, writePdf } from "pdf-codec";
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: (bytes, options) => {
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: (bytes, options) => {
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: (bytes, options) => {
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: (bytes, options) => {
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: (bytes, options) => {
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: (bytes, options) => {
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: (bytes, options) => {
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: (bytes, options) => readMarkdownContent(decodeMarkdownText(bytes), {
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: (bytes) => readCsvContent(decodeCsvText(bytes)),
49
+ read: CONTENT_READERS.csv,
91
50
  write: (content) => encodeCsvText(buildCsvText(content))
92
51
  } },
93
52
  svg: { content: {
94
- read: (bytes) => readSvgContent(decodeSvgText(bytes)),
53
+ read: CONTENT_READERS.svg,
95
54
  write: (content) => encodeSvgText(buildSvgText(content))
96
55
  } },
97
56
  pdf: { layout: {
98
- read: (bytes, options) => readPdf(requireArrayBufferBytes(bytes), { signal: options?.signal }),
57
+ read: readDocumentLayout,
99
58
  write: (layout, options) => writePdf(layout, { signal: options?.signal })
100
59
  } },
101
60
  xlsx: { content: {
102
- read: (bytes, options) => {
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, isArrayBufferBacked, requireArrayBufferBytes };
66
+ export { DOCUMENT_FORMAT_CODECS };
@@ -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) => require_convert_convert.pdfToDocx(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) => require_convert_convert.pdfToPptx(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) => require_convert_convert.pdfToOdt(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) => require_convert_convert.pdfToOdp(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) => require_convert_convert.pdfToOds(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) => require_convert_convert.pdfToOdg(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) => require_convert_convert.pdfToXlsx(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) => require_convert_convert.pdfToMarkdown(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) => require_convert_convert.pdfToSvg(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) => require_convert_convert.pdfToCsv(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),
@@ -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, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, pptxToOdp, pptxToPdf, svgToOdg, svgToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert.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, 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 };