استخراج الصور باستخدام 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");
        }
    }
}