View | Details | Raw Unified | Return to bug 62793
Collapse All | Expand All

(-)a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java (+68 lines)
Lines 31-41 import java.util.List; Link Here
31
import java.util.Map;
31
import java.util.Map;
32
32
33
import org.apache.poi.POIDataSamples;
33
import org.apache.poi.POIDataSamples;
34
import org.apache.poi.ooxml.POIXMLDocumentPart;
35
import org.apache.poi.openxml4j.opc.PackagePart;
34
import org.apache.poi.sl.usermodel.PictureData.PictureType;
36
import org.apache.poi.sl.usermodel.PictureData.PictureType;
35
import org.apache.poi.util.IOUtils;
37
import org.apache.poi.util.IOUtils;
36
import org.apache.poi.xslf.XSLFTestDataSamples;
38
import org.apache.poi.xslf.XSLFTestDataSamples;
37
import org.junit.Test;
39
import org.junit.Test;
40
import org.openxmlformats.schemas.presentationml.x2006.main.CTExtension;
38
import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture;
41
import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture;
42
import org.w3c.dom.Node;
43
import org.w3c.dom.NodeList;
39
44
40
public class TestXSLFPictureShape {
45
public class TestXSLFPictureShape {
41
    private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
46
    private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
Lines 247-250 public class TestXSLFPictureShape { Link Here
247
        
252
        
248
        slideShow.close();
253
        slideShow.close();
249
    }
254
    }
255
256
    @Test
257
    public void testReadVideo() throws Exception {
258
        XMLSlideShow slideShow = XSLFTestDataSamples.openSampleDocument("video.pptx");
259
260
        assertEquals(1, slideShow.getSlides().size());
261
262
        XSLFSlide slide = slideShow.getSlides().get(0);
263
264
        assertEquals(1, slide.getShapes().size());
265
266
        XSLFPictureShape picture = (XSLFPictureShape)(slide.getShapes().get(0));
267
        CTPicture xPicture = (CTPicture)(picture.getXmlObject());
268
        boolean isVideo = xPicture.getNvPicPr().getNvPr().isSetVideoFile();
269
270
        assertTrue(isVideo);
271
272
        String videoLink = xPicture.getNvPicPr().getNvPr().getVideoFile().getLink();
273
274
        assertEquals("rId2", videoLink);
275
276
        List<CTExtension> extList = xPicture.getNvPicPr().getNvPr().getExtLst().getExtList();
277
278
        assertEquals(1, extList.size());
279
280
        // https://msdn.microsoft.com/en-us/library/dd950140(v=office.12).aspx
281
        String mediaExt = "{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}";
282
        CTExtension extension = extList.get(0);
283
        NodeList nodes = extension.getDomNode().getChildNodes();
284
285
        assertEquals(mediaExt, extension.getUri());
286
287
        String extVideoLink = null;
288
        for (int i = 0; i < nodes.getLength(); i++) {
289
            Node node = nodes.item(i);
290
            if (node.getNodeType() == Node.ELEMENT_NODE) {
291
                Node embed = node.getAttributes().getNamedItem("r:embed");
292
                if (embed != null) {
293
                    extVideoLink = embed.getNodeValue();
294
                }
295
            }
296
        }
297
298
        assertEquals("rId1", extVideoLink);
299
300
        POIXMLDocumentPart movie = slide.getRelationById(videoLink);
301
        POIXMLDocumentPart movieExt = slide.getRelationById(extVideoLink);
302
303
        assertNotNull(movie);
304
        assertNotNull(movieExt);
305
306
        PackagePart moviePackage = movie.getPackagePart();
307
        PackagePart moviePackageExt = movieExt.getPackagePart();
308
309
        assertEquals("/ppt/media/media1.mov", moviePackage.getPartName().getName());
310
        assertEquals("video/quicktime", moviePackage.getContentType());
311
        assertEquals("/ppt/media/media1.mov", moviePackageExt.getPartName().getName());
312
        assertEquals("video/quicktime", moviePackageExt.getContentType());
313
314
        byte[] movieBytes = IOUtils.toByteArray(moviePackage.getInputStream());
315
316
        assertEquals(463494, movieBytes.length);
317
    }
250
}
318
}

Return to bug 62793