Solución C# para conversión de PDF a imagen

2024-02-01 08:56:40

C# Solution for PDF to Image Conversion

Los archivos PDF se utilizan ampliamente en el trabajo diario debido a su diseño estable, fácil transferencia y alta legibilidad. En algunos casos, es posible que necesites convertir PDF a imágenes. Guardar contenido como imágenes no solo acelera la carga, sino que también reduce el riesgo de edición accidental. Además, si desea incrustar archivos o páginas PDF en otros documentos o páginas web, convertirlos a formatos de imagen específicos es una excelente opción. Este pasaje cubre los detalles de usando C# para convertir PDF a imagen. Y puede convertir PDF sin esfuerzo a los formatos de imagen deseados con código C# y al mismo tiempo preservar la fidelidad visual del contenido original.

Biblioteca C# para conversión de PDF

Este artículo demuestra cómo convertir PDF a imagen usando Spire.PDF for .NET, que es una biblioteca confiable de procesamiento de PDF que le permite manipular y convertir archivos PDF dentro de aplicaciones .NET. Con él, incluso puedes ajustar las propiedades de la imagen, como su tamaño y píxeles, durante la conversión de PDF a imagen.
Además de imágenes, esta biblioteca también le permite convertir PDF a Word, PDF a HTML, PDF a XPS, etc.

Puede descargarlo y hacer referencia al archivo DLL manualmente o instalarlo a través de NuGet usando el siguiente comando:

PM> Install-Package Spire.PDF

Clasificación de formatos de imagen

En gráficos por computadora, las imágenes se pueden clasificar en dos categorías principales:

  • Imágenes de mapa de bits se componen de una cuadrícula de píxeles individuales, donde a cada píxel se le asigna un color específico. Los formatos de imágenes de mapa de bits comunes incluyen PNG, JPG, BMP, EMF y TIFF.
  • gráficos vectoriales, por otro lado, representar imágenes utilizando ecuaciones matemáticas y formas geométricas como líneas, curvas y polígonos. Formatos de gráficos vectoriales comunes Incluye SVG y EPS.

Actualmente, Spire.PDF for .NET admite los formatos PNG/JPG/BMP/EMF/TIFF/SVG . A continuación, te daré los detalles de cada conversión.

Convertir PDF a PNG/JPG/BMP/EMF/TIFF en C#

Pasos

  1. Cree una instancia de PdfDocument y cargue un archivo PDF desde el disco utilizando el método LoadFromFile().
  2. Llame al método SaveAsImage(int pageIndex, PdfImageType type, int dpiX, int dpiY) para convertir la página especificada en una imagen.
  3. Finalmente, guarde las imágenes como archivos JPG usando el método Image.Save (nombre de archivo de cadena, formato ImageFormat). En este caso, tomo PDF a JPG como ejemplo. También puedes cambiar el formato si lo deseas.

Código de muestra

  • 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();
            }
        }
    }

Convertir PDF a SVG en C#

Pasos

  1. Cree una instancia de PdfDocument y cargue un archivo PDF desde el disco utilizando el método LoadFromFile().
  2. Convierta la primera página a SVG usando el método SaveToFile(string filename, int startIndex, int endIndex, FileFormat fileFormat). Puede especificar el índice de página que desea convertir en el parámetro.

Código de muestra

  • 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();
            }
        }
    }

Convierta PDF a TIFF de varias páginas en C#

En comparación con otros formatos de imagen, TIFF permite almacenar varias imágenes o páginas en un solo archivo. Esta característica la convierte en una opción popular entre los usuarios en algunos casos.

En esta sección, le mostraré cómo convertir un archivo PDF en un archivo TIFF de varias páginas. Para lograr esta conversión, podemos personalizar los siguientes métodos.
  • El método SaveAsImage() admite la conversión de cada página PDF en una imagen y luego devuelve una serie de imágenes.
  • El método GetEncoderInfo() admite buscar y devolver información del codificador de imágenes coincidente según el tipo MIME dado.
  • El método JoinTiffImages() se utiliza para fusionar varias imágenes en un solo archivo TIFF. Funciona recorriendo cada imagen en la matriz de imágenes y guardándola de acuerdo con los parámetros del codificador especificados.

Pasos

  1. Cree una instancia de PdfDocument y cargue un archivo PDF desde el disco utilizando el método LoadFromFile().
  2. Llame al método SaveAsImage() para convertir cada página del PDF en una imagen y guardarla en la matriz de imágenes.
  3. Finalmente, llame al método JoinTiffImages() para fusionar las imágenes TIFF convertidas en un archivo TIFF de varias páginas.

Código de muestra

  • 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++;
                }
            }
        }
    }

Prueba gratuita de la biblioteca C#

Spire.PDF for .NET proporciona uso gratuito para ayudar a los usuarios a evaluar mejor las características del producto sin restricciones. Puedes obtener un Licencia temporal gratuita de 30 días desde el siguiente enlace para convertir PDF a imagen en C#.

Conclusión

En esta publicación, aprendió cómo convertir PDF a formatos de imagen populares usando C#. Spire.PDF for .NET también puede ayudarle con otras tareas de procesamiento de PDF, como crear PDF, fusionar PDF, comparar PDF, etc. En una palabra, esta biblioteca simplifica el proceso y permite a los desarrolladores centrarse en crear aplicaciones potentes que impliquen tareas de manipulación de PDF.

Ver también