Apache POI替换标题上的现有图片



是否有任何方法可以用apache poi替换图像名称上的图像(docx)文件标头?我在想:

---------------------------------------------
标题myimage.jpeg-
-----------身体---------------
-----------------------------------------

替换图像(" 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);
}

最新更新