Extrair imagens de documentos PDF é uma necessidade frequente ao construir pipelines de processamento de documentos, especialmente para gerar miniaturas ou reutilizar gráficos em outros lugares. GroupDocs.Parser Cloud SDK for .NET oferece uma API poderosa que torna essa tarefa simples em C#. Neste guia, você aprenderá como fazer upload de um PDF, recuperar todas as imagens incorporadas, salvá‑las localmente e, opcionalmente, limpar o arquivo remoto, com código completo e exemplos REST.

Etapas para Extrair Imagens de Documentos PDF em C#

  1. Carregar PDF para o armazenamento do GroupDocs Cloud: Use StorageApi.UploadFile para colocar o PDF de origem na nuvem.
var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
storageApi.UploadFile(uploadRequest);

Esta chamada garante que o arquivo esteja acessível para análise.

  1. Solicitar imagens do documento: Chame ParserApi.GetDocumentImages com um GetDocumentImagesRequest.
var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);

A resposta contém uma coleção de objetos ImageInfo, cada um contendo dados Base64 e metadados. Consulte a referência da API para obter detalhes completos.

  1. Decodificar e salvar cada imagem: Itere através de imagesResult.Images, converta a string Base64 em um array de bytes e grave o arquivo no 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);
}

O console registra o nome do arquivo salvo, as dimensões e o DPI para verificação.

  1. (Opcional) Limpar PDF remoto: Após a extração, você pode excluir o arquivo enviado para manter o armazenamento organizado.
var deleteRequest = new DeleteFileRequest(remotePdfPath);
storageApi.DeleteFile(deleteRequest);

Esta etapa está envolvida em um bloco try‑catch para ignorar quaisquer erros de limpeza.

  1. Revisar saída: O console exibirá um resumo como Total images extracted: 12, confirmando a extração bem-sucedida.

Exemplo de Código Completo: Extrair Imagens de Documentos PDF com GroupDocs.Parser

O exemplo a seguir demonstra o fluxo de trabalho completo descrito acima. Ele inclui configuração, upload, extração de imagens, salvamento e limpeza opcional.

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: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivo e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão devidamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter ajuda.

Extrair Imagens via REST API usando cURL

A mesma operação pode ser realizada com chamadas REST diretas. Abaixo está um fluxo de trabalho cURL mínimo.

  1. Obtenha um token de acesso (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"

A resposta contém access_token.

  1. Carregue o PDF para o armazenamento na nuvem.
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. Solicitar imagens para o documento enviado.
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

A resposta JSON inclui um array de imagens com base64Data, fileExtension, pageNumber, etc.

  1. Salve cada imagem localmente (exemplo 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

Para obter mais detalhes sobre endpoints e parâmetros, consulte a documentação oficial da API.

Preparando o Ambiente

  1. Instale a biblioteca cliente .NET via NuGet:
dotnet add package GroupDocs.Parser-Cloud

O pacote está disponível na página oficial de download.

  1. Certifique-se de que você tem o .NET 6.0 ou posterior instalado e uma conta válida do GroupDocs Cloud com credenciais de cliente.

  2. (Opcional) Clone o repositório de exemplo para referência:

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

O que torna o GroupDocs.Parser adequado para extração de imagens

  • Recuperação direta de imagens: A chamada GetDocumentImages retorna imagens em seu formato original sem etapas adicionais de conversão.
  • Entrega em Base64: As imagens são fornecidas como strings Base64, facilitando a decodificação em qualquer linguagem.
  • Metadados ao nível da página: Cada ImageInfo inclui número da página, dimensões, resolução e índice, o que ajuda a organizar os ativos extraídos.
  • Suporte a todos os formatos raster comuns: PNG, JPEG, BMP, GIF, TIFF e mais são preservados exatamente como armazenados no PDF.
  • Processamento em nuvem escalável: PDFs grandes são processados nos servidores GroupDocs, reduzindo a pressão de memória na sua aplicação.

Configurando Opções de Extração de Imagens

Embora o exemplo básico funcione pronto‑para‑usar, você pode ajustar finamente a solicitação:

  • Especificar intervalo de páginas: Adicione pages = "1-5" ao GetDocumentImagesRequest para limitar a extração.
  • Definir qualidade da imagem: Use o parâmetro imageQuality (0‑100) se precisar de saída compactada.
  • Filtrar por formato: Forneça fileExtensions = ["png","jpeg"] para receber apenas os formatos selecionados.

Essas opções estão documentadas na referência da API.

Conclusão

Extrair imagens de documentos PDF em C# torna‑se um processo simples e confiável quando você utiliza o GroupDocs.Parser Cloud SDK for .NET. O SDK lida com upload, análise e conversão para Base64, permitindo que você se concentre em salvar arquivos e integrá‑los ao seu fluxo de trabalho. Lembre‑se de proteger suas credenciais de cliente, respeitar os termos de licenciamento e considerar uma licença temporária para avaliação na página de licença temporária. Com o código e os exemplos REST fornecidos, você está pronto para adicionar extração robusta de imagens de PDF a qualquer aplicação .NET.

Perguntas Frequentes

Como extraio imagens de documentos PDF usando C#?
Use o método GetDocumentImages da API Parser após fazer upload do PDF com StorageApi.UploadFile. Decodifique as strings Base64 retornadas e escreva‑as no disco, como mostrado no exemplo de código.

E se o PDF estiver protegido por senha?
Inclua a senha no modelo de solicitação. O SDK descriptografará o arquivo antes de extrair as imagens. Consulte a documentação para o nome exato da propriedade.

Posso limitar a extração a páginas específicas?
Sim, defina a propriedade pages em GetDocumentImagesRequest para uma lista separada por vírgulas ou intervalo (por exemplo, "1-3,5"). A API retornará imagens apenas dessas páginas.

Existem limites de tamanho para as imagens extraídas?
O SDK retorna os dados da imagem original sem redimensionamento. Se precisar de arquivos menores, pós‑procese as imagens salvas usando qualquer biblioteca de processamento de imagens.

Read More