استخراج الصور من ملف PDF باستخدام Java

يدعم Aspose.PDF for Java استخراج موارد الصور مباشرةً وتصفية تعتمد على الموضع.

استخراج صورة مدمجة حسب الفهرس

استخدم هذا المثال عندما تحتاج إلى حفظ مورد صورة محدد من صفحة PDF.

  1. افتح ملف PDF المصدر Document.
  2. انتقل إلى الصورة المستهدفة XImage من موارد الصفحة.
  3. احفظ تدفق الصورة إلى ملف إخراج.
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);
    }
}

استخراج الصور من منطقة صفحة محددة

استخدم هذا المثال عندما يجب تصدير الصور الموجودة داخل مستطيل مختار فقط.

  1. حدّد الهدف Rectangle وفتح ملف PDF المصدر.
  2. استخدم ImagePlacementAbsorber لفحص مواضع الصور على الصفحة.
  3. احفظ فقط الصور التي تقع مواضعها داخل المنطقة المحددة.
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++;
            }
        }
    }
}