在使用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

回到顶部