Patch from Tim Allison from bug #55142 - Not all XWPF SDT block
s need newlines git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1496458 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c1d02cd0f5
commit
678991d868
@ -83,18 +83,23 @@ public class XWPFSDTContent {
|
||||
|
||||
public String getText(){
|
||||
StringBuilder text = new StringBuilder();
|
||||
boolean addNewLine = false;
|
||||
for (int i = 0; i < bodyElements.size(); i++){
|
||||
Object o = bodyElements.get(i);
|
||||
if (o instanceof XWPFParagraph){
|
||||
text.append(((XWPFParagraph)o).getText());
|
||||
addNewLine = true;
|
||||
} else if (o instanceof XWPFTable){
|
||||
text.append(((XWPFTable)o).getText());
|
||||
addNewLine = true;
|
||||
} else if (o instanceof XWPFSDT){
|
||||
text.append(((XWPFSDT)o).getContent().getText());
|
||||
addNewLine = true;
|
||||
} else if (o instanceof XWPFRun){
|
||||
text.append(((XWPFRun)o).toString());
|
||||
addNewLine = false;
|
||||
}
|
||||
if (i < bodyElements.size()-1){
|
||||
if (addNewLine == true && i < bodyElements.size()-1){
|
||||
text.append("\n");
|
||||
}
|
||||
}
|
||||
|
@ -94,6 +94,31 @@ public final class TestXWPFSDT extends TestCase {
|
||||
assertEquals("SDT as cell known failure", false, found);
|
||||
}
|
||||
|
||||
/**
|
||||
* POI-55142 and Tika 1130
|
||||
*/
|
||||
public void testNewLinesBetweenRuns() throws Exception{
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug55142.docx");
|
||||
List<XWPFSDT> sdts = extractAllSDTs(doc);
|
||||
List<String> targs = new ArrayList<String>();
|
||||
//these test newlines and tabs in paragraphs/body elements
|
||||
targs.add("Rich-text1 abcdefghi");
|
||||
targs.add("Rich-text2 abcd\t\tefgh");
|
||||
targs.add("Rich-text3 abcd\nefg");
|
||||
targs.add("Rich-text4 abcdefg");
|
||||
targs.add("Rich-text5 abcdefg\nhijk");
|
||||
targs.add("Plain-text1 abcdefg");
|
||||
targs.add("Plain-text2 abcdefg\nhijk\nlmnop");
|
||||
//this tests consecutive runs within a cell (not a paragraph)
|
||||
//this test case was triggered by Tika-1130
|
||||
targs.add("sdt_incell2 abcdefg");
|
||||
|
||||
for (int i = 0; i < sdts.size(); i++){
|
||||
XWPFSDT sdt = sdts.get(i);
|
||||
assertEquals(targs.get(i), targs.get(i), sdt.getContent().getText());
|
||||
}
|
||||
}
|
||||
|
||||
private List<XWPFSDT> extractAllSDTs(XWPFDocument doc){
|
||||
|
||||
List<XWPFSDT> sdts = new ArrayList<XWPFSDT>();
|
||||
|
BIN
test-data/document/Bug55142.docx
Normal file
BIN
test-data/document/Bug55142.docx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user