2017-01-24 53 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);