Extraire des images d'un fichier PDF à l'aide de Java
Contents
[
Hide
]
Aspose.PDF for Java prend en charge l’extraction directe des ressources d’image et le filtrage basé sur le placement.
Extraire une image intégrée par index
Utilisez cet exemple lorsque vous devez enregistrer une ressource image spécifique à partir d’une page PDF.
- Ouvrez le PDF source Document.
- Accédez à la cible XImage à partir des ressources de la page.
- Enregistrez le flux d’images dans un fichier de sortie.
public static void extractImage(Path inputFile, Path outputFile) throws Exception {
try (Document document = new Document(inputFile.toString());
OutputStream outputImage = Files.newOutputStream(outputFile)) {
XImage image = document.getPages().get_Item(1).getResources().getImages().get_Item(1);
image.save(outputImage);
}
}
Extraire des images d’une région de page spécifique
Utilisez cet exemple lorsque seules les images placées à l’intérieur d’un rectangle sélectionné doivent être exportées.
- Définissez la cible Rectangle et ouvrez le PDF source.
- Utilisez ImagePlacementAbsorber pour inspecter les emplacements d’images sur la page.
- Enregistrez uniquement les images dont le placement correspond à la région sélectionnée.
public static void extractImageFromSpecificRegion(Path inputFile, Path outputFile) throws Exception {
Rectangle rectangle = new Rectangle(0, 0, 590, 590, true);
try (Document document = new Document(inputFile.toString())) {
ImagePlacementAbsorber absorber = new ImagePlacementAbsorber();
document.getPages().get_Item(1).accept(absorber);
int index = 1;
for (ImagePlacement imagePlacement : absorber.getImagePlacements()) {
Point point1 = new Point(imagePlacement.getRectangle().getLLX(), imagePlacement.getRectangle().getLLY());
Point point2 = new Point(imagePlacement.getRectangle().getURX(), imagePlacement.getRectangle().getURX());
if (rectangle.contains(point1, true) && rectangle.contains(point2, true)) {
Path indexedOutputFile = Path.of(outputFile.toString().replace("index", String.valueOf(index)));
try (OutputStream outputImage = Files.newOutputStream(indexedOutputFile)) {
imagePlacement.getImage().save(outputImage);
}
index++;
}
}
}
}