有什么方法可以用apache poi将word(docx)文件头上的图像替换为图像的名称吗?我正在考虑:
--------------------------------
HEADER myimage.jpeg-
-----------BODY------------
--------------------------------
replace("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所以你可能必须自己制定查找图像的方法。
要获得Header,您需要:
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);
}