js.documents 7.18.5 → 7.19.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.
@@ -22,6 +22,7 @@ function executeToPdf(format, bytes, options) {
22
22
  if (!require_convert_composition.LAYOUT_CAPABLE.has(format)) throw new Error(`executeToPdf: '${format}' has no layout engine of its own`);
23
23
  let content;
24
24
  let fonts;
25
+ let sourceFaces;
25
26
  if (require_convert_composition.isReadOnlyContentFormat(format)) {
26
27
  require_ports_abort.throwIfAborted(options?.signal);
27
28
  const read = require_convert_composition.READ_ONLY_FORMAT_NODES[format].read(bytes, options);
@@ -69,10 +70,11 @@ function executeToPdf(format, bytes, options) {
69
70
  fonts: options?.fonts,
70
71
  onFontSubstitution: options?.onFontSubstitution
71
72
  });
73
+ sourceFaces = require_fonts_registry.treeEmbeddedFontsOf(fontSource);
72
74
  }
73
- return renderToPdf(content, fonts, options);
75
+ return renderToPdf(content, fonts, options, sourceFaces);
74
76
  }
75
- function renderToPdf(content, fonts, options) {
77
+ function renderToPdf(content, fonts, options, sourceFaces) {
76
78
  const measurer = (0, pdf_codec.createFontMeasurer)(fonts);
77
79
  let layout;
78
80
  let pages;
@@ -123,7 +125,7 @@ function renderToPdf(content, fonts, options) {
123
125
  onSubstitution: options?.onSubstitution,
124
126
  fonts
125
127
  });
126
- options?.onDocument?.((0, document_schema_js.assembleTree)(content, pages));
128
+ options?.onDocument?.(reportTree(content, pages, sourceFaces));
127
129
  return out;
128
130
  }
129
131
  const out = (0, pdf_codec.writePdf)(layout, {
@@ -132,9 +134,16 @@ function renderToPdf(content, fonts, options) {
132
134
  formulas,
133
135
  fonts
134
136
  });
135
- options?.onDocument?.((0, document_schema_js.assembleTree)(content, pages));
137
+ options?.onDocument?.(reportTree(content, pages, sourceFaces));
136
138
  return out;
137
139
  }
140
+ function reportTree(content, pages, sourceFaces) {
141
+ const tree = (0, document_schema_js.assembleTree)(content, pages);
142
+ return sourceFaces === void 0 ? tree : {
143
+ ...tree,
144
+ fonts: sourceFaces
145
+ };
146
+ }
138
147
  function convertDocument(source, target, bytes, options) {
139
148
  const plan = require_convert_composition.resolveCompositionPlan(source, target);
140
149
  if (plan === void 0) throw new require_convert_capability.UnsupportedConversionError(source, target);
@@ -1,5 +1,5 @@
1
1
  import { resolveMetadataTimestamps } from "../model/metadata.js";
2
- import { createDocumentFontRegistry } from "../fonts/registry.js";
2
+ import { createDocumentFontRegistry, treeEmbeddedFontsOf } from "../fonts/registry.js";
3
3
  import { convertWordprocessingToLayout } from "../layout/engine.js";
4
4
  import { convertPresentationToLayout } from "../layout/slides.js";
5
5
  import { throwIfAborted } from "../ports/abort.js";
@@ -21,6 +21,7 @@ function executeToPdf(format, bytes, options) {
21
21
  if (!LAYOUT_CAPABLE.has(format)) throw new Error(`executeToPdf: '${format}' has no layout engine of its own`);
22
22
  let content;
23
23
  let fonts;
24
+ let sourceFaces;
24
25
  if (isReadOnlyContentFormat(format)) {
25
26
  throwIfAborted(options?.signal);
26
27
  const read = READ_ONLY_FORMAT_NODES[format].read(bytes, options);
@@ -68,10 +69,11 @@ function executeToPdf(format, bytes, options) {
68
69
  fonts: options?.fonts,
69
70
  onFontSubstitution: options?.onFontSubstitution
70
71
  });
72
+ sourceFaces = treeEmbeddedFontsOf(fontSource);
71
73
  }
72
- return renderToPdf(content, fonts, options);
74
+ return renderToPdf(content, fonts, options, sourceFaces);
73
75
  }
74
- function renderToPdf(content, fonts, options) {
76
+ function renderToPdf(content, fonts, options, sourceFaces) {
75
77
  const measurer = createFontMeasurer(fonts);
76
78
  let layout;
77
79
  let pages;
@@ -122,7 +124,7 @@ function renderToPdf(content, fonts, options) {
122
124
  onSubstitution: options?.onSubstitution,
123
125
  fonts
124
126
  });
125
- options?.onDocument?.(assembleTree(content, pages));
127
+ options?.onDocument?.(reportTree(content, pages, sourceFaces));
126
128
  return out;
127
129
  }
128
130
  const out = writePdf(layout, {
@@ -131,9 +133,16 @@ function renderToPdf(content, fonts, options) {
131
133
  formulas,
132
134
  fonts
133
135
  });
134
- options?.onDocument?.(assembleTree(content, pages));
136
+ options?.onDocument?.(reportTree(content, pages, sourceFaces));
135
137
  return out;
136
138
  }
139
+ function reportTree(content, pages, sourceFaces) {
140
+ const tree = assembleTree(content, pages);
141
+ return sourceFaces === void 0 ? tree : {
142
+ ...tree,
143
+ fonts: sourceFaces
144
+ };
145
+ }
137
146
  function convertDocument(source, target, bytes, options) {
138
147
  const plan = resolveCompositionPlan(source, target);
139
148
  if (plan === void 0) throw new UnsupportedConversionError(source, target);
@@ -3,7 +3,7 @@ import { i as SvgDiagnosticSink } from "../diagnostics-DVAXKgcf.cjs";
3
3
  import { i as CellTypeInferenceSink } from "../cell-typing-BQ-xQ5X5.cjs";
4
4
  import { t as OmmlDiagnostic } from "../shared-c0Lp3_iY.cjs";
5
5
  import { n as HsqldbDecodeOptions } from "../rowformat-Cl2exlEh.cjs";
6
- import { t as DocumentFontRegistryOptions } from "../registry-Bs4IHqVQ.cjs";
6
+ import { t as DocumentFontRegistryOptions } from "../registry-ChR2F9dJ.cjs";
7
7
  import { ContentDocument, ContentSection, DocumentTree } from "document-schema.js";
8
8
  import { PdfDiagnosticSink, WinAnsiSubstitution } from "pdf-codec";
9
9
  import { MarkdownImageResolver } from "markdown-codec";
@@ -3,7 +3,7 @@ import { i as SvgDiagnosticSink } from "../diagnostics-DVAXKgcf.js";
3
3
  import { i as CellTypeInferenceSink } from "../cell-typing-BQ-xQ5X5.js";
4
4
  import { t as OmmlDiagnostic } from "../shared-DHu5jDJf.js";
5
5
  import { n as HsqldbDecodeOptions } from "../rowformat-Cl2exlEh.js";
6
- import { t as DocumentFontRegistryOptions } from "../registry-913jEe6-.js";
6
+ import { t as DocumentFontRegistryOptions } from "../registry-BrXpPnGF.js";
7
7
  import { ContentDocument, ContentSection, DocumentTree } from "document-schema.js";
8
8
  import { PdfDiagnosticSink, WinAnsiSubstitution } from "pdf-codec";
9
9
  import { OdmSection, Package } from "odf.js";
@@ -9,6 +9,7 @@ require("../layout/sheets.cjs");
9
9
  const require_layout_drawing = require("../layout/drawing.cjs");
10
10
  const require_convert_capability = require("./capability.cjs");
11
11
  const require_codecs_registry = require("../codecs/registry.cjs");
12
+ let ooxml_js = require("ooxml.js");
12
13
  let document_schema_js = require("document-schema.js");
13
14
  let pdf_codec = require("pdf-codec");
14
15
  //#region src/convert/from-package.ts
@@ -231,7 +232,12 @@ function packageToLayout(pkg) {
231
232
  heightPt: page.heightPt,
232
233
  items: []
233
234
  }));
234
- const fonts = (0, pdf_codec.createFontRegistry)({});
235
+ const fonts = pkg.fonts !== void 0 && pkg.fonts.length > 0 ? (0, pdf_codec.createFontRegistry)({ sourceFonts: pkg.fonts.map((face) => ({
236
+ family: face.family,
237
+ bold: face.bold,
238
+ italic: face.italic,
239
+ bytes: require_model_bytes.requireArrayBufferBytes((0, ooxml_js.base64ToBytes)(face.base64))
240
+ })) }) : (0, pdf_codec.createFontRegistry)({});
235
241
  const state = {
236
242
  pages,
237
243
  images: {},
@@ -8,6 +8,7 @@ import "../layout/sheets.js";
8
8
  import { convertVector } from "../layout/drawing.js";
9
9
  import { READ_ONLY_FORMATS } from "./capability.js";
10
10
  import { DOCUMENT_FORMAT_CODECS } from "../codecs/registry.js";
11
+ import { base64ToBytes } from "ooxml.js";
11
12
  import { COLOR_BLACK, DEFAULT_LAYOUT_FONT, flattenTree, resolveCellFillColor } from "document-schema.js";
12
13
  import { LAYOUT_FORMAT_VERSION, createFontMeasurer, createFontRegistry, loadMathFont, writePdf } from "pdf-codec";
13
14
  //#region src/convert/from-package.ts
@@ -230,7 +231,12 @@ function packageToLayout(pkg) {
230
231
  heightPt: page.heightPt,
231
232
  items: []
232
233
  }));
233
- const fonts = createFontRegistry({});
234
+ const fonts = pkg.fonts !== void 0 && pkg.fonts.length > 0 ? createFontRegistry({ sourceFonts: pkg.fonts.map((face) => ({
235
+ family: face.family,
236
+ bold: face.bold,
237
+ italic: face.italic,
238
+ bytes: requireArrayBufferBytes(base64ToBytes(face.base64))
239
+ })) }) : createFontRegistry({});
234
240
  const state = {
235
241
  pages,
236
242
  images: {},
@@ -1,11 +1,22 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_fonts_odf = require("./odf.cjs");
3
3
  const require_fonts_ooxml = require("./ooxml.cjs");
4
+ let ooxml_js = require("ooxml.js");
4
5
  let pdf_codec = require("pdf-codec");
5
6
  //#region src/fonts/registry.ts
6
7
  function extractSourceFonts(source) {
7
8
  return source.kind === "odf" ? require_fonts_odf.extractOdfEmbeddedFonts(source.package) : require_fonts_ooxml.extractOoxmlEmbeddedFonts(source.package, source.kind);
8
9
  }
10
+ function treeEmbeddedFontsOf(source) {
11
+ const faces = extractSourceFonts(source);
12
+ if (faces.length === 0) return;
13
+ return faces.map((face) => ({
14
+ family: face.family,
15
+ bold: face.bold,
16
+ italic: face.italic,
17
+ base64: (0, ooxml_js.bytesToBase64)(face.bytes)
18
+ }));
19
+ }
9
20
  function createDocumentFontRegistry(source, options) {
10
21
  return (0, pdf_codec.createFontRegistry)({
11
22
  sourceFonts: extractSourceFonts(source),
@@ -16,3 +27,4 @@ function createDocumentFontRegistry(source, options) {
16
27
  //#endregion
17
28
  exports.createDocumentFontRegistry = createDocumentFontRegistry;
18
29
  exports.extractSourceFonts = extractSourceFonts;
30
+ exports.treeEmbeddedFontsOf = treeEmbeddedFontsOf;
@@ -1,2 +1,2 @@
1
- import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "../registry-Bs4IHqVQ.cjs";
2
- export { DocumentFontRegistryOptions, FontSourcePackage, createDocumentFontRegistry, extractSourceFonts };
1
+ import { a as treeEmbeddedFontsOf, i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "../registry-ChR2F9dJ.cjs";
2
+ export { DocumentFontRegistryOptions, FontSourcePackage, createDocumentFontRegistry, extractSourceFonts, treeEmbeddedFontsOf };
@@ -1,2 +1,2 @@
1
- import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "../registry-913jEe6-.js";
2
- export { DocumentFontRegistryOptions, FontSourcePackage, createDocumentFontRegistry, extractSourceFonts };
1
+ import { a as treeEmbeddedFontsOf, i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "../registry-BrXpPnGF.js";
2
+ export { DocumentFontRegistryOptions, FontSourcePackage, createDocumentFontRegistry, extractSourceFonts, treeEmbeddedFontsOf };
@@ -1,10 +1,21 @@
1
1
  import { extractOdfEmbeddedFonts } from "./odf.js";
2
2
  import { extractOoxmlEmbeddedFonts } from "./ooxml.js";
3
+ import { bytesToBase64 } from "ooxml.js";
3
4
  import { createFontRegistry } from "pdf-codec";
4
5
  //#region src/fonts/registry.ts
5
6
  function extractSourceFonts(source) {
6
7
  return source.kind === "odf" ? extractOdfEmbeddedFonts(source.package) : extractOoxmlEmbeddedFonts(source.package, source.kind);
7
8
  }
9
+ function treeEmbeddedFontsOf(source) {
10
+ const faces = extractSourceFonts(source);
11
+ if (faces.length === 0) return;
12
+ return faces.map((face) => ({
13
+ family: face.family,
14
+ bold: face.bold,
15
+ italic: face.italic,
16
+ base64: bytesToBase64(face.bytes)
17
+ }));
18
+ }
8
19
  function createDocumentFontRegistry(source, options) {
9
20
  return createFontRegistry({
10
21
  sourceFonts: extractSourceFonts(source),
@@ -13,4 +24,4 @@ function createDocumentFontRegistry(source, options) {
13
24
  });
14
25
  }
15
26
  //#endregion
16
- export { createDocumentFontRegistry, extractSourceFonts };
27
+ export { createDocumentFontRegistry, extractSourceFonts, treeEmbeddedFontsOf };
package/dist/index.d.cts CHANGED
@@ -8,7 +8,7 @@ import { n as OmmlDiagnosticKind, t as OmmlDiagnostic } from "./shared-c0Lp3_iY.
8
8
  import { CompositionHop, ConversionPlan, UnifiedConversionOptions, resolveCompositionPlan } from "./convert/composition.cjs";
9
9
  import { convertDocument } from "./convert/composition-to-pdf.cjs";
10
10
  import { n as HsqldbDecodeOptions, r as HsqldbRowFormatError } from "./rowformat-Cl2exlEh.cjs";
11
- import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "./registry-Bs4IHqVQ.cjs";
11
+ import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "./registry-ChR2F9dJ.cjs";
12
12
  import { CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, SvgReadOptions, SvgWriteOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docToPdf, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, epubToPdf, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odgToSvg, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pptToPdf, pptxToDocx, pptxToOdp, pptxToPdf, rtfToPdf, svgToOdg, svgToPdf, xlsToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert/convert.cjs";
13
13
  import { UnsupportedFontSourceFormatError, extractSourceFontsForFormat } from "./convert/document-fonts.cjs";
14
14
  import { buildDocumentBytes, layoutDocumentFromPackage } from "./convert/from-package.cjs";
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ import { n as OmmlDiagnosticKind, t as OmmlDiagnostic } from "./shared-DHu5jDJf.
8
8
  import { CompositionHop, ConversionPlan, UnifiedConversionOptions, resolveCompositionPlan } from "./convert/composition.js";
9
9
  import { convertDocument } from "./convert/composition-to-pdf.js";
10
10
  import { n as HsqldbDecodeOptions, r as HsqldbRowFormatError } from "./rowformat-Cl2exlEh.js";
11
- import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "./registry-913jEe6-.js";
11
+ import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFontRegistry, t as DocumentFontRegistryOptions } from "./registry-BrXpPnGF.js";
12
12
  import { CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, SvgReadOptions, SvgWriteOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docToPdf, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, epubToPdf, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odgToSvg, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pptToPdf, pptxToDocx, pptxToOdp, pptxToPdf, rtfToPdf, svgToOdg, svgToPdf, xlsToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert/convert.js";
13
13
  import { UnsupportedFontSourceFormatError, extractSourceFontsForFormat } from "./convert/document-fonts.js";
14
14
  import { buildDocumentBytes, layoutDocumentFromPackage } from "./convert/from-package.js";
@@ -1,5 +1,5 @@
1
1
  import { Package } from "ooxml.js";
2
- import { FontSubstitution, ProvidedFont } from "document-schema.js";
2
+ import { FontSubstitution, ProvidedFont, TreeEmbeddedFont } from "document-schema.js";
3
3
  import { FontRegistry } from "pdf-codec";
4
4
  import { Package as Package$1 } from "odf.js";
5
5
  //#region src/fonts/registry.d.ts
@@ -15,6 +15,7 @@ interface DocumentFontRegistryOptions {
15
15
  readonly onFontSubstitution?: (substitution: FontSubstitution) => void;
16
16
  }
17
17
  declare function extractSourceFonts(source: FontSourcePackage): ProvidedFont[];
18
+ declare function treeEmbeddedFontsOf(source: FontSourcePackage): TreeEmbeddedFont[] | undefined;
18
19
  declare function createDocumentFontRegistry(source: FontSourcePackage, options?: DocumentFontRegistryOptions): FontRegistry;
19
20
  //#endregion
20
- export { extractSourceFonts as i, FontSourcePackage as n, createDocumentFontRegistry as r, DocumentFontRegistryOptions as t };
21
+ export { treeEmbeddedFontsOf as a, extractSourceFonts as i, FontSourcePackage as n, createDocumentFontRegistry as r, DocumentFontRegistryOptions as t };
@@ -1,4 +1,4 @@
1
- import { FontSubstitution, ProvidedFont } from "document-schema.js";
1
+ import { FontSubstitution, ProvidedFont, TreeEmbeddedFont } from "document-schema.js";
2
2
  import { FontRegistry } from "pdf-codec";
3
3
  import { Package } from "ooxml.js";
4
4
  import { Package as Package$1 } from "odf.js";
@@ -15,6 +15,7 @@ interface DocumentFontRegistryOptions {
15
15
  readonly onFontSubstitution?: (substitution: FontSubstitution) => void;
16
16
  }
17
17
  declare function extractSourceFonts(source: FontSourcePackage): ProvidedFont[];
18
+ declare function treeEmbeddedFontsOf(source: FontSourcePackage): TreeEmbeddedFont[] | undefined;
18
19
  declare function createDocumentFontRegistry(source: FontSourcePackage, options?: DocumentFontRegistryOptions): FontRegistry;
19
20
  //#endregion
20
- export { extractSourceFonts as i, FontSourcePackage as n, createDocumentFontRegistry as r, DocumentFontRegistryOptions as t };
21
+ export { treeEmbeddedFontsOf as a, extractSourceFonts as i, FontSourcePackage as n, createDocumentFontRegistry as r, DocumentFontRegistryOptions as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js.documents",
3
- "version": "7.18.5",
3
+ "version": "7.19.1",
4
4
  "description": "Bidirectional docx/pptx <-> PDF conversion and a read+write editable OOXML document model, built on ooxml.js and Zod 4 codecs.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -77,21 +77,21 @@
77
77
  ],
78
78
  "license": "MIT",
79
79
  "dependencies": {
80
- "archive-codec": "1.10.8",
81
- "byte-codec": "1.4.2",
82
- "doc-codec": "2.8.6",
83
- "document-schema.js": "7.10.0",
84
- "epub-codec": "1.4.0",
80
+ "archive-codec": "1.11.0",
81
+ "byte-codec": "1.5.0",
82
+ "doc-codec": "2.9.0",
83
+ "document-schema.js": "7.11.0",
84
+ "epub-codec": "1.5.0",
85
85
  "fflate": "0.8.3",
86
- "markdown-codec": "6.6.7",
87
- "odf.js": "7.24.5",
88
- "ooxml.js": "8.12.0",
89
- "pdf-codec": "4.6.0",
90
- "ppt-codec": "1.4.11",
91
- "rtf-codec": "4.3.0",
86
+ "markdown-codec": "6.7.0",
87
+ "odf.js": "7.25.0",
88
+ "ooxml.js": "8.14.0",
89
+ "pdf-codec": "4.7.0",
90
+ "ppt-codec": "1.6.0",
91
+ "rtf-codec": "4.4.0",
92
92
  "temml": "0.13.4",
93
- "wpd-codec": "3.4.6",
94
- "xls-codec": "4.13.0",
93
+ "wpd-codec": "3.5.0",
94
+ "xls-codec": "4.14.0",
95
95
  "zod": "4.4.3"
96
96
  },
97
97
  "devDependencies": {