Solução C# para conversão de PDF em imagem

2024-02-01 09:02:53

C# Solution for PDF to Image Conversion

Os arquivos PDF são amplamente utilizados no trabalho diário devido ao seu layout estável, fácil transferência e alta legibilidade. Em alguns casos, pode ser necessário converter PDF em imagens. Salvar conteúdo como imagens não apenas acelera o carregamento, mas também reduz o risco de edição acidental. Além disso, se você deseja incorporar arquivos ou páginas PDF em outros documentos ou páginas da web, convertê-los em formatos de imagem específicos é uma excelente escolha. Esta passagem cobre os detalhes de usando C# para converter PDF em imagem. E você pode facilmente converter PDF para os formatos de imagem desejados com código C#, preservando a fidelidade visual do conteúdo original.

Biblioteca C# para conversão de PDF

Este artigo demonstra como converter PDF em imagem usando Spire.PDF for .NET, que é uma biblioteca confiável de processamento de PDF que permite manipular e converter arquivos PDF em aplicativos .NET. Com ele, você ainda pode ajustar as propriedades da imagem, como tamanho e pixels, durante a conversão de PDF para imagem.
Além da imagem, esta biblioteca também permite converter PDF para Word, PDF para HTML, PDF para XPS e assim por diante.

Você também pode download e faça referência ao arquivo DLL manualmente ou instale-o via NuGet usando o seguinte comando:

PM> Install-Package Spire.PDF

Classificação de formatos de imagem

Na computação gráfica, as imagens podem ser classificadas em duas categorias principais:

  • Imagens bitmap são compostos por uma grade de pixels individuais, onde cada pixel recebe uma cor específica. Os formatos de imagem bitmap comuns incluem PNG, JPG, BMP, EMF e TIFF.
  • Gráficos vetoriais, por outro lado, representam imagens usando equações matemáticas e formas geométricas como linhas, curvas e polígonos. Formatos gráficos vetoriais comuns incluem SVG e EPS.

Atualmente, o Spire.PDF for .NET suporta os formatos PNG/JPG/BMP/EMF/TIFF/SVG. A seguir, darei os detalhes de cada conversão.

Converter PDF em PNG/JPG/BMP/EMF/TIFF em C#

Passos

  1. Crie uma instância de PdfDocument e carregue um arquivo PDF do disco usando o método LoadFromFile().
  2. Chame o método SaveAsImage(int pageIndex, PdfImageType type, int dpiX, int dpiY) para converter a página especificada em uma imagem.
  3. Por fim, salve as imagens como arquivos JPG usando o método Image.Save(string filename, ImageFormat format). Nesse caso, tomo PDF para JPG como exemplo. Você também pode alterar o formato, se desejar.

Código de amostra

  • C#
using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using System.Drawing;
    using System.Drawing.Imaging;
    
    namespace PDFtoImage
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                //Load a sample PDF file
                pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
    
                //Convert the first page to an image and set the image Dpi
                Image image = pdf.SaveAsImage(0, PdfImageType.Bitmap, 500, 500);
    
                //Save images as JPG format to a specified folder 
                image.Save("C:\\Users\\Administrator\\Desktop\\Image\\ToImage.jpg", ImageFormat.Jpeg);
    
                //Close the document
                pdf.Close();
            }
        }
    }

Converter PDF em SVG em C#

Passos

  1. Crie uma instância de PdfDocument e carregue um arquivo PDF do disco usando o método LoadFromFile().
  2. Converta a primeira página em SVG usando o método SaveToFile(string filename, int startIndex, int endIndex, FileFormat fileFormat). Você pode especificar o índice da página que deseja converter no parâmetro.

Código de amostra

  • C#
using Spire.Pdf;
    
    namespace PDFtoSVG
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                //Load a sample PDF file
                pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
    
                //Convert the first page to SVG
                pdf.SaveToFile("C:\\Users\\Administrator\\Desktop\\Image\\ToImage.svg", 0, 0, FileFormat.SVG);
    
                //Close the document
                pdf.Close();
            }
        }
    }

Converter PDF em TIFF de várias páginas em C#

Comparado com outros formatos de imagem, o TIFF permite que várias imagens ou páginas sejam armazenadas em um único arquivo. Esse recurso o torna uma escolha popular entre os usuários em alguns casos.

Nesta seção, mostrarei como converter um arquivo PDF em um arquivo TIFF de várias páginas. Para conseguir essa conversão, podemos personalizar os seguintes métodos.
  • O método SaveAsImage() suporta a conversão de cada página PDF em uma imagem e, em seguida, retorna uma matriz de imagens.
  • O método GetEncoderInfo() suporta localizar e retornar informações correspondentes do codificador de imagem com base no tipo MIME fornecido.
  • O método JoinTiffImages() é usado para mesclar várias imagens em um único arquivo TIFF. Ele funciona percorrendo cada imagem na matriz de imagens e salvando-a de acordo com os parâmetros especificados do codificador.

Passos

  1. Crie uma instância de PdfDocument e carregue um arquivo PDF do disco usando o método LoadFromFile().
  2. Chame o método SaveAsImage() para converter cada página do PDF em uma imagem e salvá-la no array de imagens.
  3. Por fim, chame o método JoinTiffImages() para mesclar as imagens TIFF convertidas em um arquivo TIFF de várias páginas.

Código de amostra

  • C#
using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using Spire.Pdf;
    namespace SavePdfAsTiff
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                // Load the PDF file
                pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
    
                // Convert PDF pages to images and save them as an image array
                Image[] images = SaveAsImage(pdf);
    
                // Merge the converted TIFF images into a multi-page TIFF file
                JoinTiffImages(images, "C:\\Users\\Administrator\\Desktop\\Image\\ToImage.tiff", EncoderValue.CompressionLZW);
            }
    
            private static Image[] SaveAsImage(PdfDocument pdf)
            {
                // Create an image array with the size equal to the number of PDF pages
                Image[] images = new Image[pdf.Pages.Count];
    
                //Iterate through each page of PDF
                for (int i = 0; i < pdf.Pages.Count; i++)
                {
                    //Convert these pages to images 
                    images[i] = pdf.SaveAsImage(i);
                }
                return images;
            }
    
            private static ImageCodecInfo GetEncoderInfo(string mimeType)
            {
                // Get all available image encoders
                ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
                for (int j = 0; j < encoders.Length; j++)
                {
                    // Find the encoder that matches the specified mime type
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                // An exception is thrown if no matching encoder is found
                throw new Exception(mimeType + " mime type not found in ImageCodecInfo");
            }
    
            public static void JoinTiffImages(Image[] images, string outFile, EncoderValue compressEncoder)
            {
                //Set the parameters of the image encoder
                Encoder enc = Encoder.SaveFlag;
                EncoderParameters ep = new EncoderParameters(2);
                ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
                ep.Param[1] = new EncoderParameter(Encoder.Compression, (long)compressEncoder);
    
                // Initialize the first image as the base for merging
                Image pages = images[0];
                int frame = 0;
    
                // Get the encoder information for TIFF format
                ImageCodecInfo info = GetEncoderInfo("image/tiff");
    
                // Iterate through each image
                foreach (Image img in images)
                {
                    if (frame == 0)
                    {
                        // If it's the first frame, set it as the current base image
                        pages = img;
    
                        // Save the first frame using the specified encoder parameters
                        pages.Save(outFile, info, ep);
                    }
                    else
                    {
                        // For intermediate frames, update the encoder parameter to indicate a new page
                        ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
    
                        // Save the intermediate frame
                        pages.SaveAdd(img, ep);
                    }
                    if (frame == images.Length - 1)
                    {
                        // If it's the last frame, flush the encoder parameters to close the file
                        ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
                        pages.SaveAdd(ep);
                    }
                    frame++;
                }
            }
        }
    }

Avaliação gratuita da biblioteca C#

Spire.PDF for .NET oferece uso gratuito para ajudar os usuários a avaliar melhor os recursos do produto sem restrições. Você pode obter um Licença temporária gratuita de 30 dias no link a seguir para converter PDF em imagem em C#.

Conclusão

Nesta postagem, você aprendeu como converter PDF em formatos de imagem populares usando C#. Spire.PDF for .NET também pode ajudá-lo com outras tarefas de processamento de PDF, como criando PDF, mesclando PDF, comparando PDF e assim por diante. Em uma palavra, esta biblioteca simplifica o processo e permite que os desenvolvedores se concentrem na construção de aplicativos poderosos que envolvem tarefas de manipulação de PDF.

Veja também