Converter PDF para Diferentes Formatos de Imagem em C#

Visão Geral

Este artigo explica como converter PDF para diferentes formatos de imagem usando C#. Ele aborda os seguintes tópicos.

Formato de Imagem: TIFF

Formato de Imagem: BMP

Formato de Imagem: EMF

Formato de Imagem: JPG

Formato de Imagem: PNG

Formato de Imagem: GIF

Formato de Imagem: SVG

C# Converter PDF para Imagem

O seguinte trecho de código também funciona com a biblioteca Aspose.PDF.Drawing.

Aspose.PDF para .NET utiliza várias abordagens para converter PDF em imagem. Aspose.PDF para .NET usa várias abordagens para converter PDF em imagem.

Existem várias classes na biblioteca que permitem usar um dispositivo virtual para transformar imagens. DocumentDevice é orientado para a conversão de todo o documento, mas ImageDevice - para uma página específica.

Converter PDF usando a classe DocumentDevice

Aspose.PDF para .NET torna possível converter páginas de PDF em imagens TIFF.

A classe TiffDevice (baseada em DocumentDevice) permite converter páginas de PDF em imagens TIFF. Esta classe fornece um método chamado Process que permite converter todas as páginas de um arquivo PDF em uma única imagem TIFF.

Converter Páginas de PDF para Uma Imagem TIFF

Aspose.PDF for .NET explica como converter todas as páginas de um arquivo PDF em uma única imagem TIFF:

Passos: Converter PDF para TIFF em C#

  1. Crie um objeto da classe Document.
  2. Crie objetos TiffSettings e TiffDevice
  3. Chame o método TiffDevice.Process() para converter o documento PDF em TIFF.
  4. Para definir as propriedades do arquivo de saída, use a classe TiffSettings.

O seguinte trecho de código mostra como converter todas as páginas do PDF em uma única imagem TIFF.

public static void ConvertPDFtoTIFF()
{
    // Abrir documento
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    // Criar objeto Resolution
    Resolution resolution = new Resolution(300);

    // Criar objeto TiffSettings
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.None,
        Depth = ColorDepth.Default,
        Shape = ShapeType.Landscape,
        SkipBlankPages = false
    };

    // Criar dispositivo TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

    // Converter uma página específica e salvar a imagem em stream
    tiffDevice.Process(pdfDocument, _dataDir + "AllPagesToTIFF_out.tif");
}

Converter Uma Página para Imagem TIFF

Aspose.PDF para .NET permite converter uma página específica de um arquivo PDF para uma imagem TIFF, use uma versão sobrecarregada do método Process(..) que recebe um número de página como argumento para a conversão. O seguinte trecho de código mostra como converter a primeira página de um PDF para o formato TIFF.

Passos: Converter Páginas Únicas ou Específicas de PDF para TIFF em C#

  1. Crie um objeto da classe Document.
  2. Crie objetos TiffSettings e TiffDevice
  3. Chame o método sobrecarregado TiffDevice.Process() com os parâmetros fromPage e toPage para converter páginas do documento PDF para TIFF.
public static void ConvertPDFtoTiffSinglePage()
{
    // Abrir documento
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    // Criar objeto Resolution
    Resolution resolution = new Resolution(300);

    // Criar objeto TiffSettings
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.None,
        Depth = ColorDepth.Default,
        Shape = ShapeType.Landscape,
    };

    // Criar dispositivo TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

    // Converter uma página específica e salvar a imagem em stream
    tiffDevice.Process(pdfDocument, 1, 1, _dataDir + "PageToTIFF_out.tif");
}

Use o algoritmo Bradley durante a conversão

Aspose.PDF para .NET tem suportado o recurso de converter PDF para TIF usando compressão LZW e então com o uso de AForge, Binarização pode ser aplicada. No entanto, um dos clientes solicitou que para algumas imagens, eles precisam obter o Limiar usando Otsu, então eles também gostariam de usar Bradley.

  public static void ConvertPDFtoTiffBradleyBinarization()
{
     // Abrir documento
     Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    string outputImageFile = _dataDir + "resultant_out.tif";
    string outputBinImageFile = _dataDir + "37116-bin_out.tif";

    // Criar objeto Resolution
    Resolution resolution = new Resolution(300);
    // Criar objeto TiffSettings
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.LZW,
        Depth = Aspose.Pdf.Devices.ColorDepth.Format1bpp
    };
    // Criar dispositivo TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
    // Converter uma página específica e salvar a imagem no stream
    tiffDevice.Process(pdfDocument, outputImageFile);

    using (FileStream inStream = new FileStream(outputImageFile, FileMode.Open))
    {
        using (FileStream outStream = new FileStream(outputBinImageFile, FileMode.Create))
        {
            tiffDevice.BinarizeBradley(inStream, outStream, 0.1);
        }
    }
} 

Converter PDF usando a classe ImageDevice

ImageDevice é o ancestral para BmpDevice, JpegDevice, GifDevice, PngDevice e EmfDevice.

  • A classe BmpDevice permite converter páginas de PDF em imagens BMP.
  • A classe EmfDevice permite converter páginas de PDF em imagens EMF.
  • A classe JpegDevice permite converter páginas de PDF em imagens JPEG.
  • A classe PngDevice permite converter páginas de PDF em imagens PNG.
  • A classe GifDevice permite converter páginas de PDF em imagens GIF.

Vamos ver como converter uma página de PDF em uma imagem. Vamos ver como converter uma página de PDF em uma imagem.

A classe BmpDevice fornece um método chamado Process que permite converter uma página específica do arquivo PDF para o formato de imagem BMP. As outras classes possuem o mesmo método. Então, se precisarmos converter uma página de PDF para uma imagem, simplesmente instanciamos a classe necessária.

Os seguintes passos e trecho de código em C# mostram essa possibilidade

Passos: PDF para Imagem (BMP, EMF, JPG, PNG, GIF) em C#

  1. Crie uma instância de uma subclasse de ImageDevice i.e.
    • BmpDevice (para converter PDF em BMP)
    • EmfDevice (para converter PDF em Emf)
    • JpegDevice (para converter PDF em JPG)
    • PngDevice (para converter PDF em PNG)
    • GifDevice (para converter PDF em GIF)
  2. Chame o método ImageDevice.Process() para realizar a conversão de PDF para imagem.
public static class ExampleConvertPdfToImage
{
     private static readonly string _dataDir = @"C:\Samples\";
    // BMP, JPEG, GIF, PNG, EMF
    public static void ConvertPDFusingImageDevice()
    {
        // Crie o objeto Resolution            
        Resolution resolution = new Resolution(300);
        BmpDevice bmpDevice = new BmpDevice(resolution);
        JpegDevice jpegDevice = new JpegDevice(resolution);
        GifDevice gifDevice = new GifDevice(resolution);
        PngDevice pngDevice = new PngDevice(resolution);
        EmfDevice emfDevice = new EmfDevice(resolution);

        Document document = new Document(_dataDir + 
            "ConvertAllPagesToBmp.pdf");
            
        ConvertPDFtoImage(bmpDevice, "bmp", document);
        ConvertPDFtoImage(jpegDevice,"jpeg", document);
        ConvertPDFtoImage(gifDevice, "gif", document);
        ConvertPDFtoImage(pngDevice, "png", document);
        ConvertPDFtoImage(emfDevice, "emf", document);
            
    }
}

public static void ConvertPDFtoImage(ImageDevice imageDevice, 
        string ext, Document pdfDocument)
{
    for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
    {
        using (FileStream imageStream = 
        new FileStream($"{_dataDir}image{pageCount}_out.{ext}", 
        FileMode.Create))
        {
            // Converta uma página específica e salve a imagem no stream
            imageDevice.Process(pdfDocument.Pages[pageCount], imageStream);

            // Feche o stream
            imageStream.Close();
        }
    }
}

Converter PDF usando a classe SaveOptions

Esta parte do artigo mostra como converter PDF para SVG usando C# e a classe SaveOptions.

Conversão de PDF para SVG com o aplicativo gratuito Aspose.PDF Conversão de PDF para SVG com Aplicativo Gratuito da Aspose.PDF

Gráficos Vetoriais Escaláveis (SVG) é uma família de especificações de um formato de arquivo baseado em XML para gráficos vetoriais bidimensionais, tanto estáticos quanto dinâmicos (interativos ou animados). A especificação SVG é um padrão aberto que está em desenvolvimento pelo Consórcio World Wide Web (W3C) desde 1999.

As imagens SVG e seus comportamentos são definidos em arquivos de texto XML. Isso significa que eles podem ser pesquisados, indexados, scriptados e, se necessário, comprimidos. Como arquivos XML, as imagens SVG podem ser criadas e editadas com qualquer editor de texto, mas é frequentemente mais conveniente criá-las com programas de desenho como o Inkscape.

Aspose.PDF para .NET suporta a funcionalidade de converter imagens SVG para o formato PDF e também oferece a capacidade de converter arquivos PDF para o formato SVG. Aspose.PDF para .NET suporta a funcionalidade de converter imagens SVG para o formato PDF e também oferece a capacidade de converter arquivos PDF para o formato SVG.

O seguinte trecho de código mostra os passos para converter um arquivo PDF para o formato SVG com .NET.

Passos: Converter PDF para SVG em C#

  1. Crie um objeto da classe Document.
  2. Crie um objeto SvgSaveOptions com as configurações necessárias.
  3. Chame o método Document.Save() e passe o objeto SvgSaveOptions para converter o documento PDF em SVG.
public static void ConvertPDFtoSVG()
{
    // Carregar documento PDF
    Document document = new Document(System.IO.Path.Combine(_dataDir, "input.pdf"));
    // Instanciar um objeto de SvgSaveOptions
    SvgSaveOptions saveOptions = new SvgSaveOptions
    {
        // Não comprimir a imagem SVG para arquivo Zip
        CompressOutputToZipArchive = false,
        TreatTargetFileNameAsDirectory = true                
    };
            
    // Salvar a saída em arquivos SVG
    document.Save(System.IO.Path.Combine(_dataDir, "PDFToSVG_out.svg"), saveOptions);
}