use of org.apache.poi.xslf.usermodel.XSLFGroupShape in project CodeUtils by boredream.
the class TempUtils method replacePPT.
public static void replacePPT() {
Map<String, String> replaceMap = new HashMap<String, String>();
// replaceMap.put("实战名称", "微博实战:Android 视频播放");
// replaceMap.put("知识点1", "我页面的实现");
replaceMap.put("我页面的实现", "知识点1");
replaceMap.put("个人中心页面的基本实现", "知识点2");
replaceMap.put("个人中心页面菜单栏相关效果", "知识点3");
replaceMap.put("个人中心页面背景图变化效果", "");
try {
// 获取ppt文件
FileInputStream is = new FileInputStream("temp" + File.separator + "office" + File.separator + "ppt2007.pptx");
XMLSlideShow ppt = new XMLSlideShow(is);
is.close();
// 获取幻灯片
for (XSLFSlide slide : ppt.getSlides()) {
// 获取每一张幻灯片中的shape
for (XSLFShape shape : slide.getShapes()) {
// position on the canvas
Rectangle2D anchor = shape.getAnchor();
if (shape instanceof XSLFTextShape) {
XSLFTextShape txShape = (XSLFTextShape) shape;
// 获取其中的文字
String text = txShape.getText();
// 替换文字内容
text = replaceAllMap(text, replaceMap);
txShape.setText(text);
if (text.contains("{picture}")) {
// // 替换图片
// byte[] pictureData = IOUtils.toByteArray(
// new FileInputStream("E:\\33.png"));
// int idx = ppt.addPicture(pictureData,
// XSLFPictureData.PICTURE_TYPE_PNG);
// XSLFPictureShape pic = slide.createPicture(idx);
// // 设置XSLFPictureShape的位置信息
// pic.setAnchor(anchor);
// // 移除XSLFTextShape
// slide.removeShape(txShape);
System.out.println("替换图片");
}
} else if (shape instanceof XSLFGroupShape) {
System.out.println("替换group");
for (XSLFShape sunshape : ((XSLFGroupShape) shape).getShapes()) {
XSLFTextShape txSunShape = (XSLFTextShape) sunshape;
// 获取其中的文字
String text = txSunShape.getText();
// 替换文字内容
text = replaceAllMap(text, replaceMap);
txSunShape.setText(text);
// if (text.contains("{picture}")) {
// // 替换图片
// byte[] pictureData = IOUtils
// .toByteArray(new FileInputStream(
// "E:\\33.png"));
// int idx = ppt.addPicture(pictureData,
// XSLFPictureData.PICTURE_TYPE_PNG);
// XSLFPictureShape pic = slide.createPicture(idx);
// slide.removeShape(txSunShape);
// pic.setAnchor(anchor);
// }
}
} else if (shape instanceof XSLFPictureShape) {
System.out.println("替换picture");
XSLFPictureShape pShape = (XSLFPictureShape) shape;
XSLFPictureData pData = pShape.getPictureData();
System.out.println(pData.getFileName());
} else {
System.out.println("Process me: " + shape.getClass());
}
}
}
File file = new File("temp" + File.separator + "office" + File.separator + "ppt2007plus_new.pptx");
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Aggregations