Extraer imágenes usando PdfExtractor

Extraer imágenes de todo el PDF a archivos (Facades)

La clase PdfExtractor permite extraer imágenes de un archivo PDF. Primero, necesitas crear un objeto de la clase PdfExtractor y vincular el archivo PDF de entrada utilizando el método BindPdf. Después de eso, llama al método ExtractImage para extraer todas las imágenes en memoria. Una vez que las imágenes se han extraído, puedes obtener esas imágenes con la ayuda de los métodos HasNextImage y GetNextImage. Necesitas recorrer todas las imágenes extraídas utilizando un bucle while. Para guardar las imágenes en el disco, puedes llamar a la sobrecarga del método GetNextImage que toma la ruta del archivo como argumento. El siguiente fragmento de código te muestra cómo extraer imágenes de todo el PDF a archivos.

// 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");
        }
    }
}

Extraer imágenes de todo el PDF a flujos (Facades)

La clase PdfExtractor permite extraer imágenes de un archivo PDF en flujos. Primero, necesitas crear un objeto de la clase PdfExtractor y vincular el archivo PDF de entrada utilizando el método BindPdf. Después de eso, llama al método ExtractImage para extraer todas las imágenes en memoria. Una vez que las imágenes se han extraído, puedes obtener esas imágenes con la ayuda de los métodos HasNextImage y GetNextImage. Necesitas recorrer todas las imágenes extraídas utilizando un bucle while. Para guardar las imágenes en un flujo, puedes llamar a la sobrecarga del método GetNextImage que toma Stream como argumento. El siguiente fragmento de código te muestra cómo extraer imágenes de todo el PDF a flujos.

// 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);
            }
        }
    }
}

Extraer imágenes de una página particular de un PDF (Facades)

Puedes extraer imágenes de una página particular de un archivo PDF. Para hacer eso, necesitas establecer las propiedades StartPage y EndPage a la página particular de la que deseas extraer imágenes. Primero, necesitas crear un objeto de la clase PdfExtractor y vincular el archivo PDF de entrada utilizando el método BindPdf. En segundo lugar, debes establecer las propiedades StartPage y EndPage. Después de eso, llama al método ExtractImage para extraer todas las imágenes en memoria. Una vez que las imágenes se han extraído, puedes obtener esas imágenes con la ayuda de los métodos HasNextImage y GetNextImage. Necesitas recorrer todas las imágenes extraídas utilizando un bucle while. Puedes guardar las imágenes en el disco o en un flujo. Solo necesitas llamar a la sobrecarga apropiada del método GetNextImage. El siguiente fragmento de código te muestra cómo extraer imágenes de una página particular de PDF a flujos.

// 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);
            }
        }
    }
}

Extraer imágenes de un rango de páginas de un PDF (Facades)

Puedes extraer imágenes de un rango de páginas de un archivo PDF. Para hacer eso, necesitas establecer las propiedades StartPage y EndPage al rango de páginas del que deseas extraer imágenes. Primero, necesitas crear un objeto de la clase PdfExtractor y vincular el archivo PDF de entrada utilizando el método BindPdf. En segundo lugar, debes establecer las propiedades StartPage y EndPage. Después de eso, llama al método ExtractImage para extraer todas las imágenes en memoria. Una vez que las imágenes se han extraído, puedes obtener esas imágenes con la ayuda de los métodos HasNextImage y GetNextImage. Necesitas recorrer todas las imágenes extraídas utilizando un bucle while. Puedes guardar las imágenes en el disco o en un flujo. Solo necesitas llamar a la sobrecarga apropiada del método GetNextImage. El siguiente fragmento de código te muestra cómo extraer imágenes de un rango de páginas de PDF a flujos.

// 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);
            }
        }
    }
}

Extraer imágenes usando el modo de extracción de imágenes (Facades)

La clase PdfExtractor permite extraer imágenes de un archivo PDF. Aspose.PDF soporta dos modos de extracción; el primero es ActuallyUsedImage que extrae las imágenes realmente utilizadas en el documento PDF. El segundo modo es DefinedInResources que extrae las imágenes definidas en los recursos del documento PDF (modo de extracción predeterminado). Primero, necesitas crear un objeto de la clase PdfExtractor y vincular el archivo PDF de entrada utilizando el método BindPdf. Después de eso, especifica el modo de extracción de imágenes utilizando la propiedad PdfExtractor.ExtractImageMode. Luego llama al método ExtractImage para extraer todas las imágenes en memoria dependiendo del modo que especificaste. Una vez que las imágenes se han extraído, puedes obtener esas imágenes con la ayuda de los métodos HasNextImage y GetNextImage. Necesitas recorrer todas las imágenes extraídas utilizando un bucle while. Para guardar las imágenes en el disco, puedes llamar a la sobrecarga del método GetNextImage que toma la ruta del archivo como argumento.

El siguiente fragmento de código te muestra cómo extraer imágenes de un archivo PDF utilizando la opción 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);
        }
    }
}

Para verificar si el PDF contiene texto o imágenes, utiliza el siguiente fragmento de código:

// 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");
        }
    }
}