用另一个PDFBOX 2.0.3替换PDImageXObject

时间:2017-01-24 10:20:03

标签: java pdf pdfbox

我已经阅读了所有类似的问题和答案,但我仍然坚持旧版本的旧问题。

我想用外部图像替换给定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 个答案:

答案 0 :(得分:1)

要通过新图像替换旧图像,必须将有问题的资源设置为新图像,即

resources.put(xObjectName, replacement_img);

在OP代码中实例化replacement_img之后。