Fix bug 61787, which was introduced by bug 58067: Change how deleted content is detected to not incorrectly see too much text as deleted.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1819405 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2017-12-28 08:45:51 +00:00
parent 451c26874a
commit 9eb8fedf5d
3 changed files with 23 additions and 3 deletions

View File

@ -148,6 +148,12 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para
// This implementation does not preserve the tagging information // This implementation does not preserve the tagging information
buildRunsInOrderFromXml(o); buildRunsInOrderFromXml(o);
} }
if (o instanceof CTRunTrackChange) {
// add all the insertions as text
for (CTRunTrackChange change : ((CTRunTrackChange) o).getInsArray()) {
buildRunsInOrderFromXml(change);
}
}
} }
c.dispose(); c.dispose();
} }
@ -189,7 +195,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para
if (run instanceof XWPFRun) { if (run instanceof XWPFRun) {
XWPFRun xRun = (XWPFRun) run; XWPFRun xRun = (XWPFRun) run;
// don't include the text if reviewing is enabled and this is a deleted run // don't include the text if reviewing is enabled and this is a deleted run
if (!xRun.getCTR().isSetRsidDel()) { if (xRun.getCTR().getDelTextArray().length == 0) {
out.append(xRun); out.append(xRun);
} }
} else if (run instanceof XWPFSDT) { } else if (run instanceof XWPFSDT) {

View File

@ -414,7 +414,9 @@ public final class TestXWPFParagraph {
//CTMoveBookmarkImpl into ooxml-lite. //CTMoveBookmarkImpl into ooxml-lite.
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Tika-792.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Tika-792.docx");
XWPFParagraph paragraph = doc.getParagraphs().get(0); XWPFParagraph paragraph = doc.getParagraphs().get(0);
assertEquals("s", paragraph.getText()); assertEquals("", paragraph.getText());
paragraph = doc.getParagraphs().get(1);
assertEquals("b", paragraph.getText());
doc.close(); doc.close();
} }
@ -612,7 +614,19 @@ public final class TestXWPFParagraph {
} }
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()); 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());
} }
@Test
public void test61787() throws IOException {
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("61787.docx");
StringBuilder str = new StringBuilder();
for(XWPFParagraph par : doc.getParagraphs()) {
str.append(par.getText()).append("\n");
}
String s = str.toString();
assertTrue("Having text: \n" + s + "\nTrimmed lenght: " + s.trim().length(), s.trim().length() > 0);
}
/** /**
* Tests for numbered lists * Tests for numbered lists
* *

Binary file not shown.