gpt4 book ai didi

java - 删除 .docx 文件中的图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:11 25 4
gpt4 key购买 nike

我们是否可以选择使用 xwpfdocument.docx 文件中删除图片?请回复我,因为过去一周我一直在尝试这样做。代码尝试:

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)

最佳答案

如果你得到一个 IndexOutOfBoundsException在您尝试删除项目 #0 的调用中,您的列表显然是空的。因此,要么对 Run 中的所有图纸进行空检查。对象,或使用 for 循环 - 如果您的 List<CTDrawing> 将不会执行是空的。

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

关于java - 删除 .docx 文件中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29839147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com