有人有任何想法删除.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)
答案 0 :(得分:0)
在这一行:
runs.remove(piclist);
remove()
的结果不支持List<XWPFRun> getRuns()
。 Apache POI代码不支持它。这就是你得到UnsupportedOperationException的原因。这是预期的行为。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”标记这个问题。