L’extraction d’images à partir de documents PDF est une exigence fréquente lors de la création de pipelines de traitement de documents, notamment pour générer des miniatures ou réutiliser des graphiques ailleurs. GroupDocs.Parser Cloud SDK for .NET fournit une API puissante qui rend cette tâche simple en C#. Dans ce guide, vous apprendrez comment télécharger un PDF, récupérer toutes les images intégrées, les enregistrer localement et, éventuellement, nettoyer le fichier distant, avec du code complet et des exemples REST.

Étapes pour extraire des images des documents PDF en C#

  1. Télécharger le PDF vers le stockage GroupDocs Cloud : Utilisez StorageApi.UploadFile pour placer le PDF source dans le cloud.
var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
storageApi.UploadFile(uploadRequest);

Cet appel garantit que le fichier est accessible pour l’analyse.

  1. Demander les images du document : Call ParserApi.GetDocumentImages with a GetDocumentImagesRequest.
var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);

La réponse contient une collection d’objets ImageInfo, chacun contenant des données Base64 et des métadonnées. Consultez la référence API pour plus de détails.

  1. Décoder et enregistrer chaque image : Parcourez imagesResult.Images, convertissez la chaîne Base64 en tableau d’octets et écrivez le fichier sur le disque.
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 consigne le nom du fichier enregistré, ses dimensions et son DPI pour vérification.

  1. (Optionnel) Nettoyer le PDF distant: Après l’extraction, vous pouvez supprimer le fichier téléchargé afin de garder le stockage propre.
var deleteRequest = new DeleteFileRequest(remotePdfPath);
storageApi.DeleteFile(deleteRequest);

Cette étape est encapsulée dans un bloc try‑catch pour ignorer les éventuelles erreurs de nettoyage.

  1. Examen de la sortie: La console affichera un résumé comme Total images extracted: 12, confirmant une extraction réussie.

Exemple complet de code : extraire des images des documents PDF avec GroupDocs.Parser

L’exemple suivant montre le flux de travail complet décrit ci‑dessus. Il comprend la configuration, le téléchargement, l’extraction d’images, l’enregistrement et le nettoyage optionnel.

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

Note : Cet exemple de code démontre la fonctionnalité principale. Avant de l’utiliser dans votre projet, assurez‑vous de mettre à jour tous les chemins de fichiers et les valeurs de configuration pour qu’ils correspondent à votre environnement réel, vérifiez que toutes les dépendances requises sont correctement installées et testez soigneusement dans votre environnement de développement. Si vous rencontrez des problèmes, veuillez consulter la documentation officielle ou contacter l’équipe de support pour obtenir de l’aide.

Extraire des images via l’API REST en utilisant cURL

La même opération peut être effectuée avec des appels REST directs. Voici un flux de travail cURL minimal.

  1. Obtenir un jeton d’accès (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"

La réponse contient access_token.

  1. Télécharger le PDF vers le stockage 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. Demander des images pour le document téléchargé.
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

La réponse JSON comprend un tableau d’images avec base64Data, fileExtension, pageNumber, etc.

  1. Enregistrez chaque image localement (exemple utilisant jq et 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

Pour plus de détails sur les points de terminaison et les paramètres, consultez la documentation officielle de l’API.

Préparer l’environnement

  1. Installez la bibliothèque cliente .NET via NuGet:
dotnet add package GroupDocs.Parser-Cloud

Le package est disponible sur la page de téléchargement officielle.

  1. Assurez-vous d’avoir .NET 6.0 ou une version ultérieure installé et un compte GroupDocs Cloud valide avec des informations d’identification client.

  2. (Facultatif) Clonez le référentiel d’exemple à titre de référence:

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

Ce qui rend GroupDocs.Parser adapté à l’extraction d’images

  • Récupération directe d’images : L’appel GetDocumentImages renvoie les images dans leur format d’origine sans étapes de conversion supplémentaires.
  • Livraison en Base64 : Les images sont fournies sous forme de chaînes Base64, ce qui les rend faciles à décoder dans n’importe quel langage.
  • Métadonnées au niveau de la page : Chaque ImageInfo inclut le numéro de page, les dimensions, la résolution et l’index, ce qui aide à organiser les actifs extraits.
  • Prise en charge de tous les formats raster courants : PNG, JPEG, BMP, GIF, TIFF et plus sont conservés exactement comme stockés dans le PDF.
  • Traitement cloud évolutif : Les gros PDF sont traités sur les serveurs GroupDocs, réduisant la pression mémoire sur votre application.

Configuration des options d’extraction d’images

Bien que l’exemple de base fonctionne immédiatement, vous pouvez affiner la requête :

  • Spécifier la plage de pages : Ajoutez pages = "1-5" à GetDocumentImagesRequest pour limiter l’extraction.
  • Définir la qualité de l’image : Utilisez le paramètre imageQuality (0‑100) si vous avez besoin d’une sortie compressée.
  • Filtrer par format : Fournissez fileExtensions = ["png","jpeg"] pour ne recevoir que les formats sélectionnés.

Ces options sont documentées dans la référence de l’API.

Conclusion

L’extraction d’images à partir de documents PDF en C# devient un processus simple et fiable lorsque vous utilisez le GroupDocs.Parser Cloud SDK for .NET. Le SDK gère le téléchargement, l’analyse et la conversion en Base64, vous permettant de vous concentrer sur l’enregistrement des fichiers et leur intégration dans votre flux de travail. N’oubliez pas de sécuriser vos identifiants client, de respecter les conditions de licence et d’envisager une licence temporaire pour l’évaluation sur la page de licence temporaire. Avec le code et les exemples REST fournis, vous êtes prêt à ajouter une extraction d’images PDF robuste à toute application .NET.

FAQs

Comment extraire des images de documents PDF en utilisant C# ?
Utilisez la méthode GetDocumentImages de l’API Parser après avoir téléchargé le PDF avec StorageApi.UploadFile. Décodez les chaînes Base64 retournées et écrivez‑les sur le disque, comme indiqué dans l’exemple de code.

Et si le PDF est protégé par un mot de passe ?
Incluez le mot de passe dans le modèle de requête. Le SDK déchiffrera le fichier avant d’extraire les images. Consultez la documentation pour le nom exact de la propriété.

Puis-je limiter l’extraction à des pages spécifiques ?
Oui, définissez la propriété pages sur GetDocumentImagesRequest avec une liste séparée par des virgules ou une plage (par ex., "1-3,5"). L’API renverra les images uniquement de ces pages.

Existe-t-il des limites de taille pour les images extraites ?
Le SDK renvoie les données d’image originales sans redimensionnement. Si vous avez besoin de fichiers plus petits, post‑traitez les images enregistrées à l’aide de n’importe quelle bibliothèque de traitement d’image.

En savoir plus