2017-09-28 45 views
2

有沒有辦法用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; 
     } 
    } 
+0

寫一些代碼,循環通過文件中的文字,尋找您的魔術佔位符,然後抓取內容並寫入圖像? – Gagravarr

+0

任何其他前瞻性帖子? – Zaosz

+0

所以幾個小時後,我不推薦這個API(Apache POI)。它產生了損壞的文件。我只使用框架方法。我看到POI源代碼,我嚇壞了。不要使用這個框架或祝你好運。 – Zaosz

回答

0

我不知道,如果你能得到與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); 
}