Gerar miniaturas para arquivos PDF em C#

Muitas vezes, você pode precisar gerar miniaturas ao incorporar os documentos PDF em um aplicativo da web. Além disso, são necessárias miniaturas de páginas ao criar um visualizador de PDF. Para esses cenários, este artigo aborda como gerar miniaturas de um arquivo PDF programaticamente em C# .NET. Abordaremos explicitamente como criar uma miniatura de uma página específica ou de todas as páginas em um arquivo PDF.

API C# .NET para gerar miniaturas de PDF

Aspose.PDF for .NET é uma biblioteca de classes C# que permite criar e manipular documentos PDF dentro dos aplicativos .NET. Usando a API, você pode executar operações de automação de PDF básicas e avançadas com bastante facilidade. Usaremos esta API para gerar miniaturas de um arquivo PDF. A API pode ser baixada como DLL ou instalada via NuGet.

PM> Install-Package Aspose.Pdf

Gerar uma miniatura de um arquivo PDF em C# .NET

Normalmente, você precisa gerar uma única imagem em miniatura para um documento PDF. A página da miniatura pode ser a capa ou qualquer outra página de sua escolha. A seguir estão as etapas para gerar uma miniatura da página desejada de um PDF em C#.

  • Carregue o arquivo PDF usando a classe Document.
  • Obtenha uma referência da página desejada da coleção Document.Pages.
  • Crie um novo FileStream para o arquivo de imagem.
  • Crie uma instância da classe Resolution para definir a resolução da imagem em miniatura.
  • Instancie JpegDevice e defina a altura, largura, resolução e qualidade da imagem.
  • Gere miniatura usando o método JpegDevice.Process(Page, FileStream).
  • Feche o fluxo de arquivos.

O exemplo de código a seguir mostra como gerar uma miniatura de um arquivo PDF em C#.

// Abrir documento
Document pdfDocument = new Document("file.pdf");

int pageIndex = 0;

// Obter página do índice desejado da coleção
var page = pdfDocument.Pages[pageIndex];

// Criar fluxo para arquivo de imagem
using (FileStream imageStream = new FileStream("Thumbanils_" + page.Number + ".jpg", FileMode.Create))
{
    // Criar objeto de resolução
    Resolution resolution = new Resolution(300);

    // Crie uma instância do JpegDevice e defina a altura, largura, resolução e qualidade da imagem
    JpegDevice jpegDevice = new JpegDevice(45, 59, resolution, 100);

    // Converta uma página específica e salve a imagem para transmitir
    jpegDevice.Process(page, imageStream);

    // Fechar fluxo
    imageStream.Close();
}

Gerar miniaturas de todas as páginas em PDF em C#

A seguir estão as etapas para gerar miniaturas para todas as páginas em PDF em C#.

  • Carregue o arquivo PDF usando a classe Document.
  • Percorra todas as páginas em PDF usando a coleção Document.Pages.
  • Em cada iteração, execute as seguintes operações:

O exemplo de código a seguir mostra como gerar miniaturas para todas as páginas em PDF.

// Abrir documento
Document pdfDocument = new Document("file.pdf");

// Percorrer as páginas
for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
{
    // Criar fluxo para cada imagem
    using (FileStream imageStream = new FileStream("Thumbanils_" + pageCount + ".jpg", FileMode.Create))
    {
        // Criar objeto de resolução
        Resolution resolution = new Resolution(300);

        // Crie uma instância do JpegDevice e defina a altura, largura, resolução e qualidade da imagem
        JpegDevice jpegDevice = new JpegDevice(45, 59, resolution, 100);

        // Converta uma página específica e salve a imagem para transmitir
        jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);

        // Fechar fluxo
        imageStream.Close();
    }
}

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para usar o Aspose.PDF para .NET sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como gerar miniaturas para arquivos PDF em C#. Você viu como gerar uma miniatura de uma página específica ou de todas as páginas em um arquivo PDF. Além disso, você pode explorar mais sobre a API C# PDF usando a documentação. Caso você tenha alguma dúvida ou pergunta, você pode entrar em contato conosco através do nosso fórum.

Veja também