Витяг окремих зображень з документів 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 пропонує REST‑базований API, який працює з PDF‑файлами, збереженими в Aspose Cloud. Він надає методи, такі як 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. Наприклад, використовуйте "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, як показано у розділі “Performing PDF Image Extraction via cURL and REST API”.

Які формати зображень можна витягти з PDF?
API повертає оригінальний формат кожного вбудованого зображення, наприклад PNG, JPEG, BMP, або TIFF. Ви можете перевірити властивість ImageInfo.ImageFormat, щоб визначити формат.

Чи потрібна ліцензія для запуску в продакшн?
Для продакшн-розгортань потрібна комерційна ліцензія. Ви можете переглянути ціни на сторінці продукту та отримати тимчасову ліцензію на сторінка тимчасової ліцензії.

Read More