Mengekstrak gambar dari dokumen PDF adalah kebutuhan yang sering muncul saat membangun pipeline pemrosesan dokumen, terutama untuk membuat thumbnail atau menggunakan kembali grafik di tempat lain. GroupDocs.Parser Cloud SDK for .NET menyediakan API yang kuat yang membuat tugas ini menjadi mudah dalam C#. Dalam panduan ini Anda akan belajar cara mengunggah PDF, mengambil semua gambar yang disematkan, menyimpannya secara lokal, dan secara opsional membersihkan file remote, dengan contoh kode lengkap dan contoh REST.

Langkah-langkah untuk Mengekstrak Gambar dari Dokumen PDF di C#

  1. Upload PDF ke penyimpanan GroupDocs Cloud: Gunakan StorageApi.UploadFile untuk menempatkan PDF sumber di cloud.
var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
storageApi.UploadFile(uploadRequest);

Pemanggilan ini memastikan file dapat diakses untuk diparsing.

  1. Minta gambar dokumen: Panggil ParserApi.GetDocumentImages dengan GetDocumentImagesRequest.
var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);

Respons berisi koleksi objek ImageInfo, masing-masing menyimpan data Base64 dan metadata. Lihat referensi API untuk detail lengkap.

  1. Dekode dan simpan setiap gambar: Iterasi melalui imagesResult.Images, konversi string Base64 menjadi array byte, dan tulis file ke disk.
foreach (ImageInfo imgInfo in imagesResult.Images)
{
    byte[] imageBytes = Convert.FromBase64String(imgInfo.Base64Data);
    string extension = imgInfo.FileExtension?.TrimStart('.').ToLower() ?? "bin";
    string fileName = $"extracted_page{imgInfo.PageNumber}_img{imgInfo.ImageIndex}_{imageCounter}.{extension}";
    File.WriteAllBytes(fileName, imageBytes);
}

Konsol mencatat nama file yang disimpan, dimensi, dan DPI untuk verifikasi.

  1. (Opsional) Bersihkan PDF remote: Setelah ekstraksi, Anda dapat menghapus file yang diunggah untuk menjaga penyimpanan tetap rapi.
var deleteRequest = new DeleteFileRequest(remotePdfPath);
storageApi.DeleteFile(deleteRequest);

Langkah ini dibungkus dalam blok try‑catch untuk mengabaikan kesalahan pembersihan apa pun.

  1. Tinjau output: Konsol akan menampilkan ringkasan seperti Total images extracted: 12, mengonfirmasi ekstraksi berhasil.

Contoh Kode Lengkap: Ekstrak Gambar dari Dokumen PDF dengan GroupDocs.Parser

Contoh berikut menunjukkan alur kerja lengkap yang dijelaskan di atas. Ini mencakup konfigurasi, unggah, ekstraksi gambar, penyimpanan, dan pembersihan opsional.

using System;
using System.IO;
using System.Collections.Generic;
using GroupDocs.Parser.Cloud.Sdk.Api;
using GroupDocs.Parser.Cloud.Sdk.Client;
using GroupDocs.Parser.Cloud.Sdk.Model;
using GroupDocs.Parser.Cloud.Sdk.Model.Requests;

namespace ExtractImagesFromPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            // Configuration – replace with your actual credentials
            var config = new Configuration
            {
                ClientId = "YOUR_CLIENT_ID",
                ClientSecret = "YOUR_CLIENT_SECRET"
            };

// APIs
            var storageApi = new StorageApi(config);
            var parserApi = new ParserApi(config);

// Input PDF path (local) and remote name in storage
            const string localPdfPath = "input.pdf";
            const string remotePdfPath = "input.pdf";

try
            {
                // -------------------------------------------------
                // 1. Upload PDF to GroupDocs Cloud storage (if not already there)
                // -------------------------------------------------
                if (!File.Exists(localPdfPath))
                    throw new FileNotFoundException($"Local file not found: {localPdfPath}");

var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
                storageApi.UploadFile(uploadRequest);

// -------------------------------------------------
                // 2. Retrieve document images (all pages)
                // -------------------------------------------------
                var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
                ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);

// -------------------------------------------------
                // 3. Save each extracted image to disk
                // -------------------------------------------------
                int imageCounter = 0;
                foreach (ImageInfo imgInfo in imagesResult.Images)
                {
                    // Image data is returned as Base64 string
                    byte[] imageBytes = Convert.FromBase64String(imgInfo.Base64Data);

// Build a descriptive file name
                    string extension = imgInfo.FileExtension?.TrimStart('.').ToLower() ?? "bin";
                    string fileName = $"extracted_page{imgInfo.PageNumber}_img{imgInfo.ImageIndex}_{imageCounter}.{extension}";
                    File.WriteAllBytes(fileName, imageBytes);

Console.WriteLine($"Saved: {fileName} ({imgInfo.Width}x{imgInfo.Height} px, {imgInfo.Resolution} DPI)");
                    imageCounter++;
                }

Console.WriteLine($"Total images extracted: {imageCounter}");
            }
            catch (ApiException apiEx)
            {
                Console.Error.WriteLine($"GroupDocs API error: {apiEx.ErrorCode} - {apiEx.Message}");
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"Unexpected error: {ex.Message}");
            }
            finally
            {
                // -------------------------------------------------
                // 4. Optional cleanup – delete the uploaded PDF from storage
                // -------------------------------------------------
                try
                {
                    var deleteRequest = new DeleteFileRequest(remotePdfPath);
                    storageApi.DeleteFile(deleteRequest);
                }
                catch
                {
                    // Ignored – cleanup is optional
                }
            }
        }
    }
}

Catatan: Contoh kode ini menunjukkan fungsi inti. Sebelum menggunakannya dalam proyek Anda, pastikan untuk memperbarui semua jalur file dan nilai konfigurasi agar sesuai dengan lingkungan Anda yang sebenarnya, verifikasi bahwa semua dependensi yang diperlukan telah terpasang dengan benar, dan uji secara menyeluruh di lingkungan pengembangan Anda. Jika Anda menemukan masalah, silakan merujuk ke dokumentasi resmi atau hubungi tim dukungan untuk bantuan.

Ekstrak Gambar melalui REST API Menggunakan cURL

Operasi yang sama dapat dilakukan dengan panggilan REST langsung. Di bawah ini adalah alur kerja cURL minimal.

  1. Dapatkan token akses (OAuth 2.0 client credentials grant).
curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

Respons berisi access_token.

  1. Unggah PDF ke penyimpanan cloud.
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/pdf" \
     --data-binary "@input.pdf"
  1. Minta gambar untuk dokumen yang diunggah.
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Respon JSON mencakup array gambar dengan base64Data, fileExtension, pageNumber, dll.

  1. Simpan setiap gambar secara lokal (contoh menggunakan jq dan base64).
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" | \
     jq -r '.images[] | "\(.pageNumber)_\(.imageIndex).\(.fileExtension) \(.base64Data)"' | \
     while read filename b64; do
         echo "$b64" | base64 -d > "$filename"
     done

Untuk detail lebih lanjut tentang endpoint dan parameter, lihat dokumentasi API resmi.

Menyiapkan Lingkungan

  1. Instal pustaka klien .NET melalui NuGet:
dotnet add package GroupDocs.Parser-Cloud

Paket tersedia dari halaman unduhan resmi.

  1. Pastikan Anda memiliki .NET 6.0 atau yang lebih baru terinstal serta akun GroupDocs Cloud yang valid dengan kredensial klien.

  2. (Opsional) Klon repositori contoh untuk referensi:

    git clone https://github.com/groupdocs-parser-cloud/groupdocs-parser-cloud-dotnet.git
    

Apa yang Membuat GroupDocs.Parser Cocok untuk Ekstraksi Gambar

  • Pengambilan gambar langsung: Panggilan GetDocumentImages mengembalikan gambar dalam format aslinya tanpa langkah konversi tambahan.
  • Pengiriman Base64: Gambar disediakan sebagai string Base64, memudahkan dekripsi dalam bahasa apa pun.
  • Metadata tingkat halaman: Setiap ImageInfo mencakup nomor halaman, dimensi, resolusi, dan indeks, yang membantu mengatur aset yang diekstrak.
  • Dukungan untuk semua format raster umum: PNG, JPEG, BMP, GIF, TIFF dan lainnya dipertahankan persis seperti yang disimpan dalam PDF.
  • Pemrosesan cloud yang dapat diskalakan: PDF besar diproses di server GroupDocs, mengurangi beban memori pada aplikasi Anda.

Mengonfigurasi Opsi Ekstraksi Gambar

Sementara contoh dasar berfungsi langsung, Anda dapat menyesuaikan permintaan secara detail:

  • Tentukan rentang halaman: Tambahkan pages = "1-5" ke GetDocumentImagesRequest untuk membatasi ekstraksi.
  • Atur kualitas gambar: Gunakan parameter imageQuality (0‑100) jika Anda memerlukan output compressed.
  • Filter berdasarkan format: Berikan fileExtensions = ["png","jpeg"] untuk menerima hanya format yang dipilih.

Opsi-opsi ini didokumentasikan dalam referensi API.

Kesimpulan

Mengekstrak gambar dari dokumen PDF di C# menjadi proses yang sederhana dan andal ketika Anda memanfaatkan GroupDocs.Parser Cloud SDK for .NET. SDK menangani pengunggahan, parsing, dan konversi Base64, memungkinkan Anda fokus pada penyimpanan file dan mengintegrasikannya ke dalam alur kerja Anda. Ingatlah untuk mengamankan kredensial klien Anda, menghormati ketentuan lisensi, dan pertimbangkan lisensi sementara untuk evaluasi di halaman lisensi sementara. Dengan kode dan contoh REST yang disediakan, Anda siap menambahkan ekstraksi gambar PDF yang kuat ke aplikasi .NET apa pun.

FAQs

Bagaimana cara mengekstrak gambar dari dokumen PDF menggunakan C#?
Gunakan metode GetDocumentImages dari Parser API setelah mengunggah PDF dengan StorageApi.UploadFile. Dekode string Base64 yang dikembalikan dan tulis ke disk, seperti yang ditunjukkan dalam contoh kode.

Bagaimana jika PDF dilindungi kata sandi?
Sertakan kata sandi dalam model permintaan. SDK akan mendekripsi file sebelum mengekstrak gambar. Lihat dokumentasi untuk nama properti yang tepat.

Bisakah saya membatasi ekstraksi ke halaman tertentu?
Ya, atur properti pages pada GetDocumentImagesRequest ke daftar yang dipisahkan koma atau rentang (mis., "1-3,5"). API akan mengembalikan gambar hanya dari halaman tersebut.

Apakah ada batas ukuran untuk gambar yang diekstrak?
SDK mengembalikan data gambar asli tanpa mengubah ukuran. Jika Anda membutuhkan file yang lebih kecil, proses lanjutan gambar yang disimpan menggunakan perpustakaan pemrosesan gambar apa pun.

Baca Selengkapnya