From dcc11f4043636395cfefc1b2511ac46aa58abcbf Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Thu, 17 Nov 2011 17:35:42 +0000 Subject: [PATCH] Bugzilla 51803: fixed HSLF TextExtractor to extract content from master slide git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1203295 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../hslf/extractor/PowerPointExtractor.java | 17 ++++++++++++++++- .../src/org/apache/poi/hslf/model/Sheet.java | 13 ++++--------- .../poi/hslf/extractor/TestExtractor.java | 8 +++++--- test-data/slideshow/master_text.ppt | Bin 71168 -> 117760 bytes 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index ee49e67d78..ace9d11642 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 51803 - fixed HSLF TextExtractor to extract content from master slide 52190 - null check on XWPF setFontFamily 52062 - ensure that temporary files in SXSSF are deleted 50936 - Exception parsing MS Word 8.0 file (as duplicate of 47958) diff --git a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java index 8a195ac258..6610cde2ce 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java @@ -221,7 +221,22 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor { if (getSlideText) { if (getMasterText) { for (SlideMaster master : _show.getSlidesMasters()) { - textRunsToText(ret, master.getTextRuns()); + for(Shape sh : master.getShapes()){ + if(sh instanceof TextShape){ + if(MasterSheet.isPlaceholder(sh)) { + // don't bother about boiler + // plate text on master + // sheets + continue; + } + TextShape tsh = (TextShape)sh; + String text = tsh.getText(); + ret.append(text); + if (!text.endsWith("\n")) { + ret.append("\n"); + } + } + } } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java b/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java index e524665395..7850d774b1 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java @@ -24,7 +24,6 @@ import org.apache.poi.hslf.usermodel.SlideShow; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Vector; import java.awt.*; /** @@ -122,7 +121,7 @@ public abstract class Sheet { * For a given PPDrawing, grab all the TextRuns */ public static TextRun[] findTextRuns(PPDrawing ppdrawing) { - Vector runsV = new Vector(); + final List runsV = new ArrayList(); EscherTextboxWrapper[] wrappers = ppdrawing.getTextboxWrappers(); for (int i = 0; i < wrappers.length; i++) { int s1 = runsV.size(); @@ -132,15 +131,11 @@ public abstract class Sheet { findTextRuns(wrappers[i].getChildRecords(), runsV); int s2 = runsV.size(); if (s2 != s1){ - TextRun t = (TextRun) runsV.get(runsV.size()-1); + TextRun t = runsV.get(runsV.size()-1); t.setShapeId(wrappers[i].getShapeId()); } } - TextRun[] runs = new TextRun[runsV.size()]; - for (int i = 0; i < runs.length; i++) { - runs[i] = (TextRun) runsV.get(i); - } - return runs; + return runsV.toArray(new TextRun[runsV.size()]); } /** @@ -151,7 +146,7 @@ public abstract class Sheet { * @param records the records to build from * @param found vector to add any found to */ - protected static void findTextRuns(Record[] records, Vector found) { + protected static void findTextRuns(Record[] records, List found) { // Look for a TextHeaderAtom for (int i = 0, slwtIndex=0; i < (records.length - 1); i++) { if (records[i] instanceof TextHeaderAtom) { diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java b/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java index c457c9c8c4..56eb0a0d9e 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java @@ -292,13 +292,15 @@ public final class TestExtractor extends TestCase { // Initially not there String text = ppe.getText(); - assertFalse(text.contains("Master Header Text")); + assertFalse(text.contains("Text that I added to the master slide")); // Enable, shows up ppe.setMasterByDefault(true); text = ppe.getText(); - assertTrue(text.contains("Master Header Text")); - + assertTrue(text.contains("Text that I added to the master slide")); + + // Make sure placeholder text does not come out + assertFalse(text.contains("Click to edit Master")); // Now with another file only containing master text // Will always show up diff --git a/test-data/slideshow/master_text.ppt b/test-data/slideshow/master_text.ppt index a748e8b2170172d92202d60ffd74743de0b036b2..cdcf4bc005822111c07bcbb5c5a6e69066c61661 100644 GIT binary patch literal 117760 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 literal 71168 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