Извлечение изображений с помощью PdfExtractor

Извлечение изображений из всего PDF в файлы (Facades)

PdfExtractor класс позволяет извлекать изображения из PDF-файла. Прежде всего, вам нужно создать объект класса PdfExtractor и связать входной PDF-файл с помощью метода BindPdf. После этого вызовите метод ExtractImage, чтобы извлечь все изображения в память. После извлечения изображений вы можете получить эти изображения с помощью методов HasNextImage и GetNextImage. Вам нужно пройтись по всем извлеченным изображениям с помощью цикла while. Чтобы сохранить изображения на диск, вы можете вызвать перегрузку метода GetNextImage, который принимает путь к файлу в качестве аргумента. Следующий фрагмент кода показывает, как извлечь изображения из всего PDF в файлы.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesWholePDF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Images();

    // Open PDF document
    using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
    {
        // Bind PDF document
        extractor.BindPdf(dataDir + "sample_cats_dogs.pdf");

        // Extract all the images
        extractor.ExtractImage();

        // Get all the extracted images
        while (extractor.HasNextImage())
        {
            extractor.GetNextImage(dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg");
        }
    }
}

Извлечение изображений из всего PDF в потоки (Facades)

PdfExtractor класс позволяет извлекать изображения из PDF-файла в потоки. Прежде всего, вам нужно создать объект класса PdfExtractor и связать входной PDF-файл с помощью метода BindPdf. После этого вызовите метод ExtractImage, чтобы извлечь все изображения в память. После извлечения изображений вы можете получить эти изображения с помощью методов HasNextImage и GetNextImage. Вам нужно пройтись по всем извлеченным изображениям с помощью цикла while. Чтобы сохранить изображения в поток, вы можете вызвать перегрузку метода GetNextImage, который принимает Stream в качестве аргумента. Следующий фрагмент кода показывает, как извлечь изображения из всего PDF в потоки.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesWholePDFStreams()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Images();

    // Open PDF document
    using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
    {
        // Bind PDF document
        extractor.BindPdf(dataDir + "sample_cats_dogs.pdf");

        // Extract images
        extractor.ExtractImage();
        // Get all the extracted images
        while (extractor.HasNextImage())
        {
            // Read image into memory stream
            MemoryStream memoryStream = new MemoryStream();
            extractor.GetNextImage(memoryStream);

            // Write to disk, if you like, or use it otherwise
            using (FileStream fileStream = new FileStream(dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create))
            {
                memoryStream.WriteTo(fileStream);
            }
        }
    }
}

Извлечение изображений с определенной страницы PDF (Facades)

Вы можете извлекать изображения с определенной страницы PDF-файла. Для этого вам нужно установить свойства StartPage и EndPage на конкретную страницу, с которой вы хотите извлечь изображения. Прежде всего, вам нужно создать объект класса PdfExtractor и связать входной PDF-файл с помощью метода BindPdf. Во-вторых, вам нужно установить свойства StartPage и EndPage. После этого вызовите метод ExtractImage, чтобы извлечь все изображения в память. После извлечения изображений вы можете получить эти изображения с помощью методов HasNextImage и GetNextImage. Вам нужно пройтись по всем извлеченным изображениям с помощью цикла while. Вы можете сохранить изображения на диск или в поток. Вам нужно просто вызвать соответствующую перегрузку метода GetNextImage. Следующий фрагмент кода показывает, как извлечь изображения с определенной страницы PDF в потоки.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesParticularPage()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Images();

    // Open PDF document
    using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
    {
        // Bind PDF document
        extractor.BindPdf(dataDir + "sample_cats_dogs.pdf");

        // Set StartPage and EndPage properties to the page number to
        // You want to extract images from
        extractor.StartPage = 2;
        extractor.EndPage = 2;

        // Extract images
        extractor.ExtractImage();
        // Get extracted images
        while (extractor.HasNextImage())
        {
            // Read image into memory stream
            MemoryStream memoryStream = new MemoryStream();
            extractor.GetNextImage(memoryStream);

            // Write to disk, if you like, or use it otherwise
            using (FileStream fileStream = new FileStream(dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create))
            {
                memoryStream.WriteTo(fileStream);
            }
        }
    }
}

Извлечение изображений из диапазона страниц PDF (Facades)

Вы можете извлекать изображения из диапазона страниц PDF-файла. Для этого вам нужно установить свойства StartPage и EndPage на диапазон страниц, из которого вы хотите извлечь изображения. Прежде всего, вам нужно создать объект класса PdfExtractor и связать входной PDF-файл с помощью метода BindPdf. Во-вторых, вам нужно установить свойства StartPage и EndPage. После этого вызовите метод ExtractImage, чтобы извлечь все изображения в память. После извлечения изображений вы можете получить эти изображения с помощью методов HasNextImage и GetNextImage. Вам нужно пройтись по всем извлеченным изображениям с помощью цикла while. Вы можете сохранить изображения на диск или в поток. Вам нужно просто вызвать соответствующую перегрузку метода GetNextImage. Следующий фрагмент кода показывает, как извлечь изображения из диапазона страниц PDF в потоки.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesRangePages()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Images();

    // Open input PDF
    using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
    {
        // Bind PDF document
        extractor.BindPdf(dataDir + "sample_cats_dogs.pdf");

        // Set StartPage and EndPage properties to the page number to
        // You want to extract images from
        extractor.StartPage = 2;
        extractor.EndPage = 2;

        // Extract images
        extractor.ExtractImage();

        // Get extracted images
        while (extractor.HasNextImage())
        {
            // Read image into memory stream
            MemoryStream memoryStream = new MemoryStream();
            extractor.GetNextImage(memoryStream);

            // Write to disk, if you like, or use it otherwise
            using (FileStream fileStream = new
            FileStream(dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create))
            {
                memoryStream.WriteTo(fileStream);
            }
        }
    }
}

Извлечение изображений с использованием режима извлечения изображений (Facades)

PdfExtractor класс позволяет извлекать изображения из PDF-файла. Aspose.PDF поддерживает два режима извлечения; первый - ActuallyUsedImage, который извлекает изображения, фактически используемые в PDF-документе. Второй режим - DefinedInResources, который извлекает изображения, определенные в ресурсах PDF-документа (режим извлечения по умолчанию). Сначала вам нужно создать объект класса PdfExtractor и связать входной PDF-файл с помощью метода BindPdf. После этого укажите режим извлечения изображений с помощью свойства PdfExtractor.ExtractImageMode. Затем вызовите метод ExtractImage, чтобы извлечь все изображения в память в зависимости от указанного вами режима. После извлечения изображений вы можете получить эти изображения с помощью методов HasNextImage и GetNextImage. Вам нужно пройтись по всем извлеченным изображениям с помощью цикла while. Чтобы сохранить изображения на диск, вы можете вызвать перегрузку метода GetNextImage, который принимает путь к файлу в качестве аргумента.

Следующий фрагмент кода показывает, как извлечь изображения из PDF-файла, используя опцию ExtractImageMode.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesImageExtractionMode()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Images();

    // Open PDF document
    using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
    {
        // Bind PDF document
        extractor.BindPdf(dataDir + "sample_cats_dogs.pdf");

        // Specify Image Extraction Mode
        //extractor.ExtractImageMode = ExtractImageMode.ActuallyUsed;
        extractor.ExtractImageMode = Aspose.Pdf.ExtractImageMode.DefinedInResources;

        // Extract Images based on Image Extraction Mode
        extractor.ExtractImage();

        // Get all the extracted images
        while (extractor.HasNextImage())
        {
            extractor.GetNextImage(dataDir + DateTime.Now.Ticks.ToString() + "_out.png", System.Drawing.Imaging.ImageFormat.Png);
        }
    }
}

Для проверки, содержит ли PDF текст или изображения, используйте следующий фрагмент кода:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CheckIfPdfContainsTextOrImages()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Images();

    // Instantiate a memoryStream object to hold the extracted text from Document
    MemoryStream ms = new MemoryStream();
    // Instantiate PdfExtractor object
    using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
    {
        // Bind PDF document
        extractor.BindPdf(dataDir + "FilledForm.pdf");
        // Extract text from the input PDF document
        extractor.ExtractText();
        // Save the extracted text to a text file
        extractor.GetText(ms);
        // Check if the MemoryStream length is greater than or equal to 1

        bool containsText = ms.Length >= 1;

        // Extract images from the input PDF document
        extractor.ExtractImage();

        // Calling HasNextImage method in while loop. When images will finish, loop will exit
        bool containsImage = extractor.HasNextImage();

        // Now find out whether this PDF is text only or image only

        if (containsText && !containsImage)
        {
            Console.WriteLine("PDF contains text only");
        }
        else if (!containsText && containsImage)
        {
            Console.WriteLine("PDF contains image only");
        }
        else if (containsText && containsImage)
        {
            Console.WriteLine("PDF contains both text and image");
        }
        else if (!containsText && !containsImage)
        {
            Console.WriteLine("PDF contains neither text or nor image");
        }
    }
}