Java Apache poi替换标头上的现有图片
有并没有办法用ApachePOI替换word(docx)文件头上的图像(图像名称)?我在想: +--------------------------------+Java Apache poi替换标头上的现有图片,java,ms-word,apache-poi,Java,Ms Word,Apache Poi,有并没有办法用ApachePOI替换word(docx)文件头上的图像(图像名称)?我在想: +--------------------------------+ +标题myimage.jpeg-+ +------正文-----------+ +--------------------------------+ replaceImage(“myimage.jpeg”,newPictureInputStream, “newPicture_name.jpeg”) 以下是我所尝试的: XWPF
+标题myimage.jpeg-+
+------正文-----------+
+--------------------------------+ 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;
}
}
XWPFParagraph originalParagraph=null;
originalParagraph=getPictureParagraphInHead(lookingPictureName);
ListIterator it=originalParagraph.getRuns().ListIterator();
XWPFRun replacedRun=null;
while(it.hasNext()){
XWPFRun=it.next();
int runIDX=it.nextIndex();
如果(运行.getEmbeddedPictures().size()>0){
XWPFRun newRun=null;
newRun=newxwpfrun(run.getCTR(),(IRunBody)原始参数);
原始paragraph.addRun(newRun);
originalParagraph.removeRun(originalParagraph.getRuns().indexOf(run));
打破
}
}
我不确定您是否可以使用POI获取图像的“文件名”。它可能在XML中,因此您可能需要创建自己的方法来查找图像
要获取标题,请执行以下操作:
XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(doc); // XWPFDocument
XWPFHeader header = policy.getDefaultHeader();
要删除图像,请从段落(单元格/行/表..)中获取XWPFRun
CTR-CTR=myRun.getCTR();//
List images=ctr.getDrawingList();
对于(int i=0;我编写了一些代码,在文件中的文本上循环,查找您的魔术占位符,然后抓取内容并编写图像?任何其他前瞻性文章?因此,几个小时后,我不推荐使用此API(Apache POI)。它生成了损坏的文件。我只使用了框架方法。我看到了POI源代码,吓了一跳。请不要使用此框架或祝您好运。确保您使用的是最新版本的Apache POI。XWPF中损坏的Word文档不应该有任何问题!我使用了3.17。根据
CTR ctr = myRun.getCTR(); //
List<CTDrawing> images = ctr.getDrawingList();
for (int i=0; i<images.size(); i++)
{
ctr.removeDrawing(i);
}