Java 如何完全使用POI Word删除关系?
目前,我正在尝试加载现有文档,删除所有图像,然后重新添加它们。如果有人需要我为什么这么做的更多细节,我很乐意提供 我面临的问题是,当我重新添加图像时,标签显示“r1:embed”而不是“r:embed”以列出光点Id。这会导致文档中显示“图片无法显示”消息。在进入并修改document.xml以将“r1:embed”的所有实例替换为“r:embed”之后,图片显示得很好 我假设这是因为删除图像后,document.xml.rels文件中仍然存在这种关系。当图像被添加回时,它使用相同的图像和RID,但是标记将模式更改为“r1”,而不是保持为“r” 任何帮助都将不胜感激 编辑 这是我用来删除图像的代码:Java 如何完全使用POI Word删除关系?,java,image,apache-poi,relationship,xwpf,Java,Image,Apache Poi,Relationship,Xwpf,目前,我正在尝试加载现有文档,删除所有图像,然后重新添加它们。如果有人需要我为什么这么做的更多细节,我很乐意提供 我面临的问题是,当我重新添加图像时,标签显示“r1:embed”而不是“r:embed”以列出光点Id。这会导致文档中显示“图片无法显示”消息。在进入并修改document.xml以将“r1:embed”的所有实例替换为“r:embed”之后,图片显示得很好 我假设这是因为删除图像后,document.xml.rels文件中仍然存在这种关系。当图像被添加回时,它使用相同的图像和RID
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);
}
}
}
}
FileInputStream输入=新的FileInputStream(文件);
XWPF文档=新的XWPF文档(输入);
列表元素=document.getBodyElements();
for(IBodyElement元素:元素){
if(XWPFParagraph的元素实例){
XWPFParagraph段落=(XWPFParagraph)元素;
列表运行=段落.getRuns();
对于(XWPFRun运行:运行){
while(run.getCTR().getDrawingList().size()>0){
run.getCTR().removeDrawing(0);
}
}
}
}
我还使用了“removePict()”方法,但这并没有从文档中删除图像。我还尝试将removePict()和removeDrawing()与其对应的while循环一起使用,但没有成功地将它们完全从关系文件中删除
谢谢 你是如何删除图像的?添加了我正在使用的代码。