@file-viewer/renderer-word 3.0.0 → 3.0.2

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 (2) hide show
  1. package/dist/wordDocx.js +58 -22
  2. package/package.json +4 -4
package/dist/wordDocx.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import JSZip from 'jszip';
2
2
  import { resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRuntimeAssetBaseUrl, } from '@file-viewer/core/assets';
3
- import { applyPrintPageSize, buildPrintPageStyle, createFileViewerTranslator, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, formatCssPixels, getElementPrintPageSize, normalizeFileViewerTheme, registerFileViewerZoomProvider, resolveFileViewerFitScale, unregisterFileViewerZoomProvider, } from '@file-viewer/core';
3
+ import { applyPrintPageSize, buildPrintPageStyle, createFileViewerTranslator, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, formatCssPixels, getElementPrintPageSize, normalizeFileViewerTheme, replaceFileViewerCanvasWithImages, registerFileViewerZoomProvider, resolveFileViewerFitScale, unregisterFileViewerZoomProvider, waitForFileViewerNextPaint, } from '@file-viewer/core';
4
4
  const DOCX_DEFAULT_PAGE_SIZE = {
5
5
  width: 794,
6
6
  height: 1123
@@ -628,6 +628,9 @@ function getDocxPageElement(frame) {
628
628
  function isDocxFlowFrame(frame) {
629
629
  return !!(frame === null || frame === void 0 ? void 0 : frame.classList.contains('docx-flow-frame'));
630
630
  }
631
+ function isDocxCanvasSheet(frame) {
632
+ return !!(frame === null || frame === void 0 ? void 0 : frame.classList.contains('docx-canvas-sheet'));
633
+ }
631
634
  function getDocxFramePrintSize(frame) {
632
635
  const page = frame ? getDocxPageElement(frame) : null;
633
636
  if (!page) {
@@ -643,6 +646,17 @@ function getDocxFramePrintSize(frame) {
643
646
  };
644
647
  }
645
648
  function normalizeDocxPageForPrint(frame, pageSize) {
649
+ var _a;
650
+ if (isDocxCanvasSheet(frame)) {
651
+ applyPrintPageSize(frame, pageSize);
652
+ (_a = frame.dataset).viewerPrintPageIndex || (_a.viewerPrintPageIndex = '0');
653
+ frame.classList.remove('docx-canvas-sheet-pending', 'docx-canvas-sheet-virtualized');
654
+ frame.style.position = 'relative';
655
+ frame.style.contain = 'none';
656
+ frame.style.margin = '0 auto 18px';
657
+ frame.style.boxShadow = 'none';
658
+ return;
659
+ }
646
660
  const flowLayout = isDocxFlowFrame(frame);
647
661
  const pageWidth = formatCssPixels(pageSize.width);
648
662
  const pageHeight = formatCssPixels(pageSize.height);
@@ -666,11 +680,13 @@ function normalizeDocxPageForPrint(frame, pageSize) {
666
680
  page.style.boxShadow = 'none';
667
681
  }
668
682
  function buildDocxPrintStyle(target) {
669
- const firstFrame = target.querySelector('.docx-page-frame, .docx-flow-frame');
683
+ const firstFrame = target.querySelector('.docx-page-frame, .docx-flow-frame, .docx-canvas-sheet');
670
684
  const pageSize = getDocxFramePrintSize(firstFrame || undefined);
671
- const selector = (firstFrame === null || firstFrame === void 0 ? void 0 : firstFrame.classList.contains('docx-flow-frame'))
672
- ? '.viewer-export-content .docx-flow-frame'
673
- : '.viewer-export-content .docx-page-frame';
685
+ const selector = isDocxCanvasSheet(firstFrame || undefined)
686
+ ? '.viewer-export-content .docx-canvas-sheet'
687
+ : (firstFrame === null || firstFrame === void 0 ? void 0 : firstFrame.classList.contains('docx-flow-frame'))
688
+ ? '.viewer-export-content .docx-flow-frame'
689
+ : '.viewer-export-content .docx-page-frame';
674
690
  return buildPrintPageStyle({
675
691
  selector,
676
692
  width: pageSize.width,
@@ -680,21 +696,41 @@ function buildDocxPrintStyle(target) {
680
696
  heightMode: (firstFrame === null || firstFrame === void 0 ? void 0 : firstFrame.classList.contains('docx-flow-frame')) ? 'min' : 'fixed'
681
697
  });
682
698
  }
683
- function prepareDocxCloneForExport(target) {
684
- const liveFrames = Array.from(target.querySelectorAll('.docx-page-frame, .docx-flow-frame'));
685
- const clone = target.cloneNode(true);
686
- const printDocument = target.ownerDocument.createElement('div');
687
- printDocument.className = 'docx-print-document';
688
- const scopedStyles = Array.from(clone.querySelectorAll('style'))
689
- .filter(style => { var _a; return !((_a = style.textContent) === null || _a === void 0 ? void 0 : _a.includes('.docx-fit-viewer')); })
690
- .map(style => style.outerHTML)
691
- .join('');
692
- clone.querySelectorAll('.docx-page-frame, .docx-flow-frame').forEach((frame, index) => {
693
- frame.dataset.viewerPrintPageIndex = String(index);
694
- normalizeDocxPageForPrint(frame, getDocxFramePrintSize(liveFrames[index]));
695
- printDocument.appendChild(frame.cloneNode(true));
696
- });
697
- return printDocument.childElementCount ? `${scopedStyles}${printDocument.outerHTML}` : clone.innerHTML;
699
+ async function prepareDocxCloneForExport(target) {
700
+ const view = getTargetWindow(target);
701
+ const usesVirtualCanvas = !!target.querySelector('.docx-canvas-sheet');
702
+ const materializeAllPages = view === null || view === void 0 ? void 0 : view.__docxCanvasMaterializeAllPages;
703
+ let materializedForSnapshot = false;
704
+ if (usesVirtualCanvas && typeof materializeAllPages === 'function') {
705
+ await materializeAllPages.call(view, 'file-viewer-print-snapshot');
706
+ await waitForFileViewerNextPaint(view);
707
+ materializedForSnapshot = true;
708
+ }
709
+ try {
710
+ const selector = '.docx-page-frame, .docx-flow-frame, .docx-canvas-sheet';
711
+ const liveFrames = Array.from(target.querySelectorAll(selector));
712
+ const clone = target.cloneNode(true);
713
+ replaceFileViewerCanvasWithImages(target, clone);
714
+ const printDocument = target.ownerDocument.createElement('div');
715
+ printDocument.className = 'docx-print-document';
716
+ const scopedStyles = Array.from(clone.querySelectorAll('style'))
717
+ .filter(style => { var _a; return !((_a = style.textContent) === null || _a === void 0 ? void 0 : _a.includes('.docx-fit-viewer')); })
718
+ .map(style => style.outerHTML)
719
+ .join('');
720
+ clone.querySelectorAll(selector).forEach((frame, index) => {
721
+ frame.dataset.viewerPrintPageIndex = String(index);
722
+ normalizeDocxPageForPrint(frame, getDocxFramePrintSize(liveFrames[index]));
723
+ printDocument.appendChild(frame.cloneNode(true));
724
+ });
725
+ return printDocument.childElementCount ? `${scopedStyles}${printDocument.outerHTML}` : clone.innerHTML;
726
+ }
727
+ finally {
728
+ if (materializedForSnapshot && view) {
729
+ const afterPrint = target.ownerDocument.createEvent('Event');
730
+ afterPrint.initEvent('afterprint', false, false);
731
+ view.dispatchEvent(afterPrint);
732
+ }
733
+ }
698
734
  }
699
735
  /**
700
736
  * 渲染docx文件
@@ -731,7 +767,7 @@ export default async function (buffer, target, context) {
731
767
  const disposeResponsive = makeDocxResponsive(target, context);
732
768
  (_a = context === null || context === void 0 ? void 0 : context.registerExportAdapter) === null || _a === void 0 ? void 0 : _a.call(context, {
733
769
  includeDocumentStyles: false,
734
- getPrintMaskPages: () => Array.from(target.querySelectorAll('.docx-page-frame, .docx-flow-frame')),
770
+ getPrintMaskPages: () => Array.from(target.querySelectorAll('.docx-page-frame, .docx-flow-frame, .docx-canvas-sheet')),
735
771
  beforeSnapshot: () => {
736
772
  const view = getTargetWindow(target);
737
773
  if (view) {
@@ -742,7 +778,7 @@ export default async function (buffer, target, context) {
742
778
  toHtml: () => prepareDocxCloneForExport(target)
743
779
  });
744
780
  (_b = context === null || context === void 0 ? void 0 : context.registerThumbnailAdapter) === null || _b === void 0 ? void 0 : _b.call(context, {
745
- getTarget: () => target.querySelector('.docx-page-frame, .docx-flow-frame') || target
781
+ getTarget: () => target.querySelector('.docx-page-frame, .docx-flow-frame, .docx-canvas-sheet') || target
746
782
  });
747
783
  return {
748
784
  $el: target,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@file-viewer/renderer-word",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Standalone DOCX, DOC, and OpenDocument renderer for File Viewer; RTF parsing is an explicit opt-in capability.",
@@ -58,9 +58,9 @@
58
58
  "LICENSE"
59
59
  ],
60
60
  "dependencies": {
61
- "@file-viewer/core": "3.0.0",
62
- "@file-viewer/doc": "3.0.0",
63
- "@file-viewer/docx": "0.3.28",
61
+ "@file-viewer/core": "3.0.2",
62
+ "@file-viewer/doc": "3.0.2",
63
+ "@file-viewer/docx": "0.3.29",
64
64
  "jszip": "^3.10.1"
65
65
  },
66
66
  "devDependencies": {