diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java index 97b4ab8cb..95a8f0bc2 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java @@ -170,16 +170,25 @@ public class XSLFPictureShape extends XSLFSimpleShape @SuppressWarnings("WeakerAccess") protected String getBlipLink(){ - String link = getBlip().getLink(); - if (link.isEmpty()) return null; - return link; + CTBlip blip = getBlip(); + if (blip != null) { + String link = blip.getLink(); + if (link.isEmpty()) return null; + return link;} else { + return null; + } } @SuppressWarnings("WeakerAccess") protected String getBlipId(){ - String id = getBlip().getEmbed(); - if (id.isEmpty()) return null; - return id; + CTBlip blip = getBlip(); + if (blip != null) { + String id = getBlip().getEmbed(); + if (id.isEmpty()) return null; + return id; + } else { + return null; + } } @Override diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java index 48b081699..8dbc8ca23 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java @@ -17,12 +17,7 @@ package org.apache.poi.xslf; import static org.apache.poi.POITestCase.assertContains; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.Assert.*; import java.awt.Color; import java.awt.Dimension; @@ -93,6 +88,25 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTShape; public class TestXSLFBugs { private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance(); + @Test + public void bug62929() throws Exception { + try(XMLSlideShow ss1 = XSLFTestDataSamples.openSampleDocument("missing-blip-fill.pptx")) { + assertEquals(1, ss1.getSlides().size()); + + XSLFSlide slide = ss1.getSlides().get(0); + + assertEquals(slide.getShapes().size(), 1); + + XSLFPictureShape picture = (XSLFPictureShape)slide.getShapes().get(0); + + assertEquals(picture.getShapeId(), 662); + assertFalse(picture.isExternalLinkedPicture()); + assertNull(picture.getPictureData()); + assertNull(picture.getPictureLink()); + assertNull(picture.getClipping()); + } + } + @Test public void bug62736() throws Exception { XMLSlideShow ss1 = XSLFTestDataSamples.openSampleDocument("bug62736.pptx"); diff --git a/test-data/slideshow/missing-blip-fill.pptx b/test-data/slideshow/missing-blip-fill.pptx new file mode 100644 index 000000000..62e5f675d Binary files /dev/null and b/test-data/slideshow/missing-blip-fill.pptx differ