我已经阅读了所有类似的问题和答案,但由于旧问题是针对旧版本的,所以我仍然被卡住了。

我想用外部图像替换给定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和replace_img。 Replacement_img必须覆盖original_img。

最佳答案

要用新图像替换旧图像,必须将相关资源设置为新图像,即

resources.put(xObjectName, replacement_img);


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

09-26 05:10