use of org.apache.poi.xslf.usermodel.XSLFTextShape in project poi by apache.
the class XSLFPowerPointExtractor method extractText.
private static void extractText(XSLFShapeContainer data, boolean skipPlaceholders, StringBuilder text) {
for (XSLFShape s : data) {
if (s instanceof XSLFShapeContainer) {
extractText((XSLFShapeContainer) s, skipPlaceholders, text);
} else if (s instanceof XSLFTextShape) {
XSLFTextShape ts = (XSLFTextShape) s;
// Skip non-customised placeholder text
if (!(skipPlaceholders && ts.isPlaceholder())) {
text.append(ts.getText());
text.append("\n");
}
} else if (s instanceof XSLFTable) {
XSLFTable ts = (XSLFTable) s;
// Skip non-customised placeholder text
for (XSLFTableRow r : ts) {
for (XSLFTableCell c : r) {
text.append(c.getText());
text.append("\t");
}
text.append("\n");
}
}
}
}
use of org.apache.poi.xslf.usermodel.XSLFTextShape in project poi by apache.
the class Step1 method main.
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("Input file is required");
return;
}
FileInputStream fis = new FileInputStream(args[0]);
XMLSlideShow ppt = new XMLSlideShow(fis);
fis.close();
for (XSLFSlide slide : ppt.getSlides()) {
System.out.println("Title: " + slide.getTitle());
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTextShape) {
XSLFTextShape tsh = (XSLFTextShape) shape;
for (XSLFTextParagraph p : tsh) {
System.out.println("Paragraph level: " + p.getIndentLevel());
for (XSLFTextRun r : p) {
System.out.println(r.getRawText());
System.out.println(" bold: " + r.isBold());
System.out.println(" italic: " + r.isItalic());
System.out.println(" underline: " + r.isUnderlined());
System.out.println(" font.family: " + r.getFontFamily());
System.out.println(" font.size: " + r.getFontSize());
System.out.println(" font.color: " + r.getFontColor());
}
}
}
}
}
ppt.close();
}
use of org.apache.poi.xslf.usermodel.XSLFTextShape in project poi by apache.
the class Step2 method main.
public static void main(String[] args) throws Exception {
XMLSlideShow ppt = new XMLSlideShow();
// first see what slide layouts are available by default
System.out.println("Available slide layouts:");
for (XSLFSlideMaster master : ppt.getSlideMasters()) {
for (XSLFSlideLayout layout : master.getSlideLayouts()) {
System.out.println(layout.getType());
}
}
// blank slide
/*XSLFSlide blankSlide =*/
ppt.createSlide();
XSLFSlideMaster defaultMaster = ppt.getSlideMasters().get(0);
// title slide
XSLFSlideLayout titleLayout = defaultMaster.getLayout(SlideLayout.TITLE);
XSLFSlide slide1 = ppt.createSlide(titleLayout);
XSLFTextShape title1 = slide1.getPlaceholder(0);
title1.setText("First Title");
// title and content
XSLFSlideLayout titleBodyLayout = defaultMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
XSLFSlide slide2 = ppt.createSlide(titleBodyLayout);
XSLFTextShape title2 = slide2.getPlaceholder(0);
title2.setText("Second Title");
XSLFTextShape body2 = slide2.getPlaceholder(1);
// unset any existing text
body2.clearText();
body2.addNewTextParagraph().addNewTextRun().setText("First paragraph");
body2.addNewTextParagraph().addNewTextRun().setText("Second paragraph");
body2.addNewTextParagraph().addNewTextRun().setText("Third paragraph");
FileOutputStream out = new FileOutputStream("step2.pptx");
ppt.write(out);
out.close();
ppt.close();
}
use of org.apache.poi.xslf.usermodel.XSLFTextShape 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