在使用poi合并两个ppt的时候发现有图片丢失
我的代码是这个样子的,有人遇到过这个问题嘛
//creating empty presentation XMLSlideShow ppt = new XMLSlideShow();
//taking the two presentations that are to be merged
String file1 = "D:\\var\\ppt\\test\\简单的自我介绍PPT模板.pptx";
String file2 = "D:\\var\\ppt\\test\\清新孟菲斯自我介绍PPT模板.pptx";
String[] inputs = {file2,file1};
for(String arg : inputs) {
FileInputStream inputstream = new FileInputStream(arg);
XMLSlideShow src = new XMLSlideShow(inputstream);
inputstream.close();
for(XSLFSlide srcSlide : src.getSlides()){
//merging the contents
XSLFSlideLayout src_sl = srcSlide.getSlideLayout();
XSLFSlideMaster src_sm = srcSlide.getSlideMaster();
XMLSlideShow srcSlideShow = srcSlide.getSlideShow();
Dimension pageSize = srcSlideShow.getPageSize();
ppt.setPageSize(pageSize);
XSLFSlide pptSlide = ppt.createSlide();
XSLFSlideLayout slideLayout = pptSlide.getSlideLayout();
XSLFSlideMaster slideMaster = pptSlide.getSlideMaster();
slideLayout.importContent(src_sl);
slideMaster.importContent(src_sm);
pptSlide.importContent(srcSlide);
List<XSLFPictureData> pictureDatas = srcSlideShow.getPictureData();
for (XSLFPictureData pictureData : pictureDatas){
ppt.addPicture(pictureData.getInputStream(),pictureData.getType());
}
}
}
String file3 = "D:\\var\\ppt\\test\\combinedpresentation.pptx";
//creating the file object
FileOutputStream out = new FileOutputStream(file3);
// saving the changes to a file
ppt.write(out);
System.out.println("Merging done successfully");
out.close();
回答:
建议可以试试spire.presentation for java来合并文档,这个库有免费版的,支持10以内的ppt文档,商业版无页数显示但有水印
import com.spire.presentation.*;public class MergeFiles2 {
public static void main(String[] args)throws Exception {
//加载文档1,文档2
Presentation ppt1 = new Presentation();
ppt1.loadFromFile("test1.pptx");
Presentation ppt2 = new Presentation();
ppt2.loadFromFile("test2.pptx");
//遍历文档1的所有幻灯片,添加到文档2
for(int i = 0;i<ppt1.getSlides().getCount();i++){
ppt2.getSlides().append(ppt1.getSlides().get(i));
}
//保存文档2
ppt2.saveToFile("merge2.pptx",FileFormat.PPTX_2013);
ppt2.dispose();
}
}
回答:
把生成的pptx文件后缀改成zip,或者直接使用bindZip打开;
打开后查看media文件夹,图片丢失应该是这里没有图片或者图片内容不对导致的。
比如文件夹内文件名是 media1.jpg
查看对应sildes/_rel 目录查找 看看关联文件名不正确还是缺少文件
如果单纯缺少文件可以调试看看,实在不行zip直接写入进去
如果文件关联不对应该是代码有bug
以上是 在使用poi合并两个ppt的时候发现有图片丢失 的全部内容, 来源链接: utcz.com/p/944350.html