2015-04-07 102 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」來標記這個問題。