2015-04-07 83 views
0

有没有人有任何想法删除.docx文件中的图片?我正在使用XWPFDocument,并尝试过这样。请帮忙。删除.docx文件中的图片

List<XWPFPictureData> piclist = document.getAllPictures();    
for (int i = 0; i < piclist.size(); i++)  
{ 
    for (XWPFParagraph p : document.getParagraphs())   
    { 
     List<XWPFRun> runs = p.getRuns(); 
     if (runs != null) 
     { 
      runs.remove(piclist); 
     } 
    } 
} 

例外:

ERROR [main] (DocxUtil.java:303) - 
Exception Caught: null java.lang.UnsupportedOperationException at 
java.util.Collections$UnmodifiableCollection.remove(Collections.java:1078) at 
com.test.util.DocxUtil.processImage(DocxUtil.java:296) at 
com.test.util.DocxUtil.main(DocxUtil.java:37) 
+0

你告诉我们你试过的东西,但不会发生什么情况:是否还有一些照片? *是否有*图片被删除?它挂了吗? –

+0

它抛出了错误 错误[主](DocxUtil.java:303) - 捕获到异常:空 java.lang.UnsupportedOperationException \t在java.util.Collections中的$ UnmodifiableCollection.remove(Collections.java:1078) \t com.test.util.DocxUtil.main(DocxUtil.java:37) 我也不确定我的方法是否正确或不。请告诉我如何进一步进行。 – Sherin

+0

我试过这段代码,我得到一个'UnsupportedOperationException'异常 – LittlePanda

回答

0

在这一行:

runs.remove(piclist); 
  1. remove()上不支持的List<XWPFRun> getRuns()结果。 Apache POI代码不支持它。这就是为什么你得到UnsupportedOperationException。这是预期的行为。
  2. 您尝试从XWPFRun列表中删除一个List<XWPFPictureData>。它不能工作。

下面是代码正常工作:

for (XWPFParagraph par : document.getParagraphs()) { 
    int pos = 0; 
    while (pos < par.getRuns().size()) { 
     XWPFRun run = par.getRuns().get(pos); 
     if (run.getEmbeddedPictures().size() > 0) { 
      par.removeRun(pos); 
     } else { 
      pos++; 
     } 
    } 
} 

更多一点:你的代码使用Apache POI。你应该用“apache-poi”来标记这个问题。