update #5

Open
mdebray wants to merge 231 commits from update into main
Showing only changes of commit fa0152aa2d - Show all commits

View file

@ -1,6 +1,8 @@
package stirling.software.SPDF.service; package stirling.software.SPDF.service;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
@ -16,7 +18,7 @@ public class PdfImageRemovalService {
/** /**
* Removes all image objects from the provided PDF document. * Removes all image objects from the provided PDF document.
* *
* This method iterates over each page in the document and removes any image XObjects found * <p>This method iterates over each page in the document and removes any image XObjects found
* in the page's resources. * in the page's resources.
* *
* @param document The PDF document from which images will be removed. * @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 // Iterate over each page in the PDF document
for (PDPage page : document.getPages()) { for (PDPage page : document.getPages()) {
PDResources resources = page.getResources(); PDResources resources = page.getResources();
// Collect the XObject names to remove
List<COSName> namesToRemove = new ArrayList<>();
// Iterate over all XObject names in the page's resources // Iterate over all XObject names in the page's resources
for (COSName name : resources.getXObjectNames()) { for (COSName name : resources.getXObjectNames()) {
// Check if the XObject is an image // Check if the XObject is an image
if (resources.isImageXObject(name)) { if (resources.isImageXObject(name)) {
// Remove the image XObject by setting it to null // Collect the name for removal
resources.put(name, (PDXObject) null); namesToRemove.add(name);
} }
} }
// Now, modify the resources by removing the collected names
for (COSName name : namesToRemove) {
resources.put(name, (PDXObject) null);
}
} }
return document; return document;
} }