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

标签 java image xwpf

我们是否可以选择使用 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/

相关文章:

java - Apache POI,.getRuns() 未返回所有运行

java - 无法在 Java 中读取 Word 文档内容

java - 相同的 ArrayList 但不同的对象顺序

java - 从 groovy 调用 Spring 组件

javascript - 存储和检索图像数据 URL

image - 我们能不能通过 Canvas 得到真实的图片大小呢?

image - Node.js, Canvas : Image given has not completed loading

java - 使用 DirectoryChooser 保存文件时访问被拒绝

java - 将 Context 作为参数传递给 Singleton 类中的方法会导致内存泄漏

java - 通过 POST 将 ZIP 文件发送到 Base64 中的服务器