git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1526960 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_10_FINAL
@@ -252,6 +252,12 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor { | |||
// Slide text | |||
textRunsToText(ret, slide.getTextRuns()); | |||
// Table text | |||
for (Shape shape : slide.getShapes()){ | |||
if (shape instanceof Table){ | |||
extractTableText(ret, (Table)shape); | |||
} | |||
} | |||
// Slide footer, if set | |||
if (hf != null && hf.isFooterVisible() && hf.getFooterText() != null) { | |||
ret.append(hf.getFooterText() + "\n"); | |||
@@ -306,6 +312,23 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor { | |||
return ret.toString(); | |||
} | |||
private void extractTableText(StringBuffer ret, Table table) { | |||
for (int row = 0; row < table.getNumberOfRows(); row++){ | |||
for (int col = 0; col < table.getNumberOfColumns(); col++){ | |||
TableCell cell = table.getCell(row, col); | |||
//defensive null checks; don't know if they're necessary | |||
if (cell != null){ | |||
String txt = cell.getText(); | |||
txt = (txt == null) ? "" : txt; | |||
ret.append(txt); | |||
if (col < table.getNumberOfColumns()-1){ | |||
ret.append("\t"); | |||
} | |||
} | |||
} | |||
ret.append('\n'); | |||
} | |||
} | |||
private void textRunsToText(StringBuffer ret, TextRun[] runs) { | |||
if (runs==null) { | |||
return; |
@@ -367,4 +367,23 @@ public final class TestExtractor extends POITestCase { | |||
assertEquals(expectText, extractor.getText()); | |||
} | |||
} | |||
public void testTable() throws Exception{ | |||
ppe = new PowerPointExtractor(slTests.openResourceAsStream("54111.ppt")); | |||
String text = ppe.getText(); | |||
String target = "TH Cell 1\tTH Cell 2\tTH Cell 3\tTH Cell 4\n"+ | |||
"Row 1, Cell 1\tRow 1, Cell 2\tRow 1, Cell 3\tRow 1, Cell 4\n"+ | |||
"Row 2, Cell 1\tRow 2, Cell 2\tRow 2, Cell 3\tRow 2, Cell 4\n"+ | |||
"Row 3, Cell 1\tRow 3, Cell 2\tRow 3, Cell 3\tRow 3, Cell 4\n"+ | |||
"Row 4, Cell 1\tRow 4, Cell 2\tRow 4, Cell 3\tRow 4, Cell 4\n"+ | |||
"Row 5, Cell 1\tRow 5, Cell 2\tRow 5, Cell 3\tRow 5, Cell 4\n"; | |||
assertTrue(text.contains(target)); | |||
ppe = new PowerPointExtractor(slTests.openResourceAsStream("54722.ppt")); | |||
text = ppe.getText(); | |||
target = "this\tText\tis\twithin\ta\n"+ | |||
"table\t1\t2\t3\t4"; | |||
assertTrue(text.contains(target)); | |||
} | |||
} |