如何使用Apache POI API向pptx中添加的图像占位符添加图像? [英] How to Add image to image placeholder added in pptx using Apache POI API?
问题描述
我有预定义的带有文本和图像占位符的pptx模板,我如何从模板访问和修改这些占位符. 我可以使用POI pptx API直接向幻灯片中添加图像和文本,但是如何将其添加到模板的占位符.
请参阅链接,以了解如何添加占位符以创建固定模板- I have predefined pptx template with text and Image place holder, How i can access and modify these placeholder from template.
I can add image and text directly to slide using POI pptx API, but how to add same to placeholder of template. Refer link to see how to add place holder to create fixed template-- Here is solution---
这篇关于如何使用Apache POI API向pptx中添加的图像占位符添加图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
https://support.office.com/en-us/article/Add-a-text-placeholder-with-custom-prompt-text-85048846-c08c-4b7b-8f1a-fb25469903f3//read all shapes i.e place holder in array.
XMLSlideShow ppt = new XMLSlideShow(fin);
XSLFSlide[] slides = ppt.getSlides();
XSLFSlide slide1 =slides[0];
XSLFShape shapes[]= slide1.getShapes();
for(int i=0;i<shapes.length;i++){
System.out.println(shapes[i].getShapeName());
}
// add text to text place holder like this. assuming at index 0
XSLFShape title = shapes[0];
XSLFTextShape textShape = (XSLFTextShape) title;
textShape.clearText();
XSLFTextParagraph p = textShape.addNewTextParagraph();
XSLFTextRun r1 = p.addNewTextRun();
r1.setText("The");
r1.setFontColor(Color.blue);
r1.setFontSize(24.);
// replace picture text holder assuming at index2 2 and type autoshape
XSLFShape pic = shapes[2];
java.awt.geom.Rectangle2D anchor = pic.getAnchor();
byte[] pictureData = IOUtils.toByteArray(
new FileInputStream("C:\\Users\\gm807394\\Desktop\\Koala.jpg"));
int idx = ppt.addPicture(pictureData,
XSLFPictureData.PICTURE_TYPE_PNG);
XSLFPictureShape picture = slide1.createPicture(idx);
slide1.removeShape(pic);
picture.setAnchor(anchor);
FileOutputStream fos = new FileOutputStream(path);
ppt.write(fos);
fos.close();