update #5
1 changed files with 13 additions and 3 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue