استخراج تصاویر تک‌تک از اسناد PDF که در ابر ذخیره شده‌اند، یک نیاز رایج برای برنامه‌های مدرن C# است که نیاز به استفاده مجدد یا تجزیه و تحلیل دارایی‌های بصری دارند. Aspose.PDF for .NET یک API قدرتمند مبتنی بر ابر ارائه می‌دهد که این کار را ساده می‌کند. شما یاد خواهید گرفت چگونه تصاویر را از فایل‌های 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 یک API مبتنی بر REST ارائه می‌دهد که با PDFهای ذخیره‌شده در Aspose Cloud کار می‌کند. این SDK روش‌هایی مانند GetDocumentImages برای فهرست کردن تصاویر و GetImage برای دانلود آن‌ها فراهم می‌کند، همه از طریق HTTPS. این SDK احراز هویت، مدیریت ذخیره‌سازی و جریان‌سازی داده‌های باینری را مدیریت می‌کند و به شما امکان می‌دهد بر منطق تجاری تمرکز کنید.

SDK همچنین از فایل‌های بزرگ از طریق بارگذاری‌های تکه‌ای و استفاده بهینه از حافظه پشتیبانی می‌کند، که با نیازهای عملکردی برنامه‌های سمت سرور هم‌راستا است. استفاده دقیق از API را می‌توانید در مستندات رسمی و مرجع API بیابید.

ساخت راه‌حل: استخراج تصاویر از PDF در C#

نصب Aspose.PDF Cloud SDK برای .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 تغییر دهید. به عنوان مثال، به جای "Temp" از "Documents" استفاده کنید.

انتخاب فرمت تصویر هدف

SDK فرمت اصلی را برمی‌گرداند، اما می‌توانید با تعیین پسوند متفاوت هنگام ذخیره‌سازی فایل آن را تبدیل کنید. اگر به خروجی یکسانی مانند png نیاز دارید، متغیر format را در حلقه دانلود تنظیم کنید.

کنترل زمان‌پایان درخواست

کلاینت PdfApi به شما امکان تنظیم زمان‌تایم‌اوت سفارشی را می‌دهد:

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

افزایش timeout به هنگام پردازش 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 انجام شود، همان‌طور که در بخش “Performing PDF Image Extraction via cURL and REST API” نشان داده شده است.

چه فرمت‌های تصویری می‌توان از PDF استخراج کرد؟
API فرمت اصلی هر تصویر جاسازی‌شده را برمی‌گرداند، مانند PNG، JPEG، BMP، یا TIFF. می‌توانید ویژگی ImageInfo.ImageFormat را بررسی کنید تا فرمت را تعیین کنید.

آیا برای اجرای این در محیط تولید به مجوز نیاز دارم؟
برای استقرارهای تولیدی به یک مجوز تجاری نیاز است. می‌توانید قیمت‌گذاری را در صفحه محصول مشاهده کنید و یک مجوز موقت از صفحه مجوز موقت دریافت کنید.

بیشتر بخوانید