From 18a232fac243245a2b91f0dbba163c62c5b9cd2e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 8 Jun 2025 14:06:14 +0100 Subject: Ignore deleted table rows --- NEWS | 2 ++ lib/docx/body-reader.js | 6 ++++++ test/docx/body-reader.tests.js | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/NEWS b/NEWS index f9b245c..8c3c95a 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,8 @@ elements, such as table cells. Previously, the wrapping elements would have been ignored. +* Ignore deleted table rows. + # 1.9.1 * Ignore AlternateContent elements when there is no Fallback element. diff --git a/lib/docx/body-reader.js b/lib/docx/body-reader.js index 2ab5ba7..ad2dd53 100644 --- a/lib/docx/body-reader.js +++ b/lib/docx/body-reader.js @@ -480,6 +480,12 @@ function BodyReader(options) { function readTableRow(element) { var properties = element.firstOrEmpty("w:trPr"); + + var isDeleted = !!properties.first("w:del"); + if (isDeleted) { + return emptyResult(); + } + var isHeader = !!properties.first("w:tblHeader"); return readXmlElements(element.children).map(function(children) { return documents.TableRow(children, {isHeader: isHeader}); diff --git a/test/docx/body-reader.tests.js b/test/docx/body-reader.tests.js index 9413b2e..c60ef0d 100644 --- a/test/docx/body-reader.tests.js +++ b/test/docx/body-reader.tests.js @@ -1267,6 +1267,43 @@ test("no vertical cell merging if merged cells do not line up", function() { ])); }); +test("when row is marked as deleted in row properties then row is ignored", function() { + var tableXml = xml.element("w:tbl", {}, [ + xml.element("w:tr", {}, [ + xml.element("w:tc", {}, [ + xml.element("w:p", {}, [ + runOfText("Row 1") + ]) + ]) + ]), + + xml.element("w:tr", {}, [ + xml.element("w:trPr", {}, [ + xml.element("w:del") + ]), + xml.element("w:tc", {}, [ + xml.element("w:p", {}, [ + runOfText("Row 2") + ]) + ]) + ]) + ]); + + var result = readXmlElement(tableXml); + + assert.deepEqual(result.value, new documents.Table([ + new documents.TableRow([ + new documents.TableCell([ + new documents.Paragraph([ + new documents.Run([ + new documents.Text("Row 1") + ]) + ]) + ]) + ]) + ])); +}); + test("warning if non-row in table", function() { var tableXml = new XmlElement("w:tbl", {}, [ new XmlElement("w:p") -- cgit v1.2.3