Ekstrak Gambar menggunakan PdfExtractor

Ekstrak Gambar dari Seluruh PDF ke File (Facades)

Kelas PdfExtractor memungkinkan Anda untuk mengekstrak gambar dari file PDF. Pertama-tama, Anda perlu membuat objek dari Kelas PdfExtractor dan mengikat file PDF input menggunakan metode BindPdf. Setelah itu, panggil metode ExtractImage untuk mengekstrak semua gambar ke dalam memori. Setelah gambar diekstrak, Anda dapat mendapatkan gambar tersebut dengan bantuan metode HasNextImage dan GetNextImage. Anda perlu melakukan loop melalui semua gambar yang diekstrak menggunakan loop while. Untuk menyimpan gambar ke disk, Anda dapat memanggil overload dari metode GetNextImage yang mengambil jalur file sebagai argumen. Potongan kode berikut menunjukkan cara mengekstrak gambar dari seluruh PDF ke file.

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

Ekstrak Gambar dari Seluruh PDF ke Aliran (Facades)

Kelas PdfExtractor memungkinkan Anda untuk mengekstrak gambar dari file PDF ke dalam aliran. Pertama-tama, Anda perlu membuat objek dari Kelas PdfExtractor dan mengikat file PDF input menggunakan metode BindPdf. Setelah itu, panggil metode ExtractImage untuk mengekstrak semua gambar ke dalam memori. Setelah gambar diekstrak, Anda dapat mendapatkan gambar tersebut dengan bantuan metode HasNextImage dan GetNextImage. Anda perlu melakukan loop melalui semua gambar yang diekstrak menggunakan loop while. Untuk menyimpan gambar ke aliran, Anda dapat memanggil overload dari metode GetNextImage yang mengambil Stream sebagai argumen. Potongan kode berikut menunjukkan cara mengekstrak gambar dari seluruh PDF ke aliran.

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

Ekstrak Gambar dari Halaman Tertentu dari PDF (Facades)

Anda dapat mengekstrak gambar dari halaman tertentu dari file PDF. Untuk melakukan itu, Anda perlu mengatur properti StartPage dan EndPage ke halaman tertentu yang ingin Anda ekstrak gambarnya. Pertama-tama, Anda perlu membuat objek dari Kelas PdfExtractor dan mengikat file PDF input menggunakan metode BindPdf. Kedua, Anda harus mengatur properti StartPage dan EndPage. Setelah itu, panggil metode ExtractImage untuk mengekstrak semua gambar ke dalam memori. Setelah gambar diekstrak, Anda dapat mendapatkan gambar tersebut dengan bantuan metode HasNextImage dan GetNextImage. Anda perlu melakukan loop melalui semua gambar yang diekstrak menggunakan loop while. Anda dapat menyimpan gambar ke disk atau aliran. Anda hanya perlu memanggil overload yang sesuai dari metode GetNextImage. Potongan kode berikut menunjukkan cara mengekstrak gambar dari halaman tertentu dari PDF ke aliran.

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

Ekstrak Gambar dari Rentang Halaman dari PDF (Facades)

Anda dapat mengekstrak gambar dari rentang halaman dari file PDF. Untuk melakukan itu, Anda perlu mengatur properti StartPage dan EndPage ke rentang halaman yang ingin Anda ekstrak gambarnya. Pertama-tama, Anda perlu membuat objek dari Kelas PdfExtractor dan mengikat file PDF input menggunakan metode BindPdf. Kedua, Anda harus mengatur properti StartPage dan EndPage. Setelah itu, panggil metode ExtractImage untuk mengekstrak semua gambar ke dalam memori. Setelah gambar diekstrak, Anda dapat mendapatkan gambar tersebut dengan bantuan metode HasNextImage dan GetNextImage. Anda perlu melakukan loop melalui semua gambar yang diekstrak menggunakan loop while. Anda dapat menyimpan gambar ke disk atau aliran. Anda hanya perlu memanggil overload yang sesuai dari metode GetNextImage. Potongan kode berikut menunjukkan cara mengekstrak gambar dari rentang halaman PDF ke aliran.

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

Ekstrak Gambar menggunakan Mode Ekstraksi Gambar (Facades)

Kelas PdfExtractor memungkinkan Anda untuk mengekstrak gambar dari file PDF. Aspose.PDF mendukung dua mode ekstraksi; yang pertama adalah ActuallyUsedImage yang mengekstrak gambar yang sebenarnya digunakan dalam dokumen PDF. Mode kedua adalah DefinedInResources yang mengekstrak gambar yang didefinisikan dalam sumber daya dokumen PDF (mode ekstraksi default). Pertama, Anda perlu membuat objek dari Kelas PdfExtractor dan mengikat file PDF input menggunakan metode BindPdf. Setelah itu, tentukan mode ekstraksi gambar menggunakan properti PdfExtractor.ExtractImageMode. Kemudian panggil metode ExtractImage untuk mengekstrak semua gambar ke dalam memori tergantung pada mode yang Anda tentukan. Setelah gambar diekstrak, Anda dapat mendapatkan gambar tersebut dengan bantuan metode HasNextImage dan GetNextImage. Anda perlu melakukan loop melalui semua gambar yang diekstrak menggunakan loop while. Untuk menyimpan gambar ke disk, Anda dapat memanggil overload dari metode GetNextImage yang mengambil jalur file sebagai argumen.

Potongan kode berikut menunjukkan cara mengekstrak gambar dari file PDF menggunakan opsi 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);
        }
    }
}

Untuk memeriksa apakah PDF berisi Teks atau Gambar, gunakan potongan kode berikut:

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