如何使用POI Word完全删除关系?

时间:2017-07-11 13:52:21

标签: java image apache-poi relationship xwpf

目前我正在尝试加载现有文档,删除所有图像,然后重新添加它们。如果有人需要更多关于我为什么这样做的细节,我会很乐意提供它。

我遇到的问题是当我重新添加图像时,标签显示“r1:embed”而不是“r:embed”来列出blip Id。这导致在文档中显示“无法显示图片”消息。在进入并修改document.xml以将“r1:embed”的所有实例替换为“r:embed”后,图片显示就好了。

我假设这是因为删除图像后,document.xml.rels文件中的关系仍然存在。当图像重新添加时,它使用相同的图像和rIds,但标签将模式更改为“r1”而不是将其保持为“r”

a:blip snapshot

任何帮助都将不胜感激。

修改

这是我用来删除图片的代码:

    FileInputStream input = new FileInputStream(file);
    XWPFDocument document = new XWPFDocument(input);
    List<IBodyElement> elements = document.getBodyElements();
    for (IBodyElement element : elements) {
        if (element instanceof XWPFParagraph) {
            XWPFParagraph paragraph = (XWPFParagraph) element;
            List<XWPFRun> runs = paragraph.getRuns();
            for (XWPFRun run : runs) {
                while (run.getCTR().getDrawingList().size() > 0) {
                    run.getCTR().removeDrawing(0);
                }
            }
        }
    }

我还使用了“removePict()”方法,但是没有从文档中删除图像。我还尝试将removePict()和removeDrawing()与相应的while循环一起使用,但没有成功将它们完全从关系文件中删除。

谢谢!

0 个答案:

没有答案