kiwiwings

extract metro-blob content from ppt

Sep 27th, 2015
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.09 KB | None | 0 0
  1. package org.apache.poi.hslf;
  2.  
  3. import static org.junit.Assert.assertTrue;
  4.  
  5. import java.io.ByteArrayInputStream;
  6. import java.lang.reflect.Constructor;
  7.  
  8. import org.apache.poi.ddf.AbstractEscherOptRecord;
  9. import org.apache.poi.ddf.EscherComplexProperty;
  10. import org.apache.poi.ddf.EscherProperties;
  11. import org.apache.poi.ddf.EscherTertiaryOptRecord;
  12. import org.apache.poi.hslf.usermodel.HSLFShape;
  13. import org.apache.poi.hslf.usermodel.HSLFSlide;
  14. import org.apache.poi.hslf.usermodel.HSLFSlideShow;
  15. import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl;
  16. import org.apache.poi.openxml4j.opc.OPCPackage;
  17. import org.apache.poi.openxml4j.opc.PackagePart;
  18. import org.apache.poi.openxml4j.opc.PackagingURIHelper;
  19. import org.apache.poi.xslf.usermodel.XSLFSheet;
  20. import org.apache.poi.xslf.usermodel.XSLFTextBox;
  21. import org.junit.Test;
  22. import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape;
  23. import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
  24.  
  25. public class TestTeresa {
  26.     @Test
  27.     public void bla() throws Exception {
  28.         HSLFSlideShow ppt = new HSLFSlideShow(new HSLFSlideShowImpl("test.ppt"));
  29.         // get slides
  30.         HSLFSlide slide0 = ppt.getSlides().get(0);
  31.         HSLFShape sh = slide0.getShapes().get(0);
  32.         AbstractEscherOptRecord opt = sh.getEscherChild(EscherTertiaryOptRecord.RECORD_ID);
  33.         EscherComplexProperty ep = (EscherComplexProperty)opt.lookup(EscherProperties.GROUPSHAPE__METROBLOB);
  34.        
  35.         ByteArrayInputStream bis = new ByteArrayInputStream(ep.getComplexData());
  36.         OPCPackage opc = OPCPackage.open(bis);
  37.         PackagePart ppn = opc.getPart(PackagingURIHelper.createPartName("/drs/shapexml.xml"));
  38.         CTGroupShape gs = CTGroupShape.Factory.parse(ppn.getInputStream());
  39.        
  40.         Constructor<XSLFTextBox> c = XSLFTextBox.class.getDeclaredConstructor(CTShape.class, XSLFSheet.class);
  41.         c.setAccessible(true);
  42.         XSLFTextBox tb = c.newInstance(gs.getSpArray(0), null);
  43.  
  44.         assertTrue(tb.getTextParagraphs().get(2).getTextRuns().get(0).isStrikethrough());
  45.         opc.close();
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment