@json-to-office/core-docx 0.35.0 → 0.36.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.
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { ProcessedDocument } from './structure';
9
9
  import { LayoutPlan, SectionLayout } from './layout';
10
10
  import { MemoryCache } from '../cache';
11
11
  import type { ServicesConfig, RasterizeFontFace } from '@json-to-office/shared';
12
+ import type { GenerationWarning } from '@json-to-office/shared';
12
13
  interface RenderDocumentOptions {
13
14
  cache?: MemoryCache;
14
15
  bypassCache?: boolean;
@@ -25,6 +26,11 @@ interface RenderDocumentOptions {
25
26
  * `resolveDocumentFonts` via `toRasterizeFontFaces`.
26
27
  */
27
28
  visualFonts?: RasterizeFontFace[];
29
+ /**
30
+ * Collector for warnings raised while rendering, such as an inline SVG the
31
+ * rasterizer could not turn into a fallback. Absent → `console.warn`.
32
+ */
33
+ warnings?: GenerationWarning[];
28
34
  }
29
35
  /**
30
36
  * Render a complete document from structure and layout
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,eAAe,EAEf,eAAe,EAKf,OAAO,EACR,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,mBAAmB,EACnB,aAAa,EAed,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAEL,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAoChF,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AA8DD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAwBnB;AAkZD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAAC,eAAe,CAAC,CAkH1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAmC5D"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,eAAe,EAEf,eAAe,EAKf,OAAO,EACR,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,mBAAmB,EACnB,aAAa,EAed,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAEL,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAgChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAMhE,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AA8DD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CA0BnB;AAkZD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAAC,eAAe,CAAC,CAkH1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAmC5D"}
package/dist/index.js CHANGED
@@ -2665,10 +2665,68 @@ function resolveFromBaseDir(filePath) {
2665
2665
  if (!base || isAbsolute(filePath)) return filePath;
2666
2666
  return resolve(base, filePath);
2667
2667
  }
2668
+ var warningsStorage = new AsyncLocalStorage();
2669
+ function runWithWarnings(warnings, callback) {
2670
+ return warnings === void 0 ? callback() : warningsStorage.run(warnings, callback);
2671
+ }
2672
+ function reportWarning(component, code, message, context) {
2673
+ const warnings = warningsStorage.getStore();
2674
+ if (warnings) {
2675
+ warnings.push({
2676
+ component,
2677
+ message,
2678
+ severity: "warning",
2679
+ context: { code, ...context }
2680
+ });
2681
+ return;
2682
+ }
2683
+ console.warn(`[json-to-docx] [${code}] ${message}`);
2684
+ }
2668
2685
 
2669
2686
  // src/utils/imageUtils.ts
2670
2687
  init_widthUtils();
2671
2688
  import { ImageRun } from "docx";
2689
+ var SVG_RASTER_SCALE = 3;
2690
+ var SVG_MAX_EDGE_PX = 4096;
2691
+ var SVG_MIN_EDGE_PX = 16;
2692
+ var resvgModule;
2693
+ function loadResvg() {
2694
+ resvgModule ??= import("@resvg/resvg-js");
2695
+ return resvgModule;
2696
+ }
2697
+ function toRasterPx(px) {
2698
+ return Math.min(
2699
+ SVG_MAX_EDGE_PX,
2700
+ Math.max(SVG_MIN_EDGE_PX, Math.round(px * SVG_RASTER_SCALE))
2701
+ );
2702
+ }
2703
+ async function rasterizeSvgFallback(svg, transformation) {
2704
+ let Resvg;
2705
+ try {
2706
+ ({ Resvg } = await loadResvg());
2707
+ } catch (error) {
2708
+ reportWarning(
2709
+ "image",
2710
+ "IMAGE_SVG_RASTER_FAILED",
2711
+ `Could not load the SVG rasterizer, so inline SVG keeps a fallback that only Word 2016+ can draw: ${String(error)}`
2712
+ );
2713
+ return void 0;
2714
+ }
2715
+ try {
2716
+ const markup = svg.toString("utf-8");
2717
+ const probeImage = new Resvg(markup);
2718
+ const wide = probeImage.width / probeImage.height > transformation.width / transformation.height;
2719
+ const fitTo = wide ? { mode: "height", value: toRasterPx(transformation.height) } : { mode: "width", value: toRasterPx(transformation.width) };
2720
+ return Buffer.from(new Resvg(markup, { fitTo }).render().asPng());
2721
+ } catch (error) {
2722
+ reportWarning(
2723
+ "image",
2724
+ "IMAGE_SVG_RASTER_FAILED",
2725
+ `Could not rasterize inline SVG, so its fallback only renders in Word 2016+: ${String(error)}`
2726
+ );
2727
+ return void 0;
2728
+ }
2729
+ }
2672
2730
  function parseWidthValue(width, availableWidthPx) {
2673
2731
  if (typeof width === "number") {
2674
2732
  return width;
@@ -2778,17 +2836,18 @@ function detectImageType(imagePath, responseContentType) {
2778
2836
  if (typeFromExtension) return typeFromExtension;
2779
2837
  return "png";
2780
2838
  }
2781
- function createTypedImageRun(opts) {
2839
+ async function createTypedImageRun(opts) {
2782
2840
  const base = {
2783
2841
  data: opts.data,
2784
2842
  transformation: opts.transformation,
2785
2843
  ...opts.floating && { floating: opts.floating }
2786
2844
  };
2787
2845
  if (opts.type === "svg") {
2846
+ const raster = await rasterizeSvgFallback(opts.data, opts.transformation);
2788
2847
  return new ImageRun({
2789
2848
  type: "svg",
2790
2849
  ...base,
2791
- fallback: { type: "png", data: opts.data }
2850
+ fallback: { type: "png", data: raster ?? opts.data }
2792
2851
  });
2793
2852
  }
2794
2853
  return new ImageRun({ type: opts.type, ...base });
@@ -5217,7 +5276,7 @@ async function createImage(path4, theme, themeName, options = {}) {
5217
5276
  const { mapFloatingOptions: mapFloatingOptions2 } = await Promise.resolve().then(() => (init_docxImagePositioning(), docxImagePositioning_exports));
5218
5277
  const floating = isFloating ? mapFloatingOptions2(options.floating, theme, themeName) : void 0;
5219
5278
  const imageType = detectImageType(imagePath, responseContentType);
5220
- const imageRun = createTypedImageRun({
5279
+ const imageRun = await createTypedImageRun({
5221
5280
  type: imageType,
5222
5281
  data: imageBuffer,
5223
5282
  transformation: { width: dimensions.width, height: dimensions.height },
@@ -5762,7 +5821,7 @@ async function createTable(columns, tableConfig, theme, themeName, _options = {}
5762
5821
  // fallback height
5763
5822
  );
5764
5823
  const imgType = detectImageType(imageSource, imageResult.contentType);
5765
- const imageRun = createTypedImageRun({
5824
+ const imageRun = await createTypedImageRun({
5766
5825
  type: imgType,
5767
5826
  data: imageResult.buffer,
5768
5827
  transformation: {
@@ -8104,23 +8163,26 @@ function coreProperties(metadata) {
8104
8163
  async function renderDocument(structure, layout, options) {
8105
8164
  return runWithGenerationDate(
8106
8165
  structure.metadata.date,
8107
- () => runWithBaseDir(
8108
- options?.baseDir,
8109
- () => globalBookmarkRegistry.runScoped(
8110
- () => globalRevisionIdRegistry.runScoped(
8111
- () => globalNumberingRegistry.runScoped(
8112
- () => globalSectionBookmarkRegistry.runScoped(
8113
- () => (
8114
- // Comment ids are a separate OOXML namespace from w:ins/w:del,
8115
- // but they need the same per-render isolation: outside this nest
8116
- // concurrent generations would interleave counters and an anchor
8117
- // would point at another document's comment body.
8118
- globalCommentRegistry.runScoped(
8119
- () => (
8120
- // Footnote ids are document-scoped too: a reference resolved
8121
- // against another render's counter points at the wrong body.
8122
- globalNoteRegistry.runScoped(
8123
- () => renderDocumentScoped(structure, layout, options)
8166
+ () => runWithWarnings(
8167
+ options?.warnings,
8168
+ () => runWithBaseDir(
8169
+ options?.baseDir,
8170
+ () => globalBookmarkRegistry.runScoped(
8171
+ () => globalRevisionIdRegistry.runScoped(
8172
+ () => globalNumberingRegistry.runScoped(
8173
+ () => globalSectionBookmarkRegistry.runScoped(
8174
+ () => (
8175
+ // Comment ids are a separate OOXML namespace from w:ins/w:del,
8176
+ // but they need the same per-render isolation: outside this nest
8177
+ // concurrent generations would interleave counters and an anchor
8178
+ // would point at another document's comment body.
8179
+ globalCommentRegistry.runScoped(
8180
+ () => (
8181
+ // Footnote ids are document-scoped too: a reference resolved
8182
+ // against another render's counter points at the wrong body.
8183
+ globalNoteRegistry.runScoped(
8184
+ () => renderDocumentScoped(structure, layout, options)
8185
+ )
8124
8186
  )
8125
8187
  )
8126
8188
  )
@@ -8340,7 +8402,7 @@ async function renderHeaderFooterComponents(components, theme, themeName, contex
8340
8402
  themeName
8341
8403
  );
8342
8404
  const imageType = detectImageType(imageSource, responseContentType);
8343
- const imageRun = createTypedImageRun({
8405
+ const imageRun = await createTypedImageRun({
8344
8406
  type: imageType,
8345
8407
  data: imageBuffer,
8346
8408
  transformation: {
@@ -8868,6 +8930,7 @@ async function generateDocumentWithCustomThemes(documentIn, customThemes, servic
8868
8930
  bypassCache: false,
8869
8931
  services,
8870
8932
  baseDir,
8933
+ warnings,
8871
8934
  ...visualFonts.length > 0 && { visualFonts }
8872
8935
  });
8873
8936
  return renderedDocument;
@@ -9850,6 +9913,7 @@ function createBuilderImpl(state) {
9850
9913
  services: state.services,
9851
9914
  bypassCache: !state.enableCache,
9852
9915
  baseDir: options?.baseDir ?? state.baseDir,
9916
+ warnings,
9853
9917
  ...visualFonts.length > 0 && { visualFonts }
9854
9918
  });
9855
9919
  const preservedDefinition = preserveSet ? {