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 |
} |