docxmlater 5.3.3 → 5.5.0
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.
- package/dist/core/Document.d.ts +3 -0
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +89 -0
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +1 -0
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +180 -10
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/elements/Image.d.ts +2 -0
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +12 -5
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +1 -0
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +3 -0
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +1 -0
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/package.json +1 -1
|
@@ -39,6 +39,7 @@ export declare class DocumentParser {
|
|
|
39
39
|
private validateLoadedContent;
|
|
40
40
|
private parseParagraphWithOrder;
|
|
41
41
|
private parseOrderedParagraphChildren;
|
|
42
|
+
private parseRevisionFromXml;
|
|
42
43
|
private parseParagraphFromObject;
|
|
43
44
|
private parseParagraphPropertiesFromObject;
|
|
44
45
|
private assembleComplexFields;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAuB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ const Field_1 = require("../elements/Field");
|
|
|
38
38
|
const Hyperlink_1 = require("../elements/Hyperlink");
|
|
39
39
|
const ImageRun_1 = require("../elements/ImageRun");
|
|
40
40
|
const Paragraph_1 = require("../elements/Paragraph");
|
|
41
|
+
const Revision_1 = require("../elements/Revision");
|
|
41
42
|
const Run_1 = require("../elements/Run");
|
|
42
43
|
const Section_1 = require("../elements/Section");
|
|
43
44
|
const StructuredDocumentTag_1 = require("../elements/StructuredDocumentTag");
|
|
@@ -131,7 +132,7 @@ class DocumentParser {
|
|
|
131
132
|
const parsed = XMLParser_1.XMLParser.parseToObject(elementXml, {
|
|
132
133
|
trimValues: false,
|
|
133
134
|
});
|
|
134
|
-
const table = await this.parseTableFromObject(parsed["w:tbl"], relationshipManager, zipHandler, imageManager);
|
|
135
|
+
const table = await this.parseTableFromObject(parsed["w:tbl"], relationshipManager, zipHandler, imageManager, elementXml);
|
|
135
136
|
if (table)
|
|
136
137
|
bodyElements.push(table);
|
|
137
138
|
pos = next.pos + elementXml.length;
|
|
@@ -298,10 +299,16 @@ class DocumentParser {
|
|
|
298
299
|
return;
|
|
299
300
|
}
|
|
300
301
|
const paraContent = paraXml.substring(contentStart, contentEnd);
|
|
302
|
+
console.log(`[Revision Debug] Paragraph content (first 500 chars): ${paraContent.substring(0, 500)}`);
|
|
303
|
+
console.log(`[Revision Debug] Full paragraph content length: ${paraContent.length}`);
|
|
301
304
|
const children = [];
|
|
302
305
|
let runIndex = 0;
|
|
303
306
|
let hyperlinkIndex = 0;
|
|
304
307
|
let fieldIndex = 0;
|
|
308
|
+
let insIndex = 0;
|
|
309
|
+
let delIndex = 0;
|
|
310
|
+
let moveFromIndex = 0;
|
|
311
|
+
let moveToIndex = 0;
|
|
305
312
|
let searchPos = 0;
|
|
306
313
|
while (searchPos < paraContent.length) {
|
|
307
314
|
const tagStart = paraContent.indexOf("<", searchPos);
|
|
@@ -332,10 +339,48 @@ class DocumentParser {
|
|
|
332
339
|
});
|
|
333
340
|
searchPos = tagEnd + 1;
|
|
334
341
|
}
|
|
342
|
+
else if (tagName === "w:ins") {
|
|
343
|
+
children.push({
|
|
344
|
+
type: "w:ins",
|
|
345
|
+
pos: tagStart,
|
|
346
|
+
index: insIndex++,
|
|
347
|
+
});
|
|
348
|
+
searchPos = tagEnd + 1;
|
|
349
|
+
}
|
|
350
|
+
else if (tagName === "w:del") {
|
|
351
|
+
children.push({
|
|
352
|
+
type: "w:del",
|
|
353
|
+
pos: tagStart,
|
|
354
|
+
index: delIndex++,
|
|
355
|
+
});
|
|
356
|
+
searchPos = tagEnd + 1;
|
|
357
|
+
}
|
|
358
|
+
else if (tagName === "w:moveFrom") {
|
|
359
|
+
children.push({
|
|
360
|
+
type: "w:moveFrom",
|
|
361
|
+
pos: tagStart,
|
|
362
|
+
index: moveFromIndex++,
|
|
363
|
+
});
|
|
364
|
+
searchPos = tagEnd + 1;
|
|
365
|
+
}
|
|
366
|
+
else if (tagName === "w:moveTo") {
|
|
367
|
+
children.push({
|
|
368
|
+
type: "w:moveTo",
|
|
369
|
+
pos: tagStart,
|
|
370
|
+
index: moveToIndex++,
|
|
371
|
+
});
|
|
372
|
+
searchPos = tagEnd + 1;
|
|
373
|
+
}
|
|
335
374
|
else {
|
|
336
375
|
searchPos = tagEnd + 1;
|
|
337
376
|
}
|
|
338
377
|
}
|
|
378
|
+
const insXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:ins");
|
|
379
|
+
const delXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:del");
|
|
380
|
+
const moveFromXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:moveFrom");
|
|
381
|
+
const moveToXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:moveTo");
|
|
382
|
+
console.log(`[Extraction] ins: ${insXmls.length}, del: ${delXmls.length}, moveFrom: ${moveFromXmls.length}, moveTo: ${moveToXmls.length}`);
|
|
383
|
+
console.log(`[Scanning] total children: ${children.length}, ins markers: ${insIndex}, del markers: ${delIndex}, moveFrom markers: ${moveFromIndex}, moveTo markers: ${moveToIndex}`);
|
|
339
384
|
for (const child of children) {
|
|
340
385
|
if (child.type === "w:r") {
|
|
341
386
|
const runs = pElement["w:r"];
|
|
@@ -386,6 +431,107 @@ class DocumentParser {
|
|
|
386
431
|
}
|
|
387
432
|
}
|
|
388
433
|
}
|
|
434
|
+
else if (child.type === "w:ins") {
|
|
435
|
+
if (child.index < insXmls.length) {
|
|
436
|
+
const revisionXml = insXmls[child.index];
|
|
437
|
+
if (revisionXml) {
|
|
438
|
+
const revision = this.parseRevisionFromXml(revisionXml, "w:ins");
|
|
439
|
+
if (revision) {
|
|
440
|
+
paragraph.addRevision(revision);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
else if (child.type === "w:del") {
|
|
446
|
+
if (child.index < delXmls.length) {
|
|
447
|
+
const revisionXml = delXmls[child.index];
|
|
448
|
+
if (revisionXml) {
|
|
449
|
+
const revision = this.parseRevisionFromXml(revisionXml, "w:del");
|
|
450
|
+
if (revision) {
|
|
451
|
+
paragraph.addRevision(revision);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else if (child.type === "w:moveFrom") {
|
|
457
|
+
if (child.index < moveFromXmls.length) {
|
|
458
|
+
const revisionXml = moveFromXmls[child.index];
|
|
459
|
+
if (revisionXml) {
|
|
460
|
+
const revision = this.parseRevisionFromXml(revisionXml, "w:moveFrom");
|
|
461
|
+
if (revision) {
|
|
462
|
+
paragraph.addRevision(revision);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
else if (child.type === "w:moveTo") {
|
|
468
|
+
if (child.index < moveToXmls.length) {
|
|
469
|
+
const revisionXml = moveToXmls[child.index];
|
|
470
|
+
if (revisionXml) {
|
|
471
|
+
const revision = this.parseRevisionFromXml(revisionXml, "w:moveTo");
|
|
472
|
+
if (revision) {
|
|
473
|
+
paragraph.addRevision(revision);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
parseRevisionFromXml(revisionXml, tagName) {
|
|
481
|
+
try {
|
|
482
|
+
let revisionType;
|
|
483
|
+
switch (tagName) {
|
|
484
|
+
case "w:ins":
|
|
485
|
+
revisionType = "insert";
|
|
486
|
+
break;
|
|
487
|
+
case "w:del":
|
|
488
|
+
revisionType = "delete";
|
|
489
|
+
break;
|
|
490
|
+
case "w:moveFrom":
|
|
491
|
+
revisionType = "moveFrom";
|
|
492
|
+
break;
|
|
493
|
+
case "w:moveTo":
|
|
494
|
+
revisionType = "moveTo";
|
|
495
|
+
break;
|
|
496
|
+
default:
|
|
497
|
+
return null;
|
|
498
|
+
}
|
|
499
|
+
const idAttr = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:id");
|
|
500
|
+
const author = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:author");
|
|
501
|
+
const dateAttr = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:date");
|
|
502
|
+
const moveId = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:moveId");
|
|
503
|
+
if (!idAttr || !author) {
|
|
504
|
+
return null;
|
|
505
|
+
}
|
|
506
|
+
const id = parseInt(idAttr, 10);
|
|
507
|
+
const date = dateAttr ? new Date(dateAttr) : new Date();
|
|
508
|
+
const runXmls = XMLParser_1.XMLParser.extractElements(revisionXml, "w:r");
|
|
509
|
+
const runs = [];
|
|
510
|
+
for (const runXml of runXmls) {
|
|
511
|
+
const runObj = XMLParser_1.XMLParser.parseToObject(runXml, { trimValues: false });
|
|
512
|
+
const run = this.parseRunFromObject(runObj["w:r"]);
|
|
513
|
+
if (run) {
|
|
514
|
+
runs.push(run);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
if (runs.length === 0) {
|
|
518
|
+
return null;
|
|
519
|
+
}
|
|
520
|
+
const revision = new Revision_1.Revision({
|
|
521
|
+
id,
|
|
522
|
+
author,
|
|
523
|
+
date,
|
|
524
|
+
type: revisionType,
|
|
525
|
+
content: runs,
|
|
526
|
+
moveId,
|
|
527
|
+
});
|
|
528
|
+
return revision;
|
|
529
|
+
}
|
|
530
|
+
catch (error) {
|
|
531
|
+
logger_1.defaultLogger.warn("[DocumentParser] Failed to parse revision:", error instanceof Error
|
|
532
|
+
? { message: error.message, stack: error.stack }
|
|
533
|
+
: { error: String(error) });
|
|
534
|
+
return null;
|
|
389
535
|
}
|
|
390
536
|
}
|
|
391
537
|
async parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager) {
|
|
@@ -1667,7 +1813,7 @@ class DocumentParser {
|
|
|
1667
1813
|
}
|
|
1668
1814
|
return Object.keys(effects).length > 0 ? effects : undefined;
|
|
1669
1815
|
}
|
|
1670
|
-
async parseTableFromObject(tableObj, relationshipManager, zipHandler, imageManager) {
|
|
1816
|
+
async parseTableFromObject(tableObj, relationshipManager, zipHandler, imageManager, rawTableXml) {
|
|
1671
1817
|
try {
|
|
1672
1818
|
const table = new Table_1.Table();
|
|
1673
1819
|
if (tableObj["w:tblPr"]) {
|
|
@@ -1686,8 +1832,14 @@ class DocumentParser {
|
|
|
1686
1832
|
}
|
|
1687
1833
|
const rows = tableObj["w:tr"];
|
|
1688
1834
|
const rowChildren = Array.isArray(rows) ? rows : rows ? [rows] : [];
|
|
1689
|
-
|
|
1690
|
-
|
|
1835
|
+
let rowXmls = [];
|
|
1836
|
+
if (rawTableXml) {
|
|
1837
|
+
rowXmls = XMLParser_1.XMLParser.extractElements(rawTableXml, "w:tr");
|
|
1838
|
+
}
|
|
1839
|
+
for (let i = 0; i < rowChildren.length; i++) {
|
|
1840
|
+
const rowObj = rowChildren[i];
|
|
1841
|
+
const rawRowXml = i < rowXmls.length ? rowXmls[i] : undefined;
|
|
1842
|
+
const row = await this.parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager, rawRowXml);
|
|
1691
1843
|
if (row) {
|
|
1692
1844
|
table.addRow(row);
|
|
1693
1845
|
}
|
|
@@ -1771,7 +1923,7 @@ class DocumentParser {
|
|
|
1771
1923
|
}
|
|
1772
1924
|
}
|
|
1773
1925
|
}
|
|
1774
|
-
async parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager) {
|
|
1926
|
+
async parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager, rawRowXml) {
|
|
1775
1927
|
try {
|
|
1776
1928
|
const row = new TableRow_1.TableRow();
|
|
1777
1929
|
const trPr = rowObj["w:trPr"];
|
|
@@ -1787,8 +1939,14 @@ class DocumentParser {
|
|
|
1787
1939
|
}
|
|
1788
1940
|
const cells = rowObj["w:tc"];
|
|
1789
1941
|
const cellChildren = Array.isArray(cells) ? cells : cells ? [cells] : [];
|
|
1790
|
-
|
|
1791
|
-
|
|
1942
|
+
let cellXmls = [];
|
|
1943
|
+
if (rawRowXml) {
|
|
1944
|
+
cellXmls = XMLParser_1.XMLParser.extractElements(rawRowXml, "w:tc");
|
|
1945
|
+
}
|
|
1946
|
+
for (let i = 0; i < cellChildren.length; i++) {
|
|
1947
|
+
const cellObj = cellChildren[i];
|
|
1948
|
+
const rawCellXml = i < cellXmls.length ? cellXmls[i] : undefined;
|
|
1949
|
+
const cell = await this.parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager, rawCellXml);
|
|
1792
1950
|
if (cell) {
|
|
1793
1951
|
row.addCell(cell);
|
|
1794
1952
|
}
|
|
@@ -1912,7 +2070,7 @@ class DocumentParser {
|
|
|
1912
2070
|
}
|
|
1913
2071
|
return Object.keys(borders).length > 0 ? borders : undefined;
|
|
1914
2072
|
}
|
|
1915
|
-
async parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager) {
|
|
2073
|
+
async parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager, rawCellXml) {
|
|
1916
2074
|
try {
|
|
1917
2075
|
const cell = new TableCell_1.TableCell();
|
|
1918
2076
|
const tcPr = cellObj["w:tcPr"];
|
|
@@ -2030,8 +2188,20 @@ class DocumentParser {
|
|
|
2030
2188
|
: paragraphs
|
|
2031
2189
|
? [paragraphs]
|
|
2032
2190
|
: [];
|
|
2033
|
-
|
|
2034
|
-
|
|
2191
|
+
let paraXmls = [];
|
|
2192
|
+
if (rawCellXml) {
|
|
2193
|
+
paraXmls = XMLParser_1.XMLParser.extractElements(rawCellXml, "w:p");
|
|
2194
|
+
}
|
|
2195
|
+
for (let i = 0; i < paraChildren.length; i++) {
|
|
2196
|
+
const paraObj = paraChildren[i];
|
|
2197
|
+
const rawParaXml = i < paraXmls.length ? paraXmls[i] : undefined;
|
|
2198
|
+
let paragraph;
|
|
2199
|
+
if (rawParaXml) {
|
|
2200
|
+
paragraph = await this.parseParagraphWithOrder(rawParaXml, relationshipManager, zipHandler, imageManager);
|
|
2201
|
+
}
|
|
2202
|
+
else {
|
|
2203
|
+
paragraph = await this.parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager);
|
|
2204
|
+
}
|
|
2035
2205
|
if (paragraph) {
|
|
2036
2206
|
cell.addParagraph(paragraph);
|
|
2037
2207
|
}
|