Remove images in .docx file

匿名 (未验证) 提交于 2019-12-03 07:47:04

问题:

Do we have the option to remove pictures from .docx file in java using xwpfdocument? Please reply me since I'm trying to do it for past one week. Code tried:

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

Exception:

 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)    

回答1:

If you get an IndexOutOfBoundsException on a call where you try to remove item #0, then your list is obviously empty. So either do an emptiness check on all the drawings in your Run object, or use a for loop - which won't execute if your List<CTDrawing> is empty.

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


回答2:

Try this :

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!