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.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Refer link to see how to add place holder to create fixed template--
https://support.office.com/en-us/article/Add-a-text-placeholder-with-custom-prompt-text-85048846-c08c-4b7b-8f1a-fb25469903f3
Here is solution---
//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();