Fix bug 58067: XWPF: don't return deleted text when document is in review-mode

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1722715 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2016-01-03 13:28:01 +00:00
parent 5283af50e3
commit cb441adcb4
3 changed files with 18 additions and 1 deletions

View File

@ -215,7 +215,13 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para
public String getText() { public String getText() {
StringBuffer out = new StringBuffer(); StringBuffer out = new StringBuffer();
for (IRunElement run : iruns) { 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()); out.append(((XWPFSDT) run).getContent().getText());
} else { } else {
out.append(run.toString()); out.append(run.toString());

View File

@ -584,4 +584,15 @@ public final class TestXWPFParagraph {
assertNull(p.getRun(null)); assertNull(p.getRun(null));
doc.close(); 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());
}
} }

Binary file not shown.