我有一个场景,我需要从pptx(source.pptx)复制几张幻灯片,并根据幻灯片中提供的演示说明将其下载为单独的pptx文件(output.pptx)。 我正在使用apache poi来实现它。这是我的代码。
String filename = filepath+"\\source.pptx";
try {
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(filename));
XMLSlideShow outputppt = new XMLSlideShow();
XSLFSlide[] slides = ppt.getSlides();
for (int i = 0; i < slides.length; i++) {
try {
XSLFNotes mynotes = slides[i].getNotes();
for (XSLFShape shape : mynotes) {
if (shape instanceof XSLFTextShape) {
XSLFTextShape txShape = (XSLFTextShape) shape;
for (XSLFTextParagraph xslfParagraph : txShape.getTextParagraphs()) {
if (xslfParagraph.getText().equals("NOTES1") || xslfParagraph.getText().equals("NOTES2")) {
outputppt.createSlide().importContent(slides[i]);
}
}
}
}
} catch (Exception e) {
}
}
FileOutputStream out = new FileOutputStream("output.pptx");
outputppt.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
当我打开创建的output.pptx时,我得到以下内容 错误: &#34; PowerPoint发现output.pptx中的内容有问题 PowerPoint可以尝试修复演示文稿 如果您信任此演示文稿的来源,请单击“修复”。&#34;
点击修复后:&#34; PowerPoint在merged.pptx中删除了不可读的内容 [修复]。您应该查看此演示文稿以确定是否有任何内容 意外地改变或删除了#34; 我可以看到空白幻灯片&#34;点击添加标题&#34;和&#34;点击添加字幕&#34;
有任何解决此问题的建议吗?
答案 0 :(得分:0)
此代码适用于复制幻灯片内容,布局和备注。 如果您想关注原始问题,只需根据需要修改代码即可。我认为你很简单:
将备注内容复制到幻灯片中
Column B
答案 1 :(得分:-1)
在某些文本框为空的情况下,我遇到了同样的错误。通过在创建幻灯片时始终在所有占位符中设置空文本来解决此问题。
XSLFSlide slide = presentation.createSlide(slideMaster.getLayout(layout));
// remove any placeholder texts
for (XSLFTextShape ph : slide.getPlaceholders()) {
ph.clearText();
ph.setText("");
}