diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java index 0e8bbb20ad..e8689a6b9e 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java @@ -609,13 +609,19 @@ public class XWPFRun { text.append(((CTText) o).getStringValue()); } } + if (o instanceof CTPTab) { text.append("\t"); } + if (o instanceof CTBr) { + text.append("\n"); + } if (o instanceof CTEmpty) { // Some inline text elements get returned not as // themselves, but as CTEmpty, owing to some odd // definitions around line 5642 of the XSDs + // This bit works around it, and replicates the above + // rules for that case String tagName = o.getDomNode().getNodeName(); if ("w:tab".equals(tagName)) { text.append("\t"); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java index 116b699066..d1cc2eea53 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java @@ -88,7 +88,7 @@ public class TestXWPFWordExtractor extends TestCase { ps++; } } - assertEquals(103, ps); + assertEquals(134, ps); } public void testGetWithHyperlinks() { @@ -128,7 +128,7 @@ public class TestXWPFWordExtractor extends TestCase { "\n" + "More on page one\n" + "\n\n" + - "End of page 1\n\n" + + "End of page 1\n\n\n" + "This is page two. It also has a three column heading, and a three column footer.\n" + "Footer Left\tFooter Middle\tFooter Right\n", extractor.getText() @@ -151,7 +151,7 @@ public class TestXWPFWordExtractor extends TestCase { "\n" + "More on page one\n" + "\n\n" + - "End of page 1\n\n" + + "End of page 1\n\n\n" + "This is page two. It also has a three column heading, and a three column footer.\n" + "The footer of the first page\n" + "Footer Left\tFooter Middle\tFooter Right\n",