You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2018/04/20 20:00:46 UTC
svn commit: r1829677 - in /poi/trunk/src: java/org/apache/poi/sl/extractor/
java/org/apache/poi/sl/usermodel/ ooxml/java/org/apache/poi/xslf/usermodel/
ooxml/testcases/org/apache/poi/xslf/extractor/
scratchpad/src/org/apache/poi/hslf/usermodel/
Author: kiwiwings
Date: Fri Apr 20 20:00:46 2018
New Revision: 1829677
URL: http://svn.apache.org/viewvc?rev=1829677&view=rev
Log:
#61459 - handle slide layouts in extractor
Modified:
poi/trunk/src/java/org/apache/poi/sl/extractor/SlideShowExtractor.java
poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
Modified: poi/trunk/src/java/org/apache/poi/sl/extractor/SlideShowExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/extractor/SlideShowExtractor.java?rev=1829677&r1=1829676&r2=1829677&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/extractor/SlideShowExtractor.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/extractor/SlideShowExtractor.java Fri Apr 20 20:00:46 2018
@@ -116,30 +116,6 @@ public class SlideShowExtractor<
public String getText() {
final StringBuilder sb = new StringBuilder();
- if (masterByDefault) {
- for (final MasterSheet<S,P> master : slideshow.getSlideMasters()) {
- for (final Shape<S,P> shape : master) {
- if (shape instanceof TextShape) {
- final TextShape<S,P> ts = (TextShape<S,P>)shape;
- final String text = ts.getText();
- if (text == null || text.isEmpty() || "*".equals(text)) {
- continue;
- }
- if (ts.isPlaceholder()) {
- // don't bother about boiler plate text on master sheets
- LOG.log(POILogger.INFO, "Ignoring boiler plate (placeholder) text on slide master:", text);
- continue;
- }
- sb.append(text);
- if (!text.endsWith("\n")) {
- sb.append("\n");
- }
-
- }
- }
- }
- }
-
for (final Slide<S, P> slide : slideshow.getSlides()) {
sb.append(getText(slide));
}
@@ -154,6 +130,17 @@ public class SlideShowExtractor<
printShapeText(slide, sb);
}
+ if (masterByDefault) {
+ final MasterSheet<S,P> ms = slide.getMasterSheet();
+ printSlideMaster(ms, sb);
+
+ // only print slide layout, if it's a different instance
+ final MasterSheet<S,P> sl = slide.getSlideLayout();
+ if (sl != ms) {
+ printSlideMaster(sl, sb);
+ }
+ }
+
if (commentsByDefault) {
printComments(slide, sb);
}
@@ -165,6 +152,31 @@ public class SlideShowExtractor<
return sb.toString();
}
+ private void printSlideMaster(final MasterSheet<S,P> master, final StringBuilder sb) {
+ if (master == null) {
+ return;
+ }
+ for (final Shape<S,P> shape : master) {
+ if (shape instanceof TextShape) {
+ final TextShape<S,P> ts = (TextShape<S,P>)shape;
+ final String text = ts.getText();
+ if (text == null || text.isEmpty() || "*".equals(text)) {
+ continue;
+ }
+ if (ts.isPlaceholder()) {
+ // don't bother about boiler plate text on master sheets
+ LOG.log(POILogger.INFO, "Ignoring boiler plate (placeholder) text on slide master:", text);
+ continue;
+ }
+ sb.append(text);
+ if (!text.endsWith("\n")) {
+ sb.append("\n");
+ }
+
+ }
+ }
+ }
+
private String printHeaderReturnFooter(final Sheet<S,P> sheet, final StringBuilder sb) {
final Sheet<S, P> m = (sheet instanceof Slide) ? sheet.getMasterSheet() : sheet;
final StringBuilder footer = new StringBuilder("\n");
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java?rev=1829677&r1=1829676&r2=1829677&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java Fri Apr 20 20:00:46 2018
@@ -76,4 +76,11 @@ public interface Slide<
* @return the comment(s) for this slide
*/
List<? extends Comment> getComments();
+
+ /**
+ * @return the assigned slide layout
+ *
+ * @since POI 4.0.0
+ */
+ MasterSheet getSlideLayout();
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java?rev=1829677&r1=1829676&r2=1829677&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java Fri Apr 20 20:00:46 2018
@@ -141,6 +141,7 @@ implements Slide<XSLFShape,XSLFTextParag
return getSlideLayout();
}
+ @Override
public XSLFSlideLayout getSlideLayout(){
if(_layout == null){
for (POIXMLDocumentPart p : getRelations()) {
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java?rev=1829677&r1=1829676&r2=1829677&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java Fri Apr 20 20:00:46 2018
@@ -177,7 +177,6 @@ public class TestXSLFPowerPointExtractor
}
@Test
- @Ignore("currently slidelayouts aren't yet supported")
public void testGetMasterText() throws Exception {
try (XMLSlideShow xml = openPPTX("WithMaster.pptx");
SlideShowExtractor extractor = new SlideShowExtractor(xml)) {
@@ -205,13 +204,10 @@ public class TestXSLFPowerPointExtractor
String wholeText =
"First page title\n" +
"First page subtitle\n" +
- "This is the Master Title\n" +
"This text comes from the Master Slide\n" +
"\n" +
- // TODO Detect we didn't have a title, and include the master one
"2nd page subtitle\n" +
"Footer from the master slide\n" +
- "This is the Master Title\n" +
"This text comes from the Master Slide\n";
assertEquals(wholeText, text);
}
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java?rev=1829677&r1=1829676&r2=1829677&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java Fri Apr 20 20:00:46 2018
@@ -501,4 +501,12 @@ public final class HSLFSlide extends HSL
return false;
}
}
+
+ @Override
+ public HSLFMasterSheet getSlideLayout(){
+ // TODO: find out how we can find the mastersheet base on the slide layout type, i.e.
+ // getSlideRecord().getSlideAtom().getSSlideLayoutAtom().getGeometryType()
+ return getMasterSheet();
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org