Apache poi替换标题上的现有图片
问题描述:
有没有办法用apache poi将图像名称替换为单词(docx)文件标题上的图像?我正在考虑:Apache poi替换标题上的现有图片
+ -------------------------------- +
+ HEADER myimage.jpeg- +
+ ----------- BODY ------------ +
+ ------------- ------------------- +replaceImage(“myimage.jpeg”,newPictureInputStream, “newPicture_name.jpeg”);
这里是我的尝试:
XWPFParagraph originalParagraph = null;
originalParagraph = getPictureParagraphInHead(lookingPictureName);
ListIterator<XWPFRun> it = originalParagraph.getRuns().listIterator();
XWPFRun replacedRun = null;
while (it.hasNext()) {
XWPFRun run = it.next();
int runIDX = it.nextIndex();
if (run.getEmbeddedPictures().size() > 0) {
XWPFRun newRun = null;
newRun = new XWPFRun(run.getCTR(), (IRunBody) originalParagraph);
originalParagraph.addRun(newRun);
originalParagraph.removeRun(originalParagraph.getRuns().indexOf(run));
break;
}
}
答
我不知道,如果你能得到与POI图像的“文件名”。它可能在XML中,因此您可能必须制定自己的方法来查找图像。
为了让你做的标题:
XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(doc); // XWPFDocument
XWPFHeader header = policy.getDefaultHeader();
并删除图片,从你的款获得XWPFRun(细胞/行/表..)
CTR ctr = myRun.getCTR(); //
List<CTDrawing> images = ctr.getDrawingList();
for (int i=0; i<images.size(); i++)
{
ctr.removeDrawing(i);
}
写一些代码,循环通过文件中的文字,寻找您的魔术占位符,然后抓取内容并写入图像? – Gagravarr
任何其他前瞻性帖子? – Zaosz
所以几个小时后,我不推荐这个API(Apache POI)。它产生了损坏的文件。我只使用框架方法。我看到POI源代码,我吓坏了。不要使用这个框架或祝你好运。 – Zaosz