diff --git a/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java index 985d1f48..029d0924 100644 --- a/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java +++ b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java @@ -1,6 +1,8 @@ package stirling.software.SPDF.service; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; @@ -16,7 +18,7 @@ public class PdfImageRemovalService { /** * Removes all image objects from the provided PDF document. * - * This method iterates over each page in the document and removes any image XObjects found + *

This method iterates over each page in the document and removes any image XObjects found * in the page's resources. * * @param document The PDF document from which images will be removed. @@ -27,14 +29,22 @@ public class PdfImageRemovalService { // Iterate over each page in the PDF document for (PDPage page : document.getPages()) { PDResources resources = page.getResources(); + // Collect the XObject names to remove + List namesToRemove = new ArrayList<>(); + // Iterate over all XObject names in the page's resources for (COSName name : resources.getXObjectNames()) { // Check if the XObject is an image if (resources.isImageXObject(name)) { - // Remove the image XObject by setting it to null - resources.put(name, (PDXObject) null); + // Collect the name for removal + namesToRemove.add(name); } } + + // Now, modify the resources by removing the collected names + for (COSName name : namesToRemove) { + resources.put(name, (PDXObject) null); + } } return document; }