删除.docx文件中的图像

我们可以选择使用xwpfdocument从java中的.docx文件中删除图片吗? 因为我试图在过去一周内做这件事,请回复我。 代码尝试:

 public static void imageProcess(XWPFDocument document) throws IOException { List pic=document.getAllPictures(); Iterator iterator=pic.iterator(); if (pic.size()>0) { for (XWPFParagraph para : document.getParagraphs()) { List runs = para.getRuns(); for( XWPFRun run : runs ){ run.getCTR().removeDrawing(0); } } } } 

例外:

  Exception in thread "main" java.lang.IndexOutOfBoundsException at org.apache.xmlbeans.impl.store.Xobj.removeElement(Xobj.java:2200) at org.apache.xmlbeans.impl.store.Xobj.remove_element(Xobj.java:2230) at org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTRImpl.removeDrawing(Unknown Source) at com.util.DocxUtil.imageProcess(DocxUtil.java:326) at com.util.DocxUtil.main(DocxUtil.java:60) 

如果在尝试删除项目#0的调用中遇到IndexOutOfBoundsException ,那么您的列表显然是空的。 因此,要么对空对象中的所有绘图进行空白检查,要么使用for循环 – 如果List为空,则不执行。

 for (XWPFRun run : runs) { CTR ctr = run.getCTR(); List lst = ctr.getDrawingList(); for (int i = 0; i < lst.size(); i++) { ctr.removeDrawing(i); } } 

试试这个 :

  for (XWPFRun run : paragraph.getRuns()) { CTDrawing [] arr = run.getCTR().getDrawingArray(); for(int k=0; k