Estrazione di immagini da documenti PDF è una necessità frequente quando si costruiscono pipeline di elaborazione dei documenti, soprattutto per generare miniature o riutilizzare grafiche altrove. GroupDocs.Parser Cloud SDK for .NET fornisce un’API potente che rende questo compito semplice in C#. In questa guida imparerai come caricare un PDF, recuperare tutte le immagini incorporate, salvarle localmente e, facoltativamente, pulire il file remoto, con esempi di codice completi e REST.

Passaggi per estrarre immagini da documenti PDF in C#

  1. Carica PDF su GroupDocs Cloud storage: Usa StorageApi.UploadFile per posizionare il PDF di origine nel cloud.
var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
storageApi.UploadFile(uploadRequest);

Questa chiamata garantisce che il file sia accessibile per l’analisi.

  1. Richiedi le immagini del documento: chiama ParserApi.GetDocumentImages con un GetDocumentImagesRequest.
var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);

La risposta contiene una collezione di oggetti ImageInfo, ognuno dei quali contiene dati Base64 e metadati. Consulta la riferimento API per tutti i dettagli.

  1. Decodifica e salva ogni immagine: Itera attraverso imagesResult.Images, converti la stringa Base64 in un array di byte e scrivi il file su disco.
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);
}

La console registra il nome del file salvato, le dimensioni e i DPI per la verifica.

  1. (Facoltativo) Pulizia del PDF remoto: Dopo l’estrazione, è possibile eliminare il file caricato per mantenere l’archiviazione ordinata.
var deleteRequest = new DeleteFileRequest(remotePdfPath);
storageApi.DeleteFile(deleteRequest);

Questo passaggio è avvolto in un blocco try‑catch per ignorare eventuali errori di pulizia.

  1. Verifica dell’output: La console visualizzerà un riepilogo come Total images extracted: 12, confermando l’estrazione riuscita.

Esempio completo di codice: estrarre immagini da documenti PDF con GroupDocs.Parser

Il seguente esempio dimostra il flusso di lavoro completo descritto sopra. Include la configurazione, il caricamento, l’estrazione delle immagini, il salvataggio e la pulizia opzionale.

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
                }
            }
        }
    }
}

Nota: Questo esempio di codice dimostra la funzionalità principale. Prima di usarlo nel tuo progetto, assicurati di aggiornare tutti i percorsi dei file e i valori di configurazione per corrispondere al tuo ambiente reale, verifica che tutte le dipendenze richieste siano correttamente installate e testa accuratamente nel tuo ambiente di sviluppo. Se riscontri problemi, consulta la documentazione ufficiale o contatta il team di supporto per assistenza.

Estrai immagini tramite REST API usando cURL

La stessa operazione può essere eseguita con chiamate REST dirette. Di seguito è un flusso di lavoro cURL minimo.

  1. Ottieni un token di accesso (concessione di credenziali client OAuth 2.0).
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"

La risposta contiene access_token.

  1. Carica il PDF nel cloud storage.
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. Richiedi le immagini per il documento caricato.
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

La risposta JSON include un array di immagini con base64Data, fileExtension, pageNumber, ecc.

  1. Salva ogni immagine localmente (esempio usando jq e 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

Per ulteriori dettagli su endpoint e parametri, consulta la documentazione ufficiale dell’API.

Preparare l’ambiente

  1. Installa la libreria client .NET tramite NuGet:
dotnet add package GroupDocs.Parser-Cloud

Il pacchetto è disponibile dalla pagina di download ufficiale pagina di download.

  1. Assicurati di avere .NET 6.0 o versioni successive installato e un account GroupDocs Cloud valido con credenziali client.

  2. (Facoltativo) Clona il repository di esempio per riferimento:

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

Cosa rende GroupDocs.Parser adatto all’estrazione di immagini

  • Recupero diretto delle immagini: la chiamata GetDocumentImages restituisce le immagini nel loro formato originale senza passaggi di conversione aggiuntivi.
  • Consegna Base64: le immagini sono fornite come stringhe Base64, rendendo facile la decodifica in qualsiasi linguaggio.
  • Metadati a livello di pagina: ogni ImageInfo include il numero di pagina, le dimensioni, la risoluzione e l’indice, il che aiuta a organizzare le risorse estratte.
  • Supporto per tutti i formati raster comuni: PNG, JPEG, BMP, GIF, TIFF e altri sono conservati esattamente come memorizzati nel PDF.
  • Elaborazione cloud scalabile: i PDF di grandi dimensioni vengono gestiti sui server GroupDocs, riducendo la pressione sulla memoria della tua applicazione.

Configurazione delle opzioni di estrazione delle immagini

Mentre l’esempio di base funziona subito, è possibile perfezionare la richiesta:

  • Specifica l’intervallo di pagine: Aggiungi pages = "1-5" a GetDocumentImagesRequest per limitare l’estrazione.
  • Imposta la qualità dell’immagine: Usa il parametro imageQuality (0‑100) se ti serve un output compresso.
  • Filtra per formato: Fornisci fileExtensions = ["png","jpeg"] per ricevere solo i formati selezionati.

Queste opzioni sono documentate nel riferimento API.

Conclusione

Estrazione delle immagini da documenti PDF in C# diventa un processo semplice e affidabile quando si utilizza il GroupDocs.Parser Cloud SDK for .NET. L’SDK gestisce il caricamento, l’analisi e la conversione in Base64, consentendoti di concentrarti sul salvataggio dei file e sulla loro integrazione nel tuo flusso di lavoro. Ricorda di proteggere le credenziali del client, rispettare i termini di licenza e considerare una licenza temporanea per la valutazione nella pagina della licenza temporanea. Con il codice e gli esempi REST forniti, sei pronto ad aggiungere un’estrazione di immagini PDF robusta a qualsiasi applicazione .NET.

FAQs

Come estrarre immagini da documenti PDF usando C#?
Utilizzare il metodo GetDocumentImages dell’API Parser dopo aver caricato il PDF con StorageApi.UploadFile. Decodificare le stringhe Base64 restituite e scriverle su disco, come mostrato nell’esempio di codice.

Cosa succede se il PDF è protetto da password?
Includi la password nel modello di richiesta. L’SDK decritterà il file prima di estrarre le immagini. Consulta la documentazione per il nome esatto della proprietà.

Posso limitare l’estrazione a pagine specifiche?
Sì, imposta la proprietà pages su GetDocumentImagesRequest a un elenco separato da virgole o a un intervallo (ad es., "1-3,5"). L’API restituirà le immagini solo da quelle pagine.

Ci sono limiti di dimensione per le immagini estratte?
L’SDK restituisce i dati dell’immagine originale senza ridimensionamento. Se hai bisogno di file più piccoli, elabora le immagini salvate in post‑processo usando qualsiasi libreria di elaborazione immagini.

Read More