POI-54722 table text in ppt files
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1526960 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ad8b09095e
commit
58dd7d7c0c
@ -252,6 +252,12 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor {
|
|||||||
// Slide text
|
// Slide text
|
||||||
textRunsToText(ret, slide.getTextRuns());
|
textRunsToText(ret, slide.getTextRuns());
|
||||||
|
|
||||||
|
// Table text
|
||||||
|
for (Shape shape : slide.getShapes()){
|
||||||
|
if (shape instanceof Table){
|
||||||
|
extractTableText(ret, (Table)shape);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Slide footer, if set
|
// Slide footer, if set
|
||||||
if (hf != null && hf.isFooterVisible() && hf.getFooterText() != null) {
|
if (hf != null && hf.isFooterVisible() && hf.getFooterText() != null) {
|
||||||
ret.append(hf.getFooterText() + "\n");
|
ret.append(hf.getFooterText() + "\n");
|
||||||
@ -306,6 +312,23 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor {
|
|||||||
return ret.toString();
|
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) {
|
private void textRunsToText(StringBuffer ret, TextRun[] runs) {
|
||||||
if (runs==null) {
|
if (runs==null) {
|
||||||
return;
|
return;
|
||||||
|
@ -367,4 +367,23 @@ public final class TestExtractor extends POITestCase {
|
|||||||
assertEquals(expectText, extractor.getText());
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
test-data/slideshow/54722.ppt
Normal file
BIN
test-data/slideshow/54722.ppt
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user