public XSLFPictureShape createPicture(String rel){ CTPicture sp = _spTree.addNewPic(); sp.set(XSLFPictureShape.prototype(_sheet.allocateShapeId(), rel)); XSLFPictureShape shape = new XSLFPictureShape(sp, _sheet); shape.setAnchor(new Rectangle2D.Double()); return shape; }
String blipId = p.getBlipId(); if (blipId == null) { LOG.log(POILogger.WARN, "unable to copy invalid picture shape"); String relId = getSheet().importBlip(blipId, p.getSheet()); CTPicture ct = (CTPicture)getXmlObject(); CTBlip blip = getBlipFill().getBlip(); blip.setEmbed(relId); XmlCursor c = obj[0].newCursor(); String id = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "embed"));//selectPath("declare namespace r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' $this//[@embed]"); String newId = getSheet().importBlip(id, p.getSheet()); c.setAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "embed"), newId); c.dispose();
@SuppressWarnings("WeakerAccess") protected String getBlipLink(){ CTBlip blip = getBlip(); if (blip != null) { String link = blip.getLink(); return (link.isEmpty()) ? null : link; } else { return null; } }
/** * Is this an internal picture (image data included within * the PowerPoint file), or an external linked picture * (image lives outside)? */ public boolean isExternalLinkedPicture() { return getBlipId() == null && getBlipLink() != null; }
/** * Return the data on the (internal) picture. * For an external linked picture, will return null */ public XSLFPictureData getPictureData() { if(_data == null){ String blipId = getBlipId(); if (blipId == null) { return null; } _data = (XSLFPictureData)getSheet().getRelationById(blipId); } return _data; }
/** * Resize this picture to the default size. * For PNG and JPEG resizes the image to 100%, * for other types sets the default size of 200x200 pixels. */ public void resize() { XSLFPictureData pict = getPictureData(); try { BufferedImage img = ImageIO.read(new ByteArrayInputStream(pict.getData())); setAnchor(new Rectangle2D.Double(0, 0, img.getWidth(), img.getHeight())); } catch (Exception e) { //default size is 200x200 setAnchor(new java.awt.Rectangle(50, 50, 200, 200)); } }
} else if (shape instanceof XSLFPictureShape) { XSLFPictureShape p = (XSLFPictureShape)shape; XSLFPictureData pd = p.getPictureData(); XSLFPictureData pdNew = getSheet().getSlideShow().addPicture(pd.getData(), pd.getType()); newShape = createPicture(pdNew);
/** * For an external linked picture, return the last-seen * path to the picture. * For an internal picture, returns null. */ public URI getPictureLink() { if (getBlipId() != null) { // Internal picture, nothing to return return null; } String rId = getBlipLink(); if (rId == null) { // No link recorded, nothing we can do return null; } PackagePart p = getSheet().getPackagePart(); PackageRelationship rel = p.getRelationship(rId); if (rel != null) { return rel.getTargetURI(); } return null; }
@Override void copy(XSLFShape sh){ super.copy(sh); XSLFPictureShape p = (XSLFPictureShape)sh; String blipId = p.getBlipId(); String relId = getSheet().importBlip(blipId, p.getSheet().getPackagePart()); CTPicture ct = (CTPicture)getXmlObject(); CTBlip blip = ct.getBlipFill().getBlip(); blip.setEmbed(relId); CTApplicationNonVisualDrawingProps nvPr = ct.getNvPicPr().getNvPr(); if(nvPr.isSetCustDataLst()) { // discard any custom tags associated with the picture being copied nvPr.unsetCustDataLst(); } } }
byte[] pptxpic = null; ChartUtilities.saveChartAsPNG(pngfile, chart, 1000, 800); pptxpic = IOUtils.toByteArray(new FileInputStream(pngfile)); int idx = pptxTemplate.addPicture(pptxpic, XSLFPictureData.PICTURE_TYPE_PNG); XSLFPictureShape pic = slidedips.createPicture(idx); pic.setAnchor(new java.awt.Rectangle(0, 60, 960, 630));
protected CTBlipFillProperties getBlipFill() { CTPicture ct = (CTPicture)getXmlObject(); CTBlipFillProperties bfp = ct.getBlipFill(); if (bfp != null) { return bfp; } String xquery = "declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main'; " + "declare namespace mc='http://schemas.openxmlformats.org/markup-compatibility/2006' " + ".//mc:Fallback/p:blipFill" ; XmlObject xo = selectProperty(XmlObject.class, xquery); try { xo = CTPicture.Factory.parse(xo.getDomNode()); } catch (XmlException xe) { return null; } return ((CTPicture)xo).getBlipFill(); }
shapes.add(new XSLFConnectorShape((CTConnector)ch, sheet)); } else if (ch instanceof CTPicture){ shapes.add(new XSLFPictureShape((CTPicture)ch, sheet)); } else if (ch instanceof CTGraphicalObjectFrame){ XSLFGraphicFrame shape = XSLFGraphicFrame.create((CTGraphicalObjectFrame)ch, sheet);
protected CTBlip getBlip(){ return getBlipFill().getBlip(); }
private String getBlipId(){ CTPicture ct = (CTPicture)getXmlObject(); return ct.getBlipFill().getBlip().getEmbed(); }
/** * Helper method for sheet and group shapes * * @param pictureShape the picture shapes whose relation is to be removed, * only if there are no more relations on its sheet to that picture */ void removePictureRelation(XSLFPictureShape pictureShape) { int numberOfRelations = 0; String targetBlipId = pictureShape.getBlipId(); for (XSLFShape shape : pictureShape.getSheet().getShapes()) { if (shape instanceof XSLFPictureShape) { XSLFPictureShape currentPictureShape = ((XSLFPictureShape) shape); String currentBlipId = currentPictureShape.getBlipId(); if (currentBlipId != null && currentBlipId.equals(targetBlipId)) { numberOfRelations++; } } } if (numberOfRelations <= 1) { removeRelation(pictureShape.getBlipId()); } }
for(XSLFShape shape : slide.getShapes()) { XSLFPictureShape image = (XSLFPictureShape) shape; image.getPictureData().setData(IOUtils.toByteArray(new FileInputStream("path_to_image")); }
/** * For an external linked picture, return the last-seen * path to the picture. * For an internal picture, returns null. */ public URI getPictureLink() { if (getBlipId() != null) { // Internal picture, nothing to return return null; } String rId = getBlipLink(); if (rId == null) { // No link recorded, nothing we can do return null; } PackagePart p = getSheet().getPackagePart(); PackageRelationship rel = p.getRelationship(rId); if (rel != null) { return rel.getTargetURI(); } return null; }
for (int i = 1; i <= 2; i++) { byte[] pictureData = IOUtils.toByteArray(new FileInputStream( "C:\\Users\\Ashok\\Pictures\\" + i + ".png")); int elementIndex = ppt.addPicture(pictureData, XSLFPictureData.PICTURE_TYPE_PNG); XSLFPictureShape picture = slide.createPicture(elementIndex); // Set picture position and size picture.setAnchor(new Rectangle(positionX, positionY, width, height)); List<XSLFPictureData> allPictures = ppt.getAllPictures(); System.out.println(allPictures.size()); }
/** * Is this an internal picture (image data included within * the PowerPoint file), or an external linked picture * (image lives outside)? */ public boolean isExternalLinkedPicture() { return getBlipId() == null && getBlipLink() != null; }
protected CTBlipFillProperties getBlipFill() { CTPicture ct = (CTPicture)getXmlObject(); CTBlipFillProperties bfp = ct.getBlipFill(); if (bfp != null) { return bfp; } String xquery = "declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main'; " + "declare namespace mc='http://schemas.openxmlformats.org/markup-compatibility/2006' " + ".//mc:Fallback/p:blipFill" ; XmlObject xo = selectProperty(XmlObject.class, xquery); try { xo = CTPicture.Factory.parse(xo.getDomNode()); } catch (XmlException xe) { return null; } return ((CTPicture)xo).getBlipFill(); }