استخراج الصور الفردية من مستندات PDF المخزنة في السحابة هو طلب شائع لتطبيقات C# الحديثة التي تحتاج إلى إعادة استخدام أو تحليل الأصول البصرية. يقدم Aspose.PDF for .NET واجهة برمجة تطبيقات سحابية قوية تبسط هذه المهمة. ستتعلم كيفية استخراج الصور من ملفات PDF باستخدام C# و Aspose.PDF Cloud SDK. في نهاية هذا الدليل ستحصل على حل كامل وجاهز للإنتاج يتضمن كل من كود SDK واستدعاءات cURL المكافئة.

المتطلبات لاستخراج الصور من PDF في C#

المطورون الذين يبنون خطوط معالجة المستندات السحابية غالبًا ما يحتاجون إلى استخراج الرسومات من ملفات PDF الموجودة في التخزين البعيد. تشمل المتطلبات النموذجية:

  • الوصول إلى ملف PDF مخزن في تخزين Aspose Cloud.
  • القدرة على تعداد كل كائن صورة مضمّن في المستند.
  • تنزيل كل صورة بصيغتها الأصلية دون فقدان الجودة.
  • بصمة ذاكرة قليلة للتعامل مع ملفات PDF الكبيرة على الخادم.

لا يمكن لأدوات نظام الملفات العامة الوصول إلى التخزين السحابي مباشرة، ولا يتناسب الاستخراج اليدوي باستخدام برامج سطح المكتب مع أحمال العمل الآلية. يُعد النهج البرمجي باستخدام مكتبة جاهزة للسحابة أمرًا أساسيًا.

كيف يتناسب Aspose.PDF Cloud SDK for .NET مع استخراج صور PDF

توفر Aspose.PDF Cloud SDK for .NET واجهة برمجة تطبيقات تعتمد على REST وتعمل مع ملفات PDF المخزنة في Aspose Cloud. توفر طرقًا مثل GetDocumentImages لسرد الصور و GetImage لتنزيلها، كل ذلك عبر HTTPS. يتولى SDK التعامل مع المصادقة وإدارة التخزين وبث البيانات الثنائية، مما يتيح لك التركيز على منطق الأعمال.

يدعم SDK أيضًا الملفات الكبيرة من خلال التحميل المجزأ واستخدام الذاكرة الفعال، مما يتماشى مع احتياجات الأداء لتطبيقات الخادم‑جانبية. يمكن العثور على تفاصيل استخدام API في الوثائق الرسمية ومرجع API.

بناء الحل: استخراج الصور من PDF في C#

تثبيت Aspose.PDF Cloud SDK for .NET

أولاً، أضف حزمة SDK إلى مشروعك.

dotnet add package Aspose.PDF-Cloud

يمكنك أيضًا تنزيل الملفات الثنائية من صفحة التحميل.

تكوين بيانات اعتماد Aspose Cloud

إنشاء كائن تكوين باستخدام معرف العميل والسر.

var config = new Configuration
{
    ClientId = "YOUR_CLIENT_ID",
    ClientSecret = "YOUR_CLIENT_SECRET"
};
var pdfApi = new PdfApi(config);

تم توثيق الفئة Configuration في مرجع API.

رفع ملف PDF إلى التخزين السحابي

إذا لم يكن ملف PDF موجودًا بالفعل في تخزين Aspose Cloud، قم بتحميله.

using (var fileStream = File.OpenRead(pdfFileName))
{
    byte[] fileBytes = new byte[fileStream.Length];
    fileStream.Read(fileBytes, 0, fileBytes.Length);
    pdfApi.UploadFile(Path.Combine("Temp", pdfFileName), fileBytes);
}

طريقة UploadFile تخزن الملف في مجلد Temp.

استرجاع قائمة الصور المضمنة

استدعِ API للحصول على معلومات حول كل صورة.

ImagesResponse imagesResponse = pdfApi.GetDocumentImages(pdfFileName);

ImagesResponse يحتوي على مجموعة من كائنات ImageInfo، كل منها يحتوي على Id و ImageFormat.

تنزيل كل صورة وحفظها محليًا

تكرار عبر قائمة الصور، تنزيلها، وكتابتها إلى القرص.

foreach (ImageInfo imageInfo in imagesResponse.Images.List)
{
    int imageId = imageInfo.Id ?? 0;
    string format = imageInfo.ImageFormat?.ToLower() ?? "png";
    string outputFileName = $"extracted_image_{imageId}.{format}";
    byte[] imageBytes = pdfApi.GetImage(pdfFileName, imageId);
    File.WriteAllBytes(outputFileName, imageBytes);
}

تحتفظ هذه الحلقة بتنسيق الصورة الأصلي وتُنشئ ملفات باسم extracted_image_<id>.<ext>.

مثال كامل يعمل لاستخراج الصور من PDF مع التخزين السحابي

يعرض الكود التالي سير العمل الكامل من المصادقة إلى التنظيف.

using System;
using System.IO;
using Aspose.Pdf.Cloud.Sdk.Api;
using Aspose.Pdf.Cloud.Sdk.Client;
using Aspose.Pdf.Cloud.Sdk.Model;

class ExtractImagesFromPdf
{
    static void Main()
    {
        // Replace with your actual Aspose Cloud credentials
        string clientId = "YOUR_CLIENT_ID";
        string clientSecret = "YOUR_CLIENT_SECRET";

// Initialize Aspose.PDF Cloud configuration
        var config = new Configuration
        {
            ClientId = clientId,
            ClientSecret = clientSecret
        };
        var pdfApi = new PdfApi(config);

// PDF file name (must be present in Aspose Cloud storage)
        string pdfFileName = "input.pdf";

// Optional: upload the PDF to cloud storage if it does not exist there
        if (!File.Exists(pdfFileName))
        {
            Console.WriteLine($"Local file '{pdfFileName}' not found.");
            return;
        }
        using (var fileStream = File.OpenRead(pdfFileName))
        {
            byte[] fileBytes = new byte[fileStream.Length];
            fileStream.Read(fileBytes, 0, fileBytes.Length);
            pdfApi.UploadFile(Path.Combine("Temp", pdfFileName), fileBytes);
        }

// Retrieve list of images embedded in the PDF
        ImagesResponse imagesResponse = pdfApi.GetDocumentImages(pdfFileName);
        if (imagesResponse?.Images?.List == null || imagesResponse.Images.List.Count == 0)
        {
            Console.WriteLine("No images found in the PDF.");
            return;
        }

// Extract each image and save locally
        foreach (ImageInfo imageInfo in imagesResponse.Images.List)
        {
            int imageId = imageInfo.Id ?? 0;
            string format = imageInfo.ImageFormat?.ToLower() ?? "png";
            string outputFileName = $"extracted_image_{imageId}.{format}";

// Download image bytes from the cloud
            byte[] imageBytes = pdfApi.GetImage(pdfFileName, imageId);
            if (imageBytes == null || imageBytes.Length == 0)
            {
                Console.WriteLine($"Failed to download image ID {imageId}.");
                continue;
            }

// Write image to local file system
            File.WriteAllBytes(outputFileName, imageBytes);
            Console.WriteLine($"Image ID {imageId} saved as '{outputFileName}'.");
        }

// Optional: clean up uploaded PDF from cloud storage
        pdfApi.DeleteFile(Path.Combine("Temp", pdfFileName));
    }
}

ملاحظة: يوضح مثال الشيفرة هذا الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث أي مسارات ملفات وقيم التكوين لتتناسب مع بيئتك الفعلية، وتحقق من أن جميع الاعتمادات المطلوبة مثبتة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.

استخراج صور PDF عبر cURL و REST API

فيما يلي أوامر cURL المكافئة التي تقوم بنفس العمليات دون كتابة كود C#.

1. المصادقة والحصول على رمز الوصول

curl -X POST "https://api.aspose.cloud/v3.0/oauth2/token?grant_type=client_credentials" \
     -u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET"

تحتوي الاستجابة على access_token يُستخدم في المكالمات اللاحقة.

2. تحميل ملف PDF المصدر

curl -X PUT "https://api.aspose.cloud/v3.0/pdf/storage/file/Temp/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -T "input.pdf"

3. قائمة الصور المضمنة

curl -X GET "https://api.aspose.cloud/v3.0/pdf/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

تتضمن استجابة JSON مصفوفة من معرّفات الصور والصيغ.

4. تنزيل كل صورة

curl -X GET "https://api.aspose.cloud/v3.0/pdf/input.pdf/images/1" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o "extracted_image_1.png"

استبدل 1 بمعرف الصورة الفعلي من الخطوة السابقة. كرّر الأمر لجميع المعرفات.

لمزيد من التفاصيل، راجع وثائق API الرسمية.

خيارات التكوين لاستخراج الصور من PDF

تعيين مجلد التخزين

يمكنك تغيير مجلد التخزين الافتراضي عن طريق تعديل المسار في استدعاءات UploadFile و DeleteFile. على سبيل المثال، استخدم "Documents" بدلاً من "Temp".

اختيار تنسيق الصورة المستهدف

SDK يعيد التنسيق الأصلي، ولكن يمكنك تحويله عن طريق تحديد امتداد مختلف عند حفظ الملف. عدّل المتغيّر format في حلقة التحميل إذا كنت بحاجة إلى إخراج موحد مثل png.

التحكم في مهلة الطلب

يتيح لك عميل PdfApi ضبط مهلة مخصصة:

pdfApi.Configuration.Timeout = 300000; // 5 minutes

زيادة مهلة الانتظار تساعد عند معالجة ملفات PDF الكبيرة جدًا.

الخلاصة

يصبح استخراج الصور من ملفات PDF المخزنة في السحابة أمرًا بسيطًا باستخدام Aspose.PDF for .NET. يتعامل SDK مع المصادقة والتخزين واسترجاع الصور، مما يتيح لك التركيز على منطق التطبيق الخاص بك. تذكر الحصول على ترخيص مناسب للاستخدام في الإنتاج؛ تفاصيل التسعير متاحة على صفحة المنتج، ويمكنك الحصول على ترخيص مؤقت من صفحة الترخيص المؤقت. مع الشيفرة وأمثلة cURL المقدمة، أنت جاهز لدمج استخراج صور PDF في أي خدمة سحابية .NET.

الأسئلة المتكررة

كيف يمكنني استخراج الصور من PDF باستخدام Aspose.PDF Cloud SDK for .NET?
استخدم طريقة PdfApi.GetDocumentImages لسرد الصور و PdfApi.GetImage لتنزيل كل واحدة. يتم توضيح سير العمل الكامل في مثال الشيفرة أعلاه.

هل يمكنني استخراج الصور من PDF دون كتابة أي كود؟
نعم، يمكن تنفيذ العملية نفسها باستخدام REST API وأوامر cURL، كما هو موضح في قسم “استخراج صور PDF عبر cURL وREST API”.

ما هي تنسيقات الصور التي يمكن استخراجها من PDF؟
تُعيد الواجهة البرمجية (API) التنسيق الأصلي لكل صورة مدمجة، مثل PNG, JPEG, BMP, أو TIFF. يمكنك فحص الخاصية ImageInfo.ImageFormat لتحديد التنسيق.

هل أحتاج إلى ترخيص لتشغيل هذا في بيئة الإنتاج؟
يتطلب تشغيله في الإنتاج ترخيصًا تجاريًا. يمكنك الاطلاع على الأسعار في صفحة المنتج والحصول على ترخيص مؤقت من صفحة الترخيص المؤقت.

اقرأ المزيد