docxmlater 7.7.0 → 7.7.3

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.
@@ -66,6 +66,9 @@ export declare class DocumentParser {
66
66
  private parseTablePropertyExceptionsFromObject;
67
67
  private parseTableBordersFromObject;
68
68
  private parseTableCellFromObject;
69
+ private extractCellContentInOrder;
70
+ private isExactTag;
71
+ private findClosingTag;
69
72
  private parseSDTFromObject;
70
73
  private extractInstructionFromContent;
71
74
  private extractInstructionFromRawXML;
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"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"}
@@ -770,12 +770,12 @@ class DocumentParser {
770
770
  }
771
771
  if (pPrObj["w:ind"]) {
772
772
  const ind = pPrObj["w:ind"];
773
- if (ind["@_w:left"])
774
- paragraph.setLeftIndent(parseInt(ind["@_w:left"], 10));
775
- if (ind["@_w:right"])
776
- paragraph.setRightIndent(parseInt(ind["@_w:right"], 10));
777
- if (ind["@_w:firstLine"])
778
- paragraph.setFirstLineIndent(parseInt(ind["@_w:firstLine"], 10));
773
+ if (ind["@_w:left"] !== undefined)
774
+ paragraph.setLeftIndent(parseInt(String(ind["@_w:left"]), 10));
775
+ if (ind["@_w:right"] !== undefined)
776
+ paragraph.setRightIndent(parseInt(String(ind["@_w:right"]), 10));
777
+ if (ind["@_w:firstLine"] !== undefined)
778
+ paragraph.setFirstLineIndent(parseInt(String(ind["@_w:firstLine"]), 10));
779
779
  }
780
780
  if (pPrObj["w:spacing"]) {
781
781
  const spacing = pPrObj["w:spacing"];
@@ -800,9 +800,6 @@ class DocumentParser {
800
800
  const numPr = Array.isArray(numPrRaw) ? numPrRaw[0] : numPrRaw;
801
801
  const numId = numPr?.["w:numId"]?.["@_w:val"];
802
802
  const ilvl = numPr?.["w:ilvl"]?.["@_w:val"] || "0";
803
- console.log('[DEBUG] numPrRaw:', JSON.stringify(numPrRaw).substring(0, 100));
804
- console.log('[DEBUG] numPr:', JSON.stringify(numPr).substring(0, 100));
805
- console.log('[DEBUG] numId:', numId, 'ilvl:', ilvl);
806
803
  if (numId) {
807
804
  paragraph.setNumbering(parseInt(numId, 10), parseInt(ilvl, 10));
808
805
  }
@@ -2728,35 +2725,34 @@ class DocumentParser {
2728
2725
  }
2729
2726
  }
2730
2727
  }
2731
- const paragraphs = cellObj["w:p"];
2732
- const paraChildren = Array.isArray(paragraphs)
2733
- ? paragraphs
2734
- : paragraphs
2735
- ? [paragraphs]
2736
- : [];
2737
- let paraXmls = [];
2738
2728
  if (rawCellXml) {
2739
- if (rawCellXml.includes('Bullet 3')) {
2740
- console.log(`[DEBUG parseTableCellFromObject] rawCellXml FULL LENGTH for Bullet 3:`, rawCellXml.length);
2741
- const pPrChangeIdx = rawCellXml.indexOf('w:pPrChange');
2742
- if (pPrChangeIdx !== -1) {
2743
- console.log(`[DEBUG parseTableCellFromObject] rawCellXml around pPrChange:`, rawCellXml.substring(pPrChangeIdx - 50, pPrChangeIdx + 200));
2729
+ const cellContent = this.extractCellContentInOrder(rawCellXml);
2730
+ let paragraphIndex = 0;
2731
+ for (const item of cellContent) {
2732
+ if (item.type === "paragraph") {
2733
+ const paragraph = await this.parseParagraphWithOrder(item.xml, relationshipManager, zipHandler, imageManager);
2734
+ if (paragraph) {
2735
+ cell.addParagraph(paragraph);
2736
+ paragraphIndex++;
2737
+ }
2738
+ }
2739
+ else if (item.type === "table" || item.type === "sdt") {
2740
+ cell.addRawNestedContent(paragraphIndex, item.xml, item.type);
2744
2741
  }
2745
2742
  }
2746
- paraXmls = XMLParser_1.XMLParser.extractElements(rawCellXml, "w:p");
2747
2743
  }
2748
- for (let i = 0; i < paraChildren.length; i++) {
2749
- const paraObj = paraChildren[i];
2750
- const rawParaXml = i < paraXmls.length ? paraXmls[i] : undefined;
2751
- let paragraph;
2752
- if (rawParaXml) {
2753
- paragraph = await this.parseParagraphWithOrder(rawParaXml, relationshipManager, zipHandler, imageManager);
2754
- }
2755
- else {
2756
- paragraph = await this.parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager);
2757
- }
2758
- if (paragraph) {
2759
- cell.addParagraph(paragraph);
2744
+ else {
2745
+ const paragraphs = cellObj["w:p"];
2746
+ const paraChildren = Array.isArray(paragraphs)
2747
+ ? paragraphs
2748
+ : paragraphs
2749
+ ? [paragraphs]
2750
+ : [];
2751
+ for (const paraObj of paraChildren) {
2752
+ const paragraph = await this.parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager);
2753
+ if (paragraph) {
2754
+ cell.addParagraph(paragraph);
2755
+ }
2760
2756
  }
2761
2757
  }
2762
2758
  return cell;
@@ -2768,6 +2764,98 @@ class DocumentParser {
2768
2764
  return null;
2769
2765
  }
2770
2766
  }
2767
+ extractCellContentInOrder(cellXml) {
2768
+ const result = [];
2769
+ let contentStart = 0;
2770
+ const tcPrStart = cellXml.indexOf("<w:tcPr");
2771
+ if (tcPrStart !== -1) {
2772
+ const tcPrEnd = this.findClosingTag(cellXml, "w:tcPr", tcPrStart);
2773
+ if (tcPrEnd !== -1) {
2774
+ contentStart = tcPrEnd;
2775
+ }
2776
+ }
2777
+ const contentEnd = cellXml.lastIndexOf("</w:tc>");
2778
+ if (contentEnd === -1)
2779
+ return result;
2780
+ const content = cellXml.substring(contentStart, contentEnd);
2781
+ let pos = 0;
2782
+ while (pos < content.length) {
2783
+ const pStart = content.indexOf("<w:p", pos);
2784
+ const tblStart = content.indexOf("<w:tbl", pos);
2785
+ const sdtStart = content.indexOf("<w:sdt", pos);
2786
+ let nextStart = -1;
2787
+ let nextType = null;
2788
+ let nextTag = "";
2789
+ if (pStart !== -1 &&
2790
+ this.isExactTag(content, pStart, "w:p") &&
2791
+ (nextStart === -1 || pStart < nextStart)) {
2792
+ nextStart = pStart;
2793
+ nextType = "paragraph";
2794
+ nextTag = "w:p";
2795
+ }
2796
+ if (tblStart !== -1 &&
2797
+ this.isExactTag(content, tblStart, "w:tbl") &&
2798
+ (nextStart === -1 || tblStart < nextStart)) {
2799
+ nextStart = tblStart;
2800
+ nextType = "table";
2801
+ nextTag = "w:tbl";
2802
+ }
2803
+ if (sdtStart !== -1 &&
2804
+ this.isExactTag(content, sdtStart, "w:sdt") &&
2805
+ (nextStart === -1 || sdtStart < nextStart)) {
2806
+ nextStart = sdtStart;
2807
+ nextType = "sdt";
2808
+ nextTag = "w:sdt";
2809
+ }
2810
+ if (nextStart === -1 || nextType === null)
2811
+ break;
2812
+ const elementEnd = this.findClosingTag(content, nextTag, nextStart);
2813
+ if (elementEnd === -1) {
2814
+ pos = nextStart + 1;
2815
+ continue;
2816
+ }
2817
+ const elementXml = content.substring(nextStart, elementEnd);
2818
+ result.push({ type: nextType, xml: elementXml });
2819
+ pos = elementEnd;
2820
+ }
2821
+ return result;
2822
+ }
2823
+ isExactTag(content, position, tagName) {
2824
+ const afterTag = content[position + 1 + tagName.length];
2825
+ return (afterTag === ">" ||
2826
+ afterTag === "/" ||
2827
+ afterTag === " " ||
2828
+ afterTag === "\t" ||
2829
+ afterTag === "\n" ||
2830
+ afterTag === "\r");
2831
+ }
2832
+ findClosingTag(content, tagName, startPos) {
2833
+ const openTag = `<${tagName}`;
2834
+ const closeTag = `</${tagName}>`;
2835
+ const openTagEnd = content.indexOf(">", startPos);
2836
+ if (openTagEnd !== -1 && content[openTagEnd - 1] === "/") {
2837
+ return openTagEnd + 1;
2838
+ }
2839
+ let depth = 1;
2840
+ let pos = openTagEnd + 1;
2841
+ while (pos < content.length && depth > 0) {
2842
+ const nextOpen = content.indexOf(openTag, pos);
2843
+ const nextClose = content.indexOf(closeTag, pos);
2844
+ if (nextClose === -1)
2845
+ break;
2846
+ if (nextOpen !== -1 && nextOpen < nextClose) {
2847
+ if (this.isExactTag(content, nextOpen, tagName)) {
2848
+ depth++;
2849
+ }
2850
+ pos = nextOpen + openTag.length;
2851
+ }
2852
+ else {
2853
+ depth--;
2854
+ pos = nextClose + closeTag.length;
2855
+ }
2856
+ }
2857
+ return depth === 0 ? pos : -1;
2858
+ }
2771
2859
  async parseSDTFromObject(sdtObj, relationshipManager, zipHandler, imageManager) {
2772
2860
  try {
2773
2861
  if (!sdtObj)