2017-01-24 58 views
1

我已閱讀所有類似的問題和答案,我仍然卡住舊版本的舊問題。替換PDImageXObject與另一個PDFBOX 2.0.3

我想用外部圖像替換給定PDF中的所有圖像。

這是我迄今所做的:

for(int a=0;a<doc.getNumberOfPages().size();a++){ 
     PDPage p = doc.getPage(a); 
     PDResources resources = p.getResources(); 
     for (COSName xObjectName : resources.getXObjectNames()) { 
      PDXObject xObject = resources.getXObject(xObjectName); 
      if (xObject instanceof PDImageXObject) { 
       PDImageXObject original_img = ((PDImageXObject) xObject); 
       PDImageXObject replacement_img = PDImageXObject.createFromFile(f.getImages().get(a), doc); 
      }   
     } 
    } 

所以,我有2個PDImageXObjects名original_img和replacement_img。 Replacement_img必須覆蓋original_img。

+1

在實例化replacement_img後,您是否嘗試*替換*,即類似'resources.put(xObjectName,replacement_img)'? – mkl

+0

是的,我忘了。有用。謝謝@mkl – GrayFox

+0

好的,我會做出一個實際的答案。 – mkl

回答

1

由新的圖像替換舊形象,一個具有replacement_img在OP的代碼實例化後,有問題的資源設置爲新圖像,即

resources.put(xObjectName, replacement_img);