使用Java从DOCX中删除物理映像



我使用apache poi 3.17从模板生成docx。在工作时,我用必要的图像替换空白图像,用我自己的id替换CTDrawing中的relationId。这将在文档中留下未使用的图像文件。我想完全删除这些图像。

在apache poi的源代码中进行了一些挖掘之后,我找到了自己替换图像的最佳方法。

private boolean replace_image(XWPFDocument docx, String img_to_replace, String img_source)
{
try {
if (!new File(img_source).exists()) 
return false;
List<XWPFPictureData> doc_pics = docx.getAllPictures();
for(XWPFPictureData cur_pic : doc_pics)
{   
if (!cur_pic.getFileName().equals(img_to_replace))
continue;
PackagePart pic_package_part = cur_pic.getPackagePart();
byte [] picbytes = IOUtils.toByteArray(new FileInputStream(img_source));
try (OutputStream outputStream = pic_package_part.getOutputStream()){
outputStream.write(picbytes);
} 
catch (Exception e)
{
return false;
}
return true;
}
} 
catch (Exception e) 
{
return false;
}


return false;
}

相关内容

  • 没有找到相关文章

最新更新