删除.docx文件中的图片

时间:2015-04-07 06:44:20

标签: java xwpf

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

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)   

1 个答案:

答案 0 :(得分:0)

在这一行:

runs.remove(piclist);
    remove()的结果不支持
  1. List<XWPFRun> getRuns()。 Apache POI代码不支持它。这就是你得到UnsupportedOperationException的原因。这是预期的行为。
  2. 您尝试从XWPFRun列表中删除一个List<XWPFPictureData>。它无法运作。
  3. 以下代码运作良好:

    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”标记这个问题。