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#
- Carica PDF su GroupDocs Cloud storage: Usa
StorageApi.UploadFileper 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.
- Richiedi le immagini del documento: chiama
ParserApi.GetDocumentImagescon unGetDocumentImagesRequest.
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.
- 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.
- (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.
- 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.
- 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.
- 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"
- 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.
- Salva ogni immagine localmente (esempio usando
jqebase64).
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
- Installa la libreria client .NET tramite NuGet:
dotnet add package GroupDocs.Parser-Cloud
Il pacchetto è disponibile dalla pagina di download ufficiale pagina di download.
Assicurati di avere .NET 6.0 o versioni successive installato e un account GroupDocs Cloud valido con credenziali client.
(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
GetDocumentImagesrestituisce 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
ImageInfoinclude 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"aGetDocumentImagesRequestper 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.
