ქლაუდში შენახული PDF დოკუმენტებიდან ინდივიდუალური სურათების ამოღება ხშირად საჭიროა თანამედროვე C# აპლიკაციებისთვის, რომლებიც სჭირდებათ ვიზუალური მასალების გადამუშავება ან ანალიზი.
Aspose.PDF for .NET მძლავრი ღრუბლოვანი API-ს უზრუნველყოფს, რომელიც ამ დავალებას გამარტივებს.
შეისწავლით, როგორ გამოიღოთ სურათები PDF ფაილებიდან C#-ის და Aspose.PDF Cloud SDK-ის გამოყენებით.
ამ გიდის დასასრულში, თქვენ მიიღებთ სრულ, წარმოებაში გამოყენებისთვის მზადყოფნის მქონე გადაწყვეტას, რომელიც შეიცავს როგორც SDK კოდს, ისე შესაბამის cURL მოთხოვნებს.

C#-ში PDF-ის სურათის ამოღების მოთხოვნები

ღრუბლობით-ნატურალურ დოკუმენტების დამუშავების პაიპლაინებს ქმნის დეველოპერებს ხშირად სჭირდება PDF‑ებიდან გრაფიკების გამოტანა, რომლებიც დისტანციურ საცავში მდებარეობს. ჩვეულებრივი მოთხოვნები მოიცავს:

  • წვდომა Aspose Cloud საცავში შენახული PDF‑ზე.
  • შესაძლებლობა დოკუმენტში ჩასმული ყველა სურათის ობიექტის გადათვლა.
  • თითოეული სურათის გადმოწერა მისი ორიგინალურ ფორმატში ხარისხის დაკარგვის გარეშე.
  • მინიმალური მეხსიერების მოხმარება დიდი PDF‑ების სერვერზე დამუშავებისთვის.

ზოგადი ფაილური სისტემის ინსტრუმენტები არ შეუძლიათ პირდაპირ მიაღწიონ ღრუბლურ შენახვას, და დესკტოპის პროგრამებით ხელით გადამოღება არ მასშტაბირდება ავტომატიზებული სამუშაო დატვირთვებისათვის. პროგრამული მიდგომა, რომელიც იყენებს ღრუბლურ‑მზად ბიბლიოთეკას, აუცილებელია.

როგორ შეესაბამება Aspose.PDF Cloud SDK for .NET PDF-ის სურათის გამოტანა

Aspose.PDF Cloud SDK for .NET REST‑ზე დაფუძნებული API-ს სთავაზობს, რომელიც მუშაობს Aspose Cloud-ში შენახული PDF‑ებთან. იგი უზრუნველყოფს მეთოდებს, როგორიცაა GetDocumentImages, რომელიც სურათებს სია ქმნის, და GetImage, რომელიც მათ გადმოწერს, ყველა HTTPS‑ით. SDK-ს შეუძლია აუტენტიფიკაციის, შენახვის მართვის და ბინარული მონაცემების სტრიმინგის დამუშავება, რაც საშუალებას გაძლევთ ფოკუსირდეთ ბიზნესი ლოგიკაზე.

SDK‑მა ასევე მხარს უჭერს დიდ ფაილებს, იყენებს ნაწილობრივ ატვირთვების საშუალებით და ეფექტურ მეხსიერების გამოყენებით, რაც ემთხვევა სერვერის‑მხარის აპლიკაციების შესრულების მოთხოვნებს. დეტალური API‑ის გამოყენება შეგიძლიათ იპოვოთ ოფიციალურ დოკუმენტაციაში და API‑ის მითითებაში.

გადაწყვეტის შექმნა: სურათების გამოღება PDF‑დან C#-ში

დააყენეთ Aspose.PDF Cloud SDK for .NET

პირველად, დაამატეთ SDK პაკეტი თქვენს პროექტში.

dotnet add package Aspose.PDF-Cloud

თქვენ ასევე შეგიძლიათ ბინარული ფაილები ჩამოტვირთოთ ჩამოტვირთვის გვერდი.

Aspose Cloud-ის ავტორიზაციის დეტალების კონფიგურაცია

შექმენით კონფიგურაციის ობიექტი თქვენი კლიენტის ID-ით და საიდუმლოთი.

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

Configuration კლასი დოკუმენტირებულია API მიმართვაში.

PDF-ის ატვირთვა ღრუბლურ შენახვაზე

თუ PDF უკვე არ არის Aspose Cloud storage, ატვირთეთ იგი.

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 პასუხი შეიცავს გამოსახულებების ID-ებისა და ფორმატების მასივს.

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 წინა ნაბიჯის რეალურ სურათის ID-ით. გამეორეთ ბრძანება ყველა ID-სთვის.

მეტი დეტალებისთვის, იხილეთ ოფიციალური 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 თვისება ფორმატის დასადგენად.

როცა გინდა ეს წარმოებაში გაუშვათ, საჭიროა ლიცენზია?
სამუშაო გარემოში განთავსებისთვის საჭიროა კომერციული ლიცენზია. თქვენ შეგიძლიათ ნახოთ ფასები პროდუქტის გვერდზე და მიიღოთ დროებითი ლიცენზია დროებითი ლიცენზიის გვერდიდან.

მეტი