Somewhat answered in comments in
https://stackoverflow.com/questions/47757971/how-to-remove-a-specific-image-from-a-pdf-with-pdfbox

Tilman

Am 12.12.2017 um 13:29 schrieb Alexander Teut:
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?



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to