我们如何从 docx4j 中删除图像。
假设我有 10 个图像,我想用我自己的字节数组/二进制数据替换 8 个图像,我想删除剩余的 2 个。
我也无法定位图像。
是否可以用图像替换文档中的文本占位符?
参考这篇文章:http: //vixmemon.blogspot.com/2013/04/docx4j-replace-text-placeholders-with.html
for(Object obj : elemetns){
if(obj instanceof Tbl){
Tbl table = (Tbl) obj;
List rows = getAllElementFromObject(table, Tr.class);
for(Object trObj : rows){
Tr tr = (Tr) trObj;
List cols = getAllElementFromObject(tr, Tc.class);
for(Object tcObj : cols){
Tc tc = (Tc) tcObj;
List texts = getAllElementFromObject(tc, Text.class);
for(Object textObj : texts){
Text text = (Text) textObj;
if(text.getValue().equalsIgnoreCase("${MY_PLACE_HOLDER}")){
File file = new File("C:\\image.jpeg");
P paragraphWithImage = addInlineImageToParagraph(createInlineImage(file));
tc.getContent().remove(0);
tc.getContent().add(paragraphWithImage);
}
}
System.out.println("here");
}
}
System.out.println("here");
}
}
wordMLPackage.save(new java.io.File("C:\\result.docx"));
请参阅docx4j 检查复选框以了解查找内容的 2 种方法(XPath 或非 XPath 遍历)。
VariableReplace 允许您替换文本占位符,但不能替换图像。我认为可能有代码浮动(在 docx4j 论坛中?)它扩展它来做到这一点。
但我建议您改用内容控制数据绑定。了解如何使用 docx4j 从模板创建新单词
您可以在 XML 数据中使用 base64 编码的图像,剩下的工作由 docx4j 和/或 Word 完成。