I need to remove a specific image from PDF file according its
metadata. Sadly. all examples I can find in Internet are using
discarded methods.
I draw this image with contentStream.drawImage() method and mark it
with a metadata. I needto allow my soft to remove added images as
well/
I'm using the following code:
List<COSName> itemsToRemove = new ArrayList<>();
COSDictionary imagesContainer =
(COSDictionary)resources.getCOSObject().getDictionaryObject(COSName.XOBJECT);
try (PDDocument doc = PDDocument.load(new ByteArrayInputStream(pdf))) {
doc.getPages().forEach(page ->
{
PDResources resources = page.getResources();
List<COSName> itemsToRemove = new ArrayList<>();
resources.getXObjectNames().forEach(propertyName -> {
if(!resources.isImageXObject(propertyName)) {
return;
}
PDXObject pdxObject = resources.getXObject(propertyName);
PDImageXObject pdImageXObject = (PDImageXObject)pdxObject;
PDMetadata metadata = pdImageXObject.getMetadata();
if(checkMetadata(metadata)){
itemsToRemove.add(propertyName);
// What should I use here?
}
});
itemsToRemove.forEach(imagesContainer::removeItem);
});
doc.save(baos);
} catch (Exception e) {
//Code here
}
It produces a cleared PDF that shows an error when I open it. Looks like I
should remove it from contentStream too. How to do that?
--
Regards,
Alexander Teut
http://g <http://rikkimongoose.ru>ithub.com/rikkimongoose