Extrair Imagens usando PdfExtractor

Extrair Imagens do PDF Inteiro para Arquivos (Facades)

A classe PdfExtractor permite que você extraia imagens de um arquivo PDF.


Primeiro, você precisa criar um objeto da classe [PdfExtractor](https://reference.aspose.com/pdf/net/aspose.pdf.facades/pdfextractor) e vincular o arquivo PDF de entrada usando o método [BindPdf](https://reference.aspose.com/pdf/net/aspose.pdf.facades/facade/methods/bindpdf/index). Após isso, chame o método [ExtractImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades/pdfextractor/methods/extractimage) para extrair todas as imagens para a memória. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos [HasNextImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades/pdfextractor/methods/hasnextimage) e [GetNextImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades.pdfextractor/getnextimage/methods/1). Você precisa percorrer todas as imagens extraídas usando um loop while. Para salvar as imagens no disco, você pode chamar a sobrecarga do método [GetNextImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades.pdfextractor/getnextimage/methods/1) que leva o caminho do arquivo como argumento. O seguinte trecho de código mostra como extrair imagens do PDF inteiro para arquivos.

```csharp
   public static void ExtractImagesWholePDF()
        {
            // Open input PDF
            PdfExtractor pdfExtractor = new PdfExtractor();
            pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");

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

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

Extrair Imagens do PDF Completo para Fluxos (Facades)

A classe PdfExtractor permite que você extraia imagens de um arquivo PDF para fluxos. Primeiro, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf.


```csharp
    public static void ExtractImagesWholePDFStreams()
        {
            // Abrir PDF de entrada
            PdfExtractor pdfExtractor = new PdfExtractor();
            pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");

            // Extrair imagens
            pdfExtractor.ExtractImage();
            // Obter todas as imagens extraídas
            while (pdfExtractor.HasNextImage())
            {
                // Ler imagem na memória
                MemoryStream memoryStream = new MemoryStream();
                pdfExtractor.GetNextImage(memoryStream);

                // Escrever no disco, se desejar, ou usar de outra forma.
                FileStream fileStream = new
                FileStream(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create);
                memoryStream.WriteTo(fileStream);
                fileStream.Close();
            }
        }

Extrair Imagens de uma Página Específica de um PDF (Facades)

Você pode extrair imagens de uma página específica de um arquivo PDF. In order to do that, you need to set StartPage e EndPage propriedades para a página específica da qual você deseja extrair imagens. First of all, you need to create an object of PdfExtractor class and bind input PDF file using BindPdf method.

Antes de tudo, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf. Secondly, you have to set StartPage * e EndPage propriedades. Depois disso, chame o método ExtractImage para extrair todas as imagens para a memória. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos HasNextImage e GetNextImage. Você precisa percorrer todas as imagens extraídas usando um loop while. Você pode salvar as imagens no disco ou em um stream. Você só precisa chamar a sobrecarga apropriada do método GetNextImage. O trecho de código a seguir mostra como extrair imagens de uma página específica do PDF para streams.

public static void ExtractImagesParticularPage()
{
    // Abra o PDF de entrada
    PdfExtractor pdfExtractor = new PdfExtractor();
    pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");

    // Defina as propriedades StartPage e EndPage para o número da página da qual
    // você deseja extrair imagens
    pdfExtractor.StartPage = 2;
    pdfExtractor.EndPage = 2;

    // Extraia as imagens
    pdfExtractor.ExtractImage();
    // Obtenha as imagens extraídas
    while (pdfExtractor.HasNextImage())
    {
        // Leia a imagem no stream de memória
        MemoryStream memoryStream = new MemoryStream();
        pdfExtractor.GetNextImage(memoryStream);

        // Escreva no disco, se desejar, ou utilize de outra forma.
        FileStream fileStream = new
        FileStream(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create);
        memoryStream.WriteTo(fileStream);
        fileStream.Close();
    }
}

Extract Images from a Range of Pages of a PDF (Facades)

Você pode extrair imagens de um intervalo de páginas de um arquivo PDF. Para fazer isso, você precisa definir as propriedades StartPage e EndPage para o intervalo de páginas do qual deseja extrair imagens. First of all, you need to create an object of PdfExtractor class and bind input PDF file using BindPdf method.

Antes de tudo, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf. Secondly, you have to set StartPage e EndPage propriedades. Depois disso, chame o método ExtractImage para extrair todas as imagens na memória. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos HasNextImage e GetNextImage. Você precisa percorrer todas as imagens extraídas usando um loop while. Você pode salvar as imagens no disco ou em stream. Você só precisa chamar a sobrecarga apropriada do método GetNextImage. O trecho de código a seguir mostra como extrair imagens de um intervalo de páginas de um PDF para streams.

public static void ExtractImagesRangePages()
{
    // Abrir PDF de entrada
    PdfExtractor pdfExtractor = new PdfExtractor();
    pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");

    // Definir propriedades StartPage e EndPage para o número da página
    // De onde você deseja extrair imagens
    pdfExtractor.StartPage = 2;
    pdfExtractor.EndPage = 2;

    // Extrair imagens
    pdfExtractor.ExtractImage();
    // Obter imagens extraídas
    while (pdfExtractor.HasNextImage())
    {
        // Ler imagem na memória
        MemoryStream memoryStream = new MemoryStream();
        pdfExtractor.GetNextImage(memoryStream);

        // Escrever no disco, se desejar, ou usar de outra forma.
        FileStream fileStream = new
        FileStream(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create);
        memoryStream.WriteTo(fileStream);
        fileStream.Close();
    }
}

Extrair Imagens usando o Modo de Extração de Imagens (Fachadas)

A classe PdfExtractor permite que você extraia imagens de um arquivo PDF. Aspose.PDF suporta dois modos de extração; o primeiro é ActuallyUsedImage, que extrai as imagens realmente usadas no documento PDF. Second mode is DefinedInResources que extrai as imagens definidas nos recursos do documento PDF (modo de extração padrão). First, you need to create an object of PdfExtractor class and bind input PDF file using BindPdf method.

Primeiro, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf. Após isso, especifique o modo de extração de imagem usando a propriedade PdfExtractor.ExtractImageMode. Em seguida, chame o método ExtractImage para extrair todas as imagens na memória, dependendo do modo que você especificou. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos HasNextImage e GetNextImage. Você precisa percorrer todas as imagens extraídas usando um loop while. Para salvar as imagens no disco, você pode chamar a sobrecarga do método GetNextImage que leva o caminho do arquivo como argumento.

O seguinte trecho de código mostra como extrair imagens de um arquivo PDF usando a opção ExtractImageMode.

public static void ExtractImagesImageExtractionMode()
{
    // Abrir PDF de entrada
    PdfExtractor extractor = new PdfExtractor();
    extractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");

    // Especificar o Modo de Extração de Imagem
    //extractor.ExtractImageMode = ExtractImageMode.ActuallyUsed;
    extractor.ExtractImageMode = ExtractImageMode.DefinedInResources;

    // Extrair Imagens com base no Modo de Extração de Imagem
    extractor.ExtractImage();

    // Obter todas as imagens extraídas
    while (extractor.HasNextImage())
    {
        extractor.GetNextImage(_dataDir + DateTime.Now.Ticks.ToString() + "_out.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}

Para verificar se o PDF contém Texto ou Imagens use o próximo trecho de código:

public static void CheckIfPdfContainsTextOrImages()
        {
            // Instanciar um objeto memoryStream para armazenar o texto extraído do Documento
            MemoryStream ms = new MemoryStream();
            // Instanciar objeto PdfExtractor
            PdfExtractor extractor = new PdfExtractor();

            // Vincular o documento PDF de entrada ao extrator
            extractor.BindPdf(_dataDir + "FilledForm.pdf");
            // Extrair texto do documento PDF de entrada
            extractor.ExtractText();
            // Salvar o texto extraído em um arquivo de texto
            extractor.GetText(ms);
            // Verificar se o comprimento do MemoryStream é maior ou igual a 1

            bool containsText = ms.Length >= 1;

            // Extrair imagens do documento PDF de entrada
            extractor.ExtractImage();

            // Chamando o método HasNextImage no loop while. Quando as imagens terminarem, o loop será encerrado
            bool containsImage = extractor.HasNextImage();

            // Agora descubra se este PDF é apenas texto ou apenas imagem

            if (containsText && !containsImage)
                Console.WriteLine("PDF contém apenas texto");
            else if (!containsText && containsImage)
                Console.WriteLine("PDF contém apenas imagem");
            else if (containsText && containsImage)
                Console.WriteLine("PDF contém tanto texto quanto imagem");
            else if (!containsText && !containsImage)
                Console.WriteLine("PDF não contém nem texto nem imagem");
        }

    }