poi 删除word中的图片
在做一个生成word文档的程序,因为我使用了模版来生成 ,这个模版我想放在单例中
在我生成多个文件的时候 ,就会有图片不断的往这个模版里面塞,导致模版污染,所以
我自定义了清除图片的功能,但是始终无法清除干净,生成文件多了之后文件大小会增大,用word打开后输入个空格在保存,明显看到这个文件大小变小。以下是我的
删除图片的方法:
XWPFParagraph par = (XWPFParagraph) run.getParent();
XWPFDocument document = doc.getXWPFDocument().getXWPFDocument();
// 当数据为空时,视为初始化图片,这里只是删除了图片的引用
for (XWPFRun r : par.getRuns()) {
r.setText("照片", 0);
CTDrawing[] arr = r.getCTR().getDrawingArray();
for (int k = 0; k < arr.length; k++) {
r.getCTR().removeDrawing(k);
}
}
List<XWPFPictureData> pictures = document.getAllPictures();
PackagePartName partName=null;
for(XWPFPictureData pp:pictures) {
partName=pp.getPackagePart().getPartName();
if(null!=partName) {
PackagePart part = document.getPackage().getPart(partName);
if(null!=part) {
//删除图片流 删除引用
part.setDeleted(true);
String id = document.getRelationId(pp);
document.getPackagePart().removeRelationship(id);
document.getPackage().removePart(partName);
}
}
}
不知道我还有什么没删的。现在生成多个文件后执行上面删除后使用document.getAllPackagePictures();仍然得到一堆的XWPFPictureData 有没有大神做过这类的,麻烦指点指点