kiwiwings

extract texts from a textshape with bullets

Aug 24th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.11 KB | None | 0 0
  1. package org.apache.poi.hslf.extractor;
  2.  
  3. import java.io.FileInputStream;
  4. import java.util.List;
  5.  
  6. import org.apache.poi.hslf.usermodel.HSLFShape;
  7. import org.apache.poi.hslf.usermodel.HSLFShapeContainer;
  8. import org.apache.poi.hslf.usermodel.HSLFSlide;
  9. import org.apache.poi.hslf.usermodel.HSLFSlideShow;
  10. import org.apache.poi.hslf.usermodel.HSLFTextParagraph;
  11. import org.apache.poi.hslf.usermodel.HSLFTextRun;
  12. import org.apache.poi.hslf.usermodel.HSLFTextShape;
  13. import org.apache.poi.sl.usermodel.TextParagraph.BulletStyle;
  14. import org.junit.Test;
  15.  
  16. // sample for thread:
  17. // http://apache-poi.1045710.n5.nabble.com/ANNOUNCE-Apache-POI-3-13-beta1-released-tt5719469.html#a5719837
  18. public class TestTeresa {
  19.     @Test
  20.     public void doit() throws Exception {
  21.         FileInputStream fis = new FileInputStream("6_contingency_tables.ppt");
  22.         HSLFSlideShow ppt = new HSLFSlideShow(fis);
  23.         fis.close();
  24.        
  25.         StringBuilder sb = new StringBuilder();
  26.        
  27.         List<HSLFSlide> slides = ppt.getSlides();
  28.         handleContainer(slides.get(1), sb);
  29.         sb.append("---\n");
  30.         handleContainer(slides.get(2), sb);
  31.         sb.append("---\n");
  32.        
  33.         System.out.println(sb);
  34.     }
  35.  
  36.     void handleContainer(HSLFShapeContainer sc, StringBuilder sb) {
  37.         for (HSLFShape s : sc) {
  38.             if (s instanceof HSLFTextShape) {
  39.                 HSLFTextShape ts = (HSLFTextShape)s;
  40.                 for (HSLFTextParagraph p : ts.getTextParagraphs()) {
  41.                     for (int i=0; i<p.getIndentLevel(); i++) {
  42.                         sb.append("   ");
  43.                     }
  44.                     BulletStyle bs = p.getBulletStyle();
  45.                     if (bs != null) {
  46.                         sb.append("* ");
  47.                     }
  48.                     for (HSLFTextRun r : p.getTextRuns()) {
  49.                         sb.append(r.getRawText());
  50.                     }
  51.                     sb.append("\n");
  52.                 }
  53.             } else if (s instanceof HSLFShapeContainer) {
  54.                 handleContainer((HSLFShapeContainer)s, sb);
  55.             }
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment