[英]ERROR : Caused by: java.lang.IllegalArgumentException: Relationship null doesn't start with this part /ppt/slides/slide3.xml
我正在与Apache Poi xslf一起导出ppt文件。 首先,我有一个包含3张幻灯片的模板集:标题幻灯片,摘要幻灯片和第三张幻灯片
我复制了第三张幻灯片(我将其作为模板),以便像在数据库中一样复制许多数据/图形。
因此,为了做到这一点:
XMLSlideShow slideShow = new XMLSlideShow(dlfile.getContentStream());
XSLFSlide[] slides = slideShow.getSlides();
XSLFSlide createdSlide = slideShow.createSlide(slides[2].getSlideLayout());
//get content from slide to createdslide
createdSlide.importContent(slides[2]);
//... add data to created slide
我在行上出错: createdSlide.importContent(slides[2]);
Caused by: java.lang.IllegalArgumentException: Relationship null doesn't start with this part /ppt/slides/slide3.xml
at org.apache.poi.openxml4j.opc.PackagePart.getRelatedPart(PackagePart.java:468)
at org.apache.poi.xslf.usermodel.XSLFSheet.importBlip(XSLFSheet.java:521)
at org.apache.poi.xslf.usermodel.XSLFSlide.importContent(XSLFSlide.java:235)
PS:此代码可以与另一个模板一起使用。 我需要根据用户选择使用不同的模板。 (当我使用liferay时,模板存储在db中)。
我搜索了几个小时,但徒劳! 我什至不明白错误的含义。
任何链接/帮助将不胜感激。
该错误来自org.apache.poi.openxml4j.opc.PackagePart.getRelatedPart代码行468:
throw new IllegalArgumentException("Relationship " + rel + " doesn't start with this part " + _partName);
。
该错误指出rel
为空。 因此在代码行521中的org.apache.poi.xslf.usermodel.XSLFSheet.importBlip :
blipPart = packagePart.getRelatedPart(blipRel);
已将blipRel
移交为null。 因此,在代码行235中的org.apache.poi.xslf.usermodel.XSLFSlide.importContent :
String relId = importBlip(blipId, src.getPackagePart());
已将blipId
移交为null。
如果幻灯片3中模板中的图片之一不是嵌入式图片而是链接图片,则这很清楚。 编码:
@Override
public XSLFSlide importContent(XSLFSheet src){
super.importContent(src);
XSLFBackground bgShape = getBackground();
if(bgShape != null) {
CTBackground bg = (CTBackground)bgShape.getXmlObject();
if(bg.isSetBgPr() && bg.getBgPr().isSetBlipFill()){
CTBlip blip = bg.getBgPr().getBlipFill().getBlip();
String blipId = blip.getEmbed();
String relId = importBlip(blipId, src.getPackagePart());
blip.setEmbed(relId);
}
}
return this;
}
仅考虑嵌入的blip数据。
从您的代码行中,我可以看到您正在使用apache poi
3.9版。 但是据我目前的版本来看,这直到现在都没有改变。 仅考虑嵌入的Bilp数据。
因此,请查看您的模板,并确保所有图片均已嵌入且未链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.