diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java index a81ab3b1e..57ff6bcea 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java @@ -215,7 +215,13 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public String getText() { StringBuffer out = new StringBuffer(); for (IRunElement run : iruns) { - if (run instanceof XWPFSDT) { + if (run instanceof XWPFRun) { + XWPFRun xRun = (XWPFRun) run; + // don't include the text if reviewing is enabled and this is a deleted run + if (!xRun.getCTR().isSetRsidDel()) { + out.append(xRun.toString()); + } + } else if (run instanceof XWPFSDT) { out.append(((XWPFSDT) run).getContent().getText()); } else { out.append(run.toString()); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java index d9fede9b2..b877451aa 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java @@ -584,4 +584,15 @@ public final class TestXWPFParagraph { assertNull(p.getRun(null)); doc.close(); } + + @Test + public void test58067() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("58067.docx"); + + StringBuilder str = new StringBuilder(); + for(XWPFParagraph par : doc.getParagraphs()) { + str.append(par.getText()).append("\n"); + } + assertEquals("This is a test.\n\n\n\n3\n4\n5\n\n\n\nThis is a whole paragraph where one word is deleted.\n", str.toString()); + } } diff --git a/test-data/document/58067.docx b/test-data/document/58067.docx new file mode 100644 index 000000000..ede9abbe5 Binary files /dev/null and b/test-data/document/58067.docx differ