Convertir PDF a Diferentes Formatos de Imagen en C#

Visión General

Este artículo explica cómo convertir PDF a diferentes formatos de imagen usando C#. Cubre los siguientes temas.

Formato de Imagen: TIFF

Formato de Imagen: BMP

Formato de Imagen: EMF

Formato de Imagen: JPG

Formato de Imagen: PNG

Formato de Imagen: GIF

Formato de Imagen: SVG

C# Convertir PDF a Imagen

El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.

Aspose.PDF para .NET utiliza varios enfoques para convertir un PDF a imagen. Aspose.PDF para .NET utiliza varios enfoques para convertir PDF a imagen.

Hay varias clases en la biblioteca que permiten usar un dispositivo virtual para transformar imágenes. DocumentDevice está orientado para la conversión de todo el documento, pero ImageDevice - para una página en particular.

Convertir PDF usando la clase DocumentDevice

Aspose.PDF para .NET hace posible convertir páginas PDF a imágenes TIFF.

La clase TiffDevice (basada en DocumentDevice) te permite convertir páginas PDF a imágenes TIFF. Esta clase proporciona un método llamado Process que te permite convertir todas las páginas en un archivo PDF a una sola imagen TIFF.

Convertir páginas de PDF a una imagen TIFF

Aspose.PDF para .NET explica cómo convertir todas las páginas de un archivo PDF en una única imagen TIFF:

Pasos: Convertir PDF a TIFF en C#

  1. Crear un objeto de la clase Document.
  2. Crear objetos TiffSettings y TiffDevice.
  3. Llamar al método TiffDevice.Process() para convertir el documento PDF a TIFF.
  4. Para establecer las propiedades del archivo de salida, usar la clase TiffSettings.

El siguiente fragmento de código muestra cómo convertir todas las páginas del PDF en una única imagen TIFF.

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

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

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

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

    // Convertir una página en particular y guardar la imagen en stream
    tiffDevice.Process(pdfDocument, _dataDir + "AllPagesToTIFF_out.tif");
}

Convertir una página a imagen TIFF

Aspose.PDF para .NET permite convertir una página específica de un archivo PDF a imagen TIFF, utiliza una versión sobrecargada del método Process(..) que toma un número de página como argumento para la conversión. El siguiente fragmento de código muestra cómo convertir la primera página de un PDF a formato TIFF.

Pasos: Convertir Páginas Individuales o Específicas de PDF a TIFF en C#

  1. Crear un objeto de la clase Document.
  2. Crear objetos TiffSettings y TiffDevice
  3. Llamar al método sobrecargado TiffDevice.Process() con los parámetros fromPage y toPage para convertir las páginas del documento PDF a TIFF.
public static void ConvertPDFtoTiffSinglePage()
{
    // Abrir documento
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

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

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

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

    // Convertir una página específica y guardar la imagen en stream
    tiffDevice.Process(pdfDocument, 1, 1, _dataDir + "PageToTIFF_out.tif");
}

Utiliza el algoritmo de Bradley durante la conversión

Aspose.PDF para .NET ha estado soportando la función de convertir PDF a TIF usando compresión LZW y luego con el uso de AForge, se puede aplicar la Binarización. Sin embargo, uno de los clientes solicitó que para algunas imágenes, necesitan obtener el Umbral usando Otsu, por lo que también les gustaría 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";

    // Crear objeto Resolution
    Resolution resolution = new Resolution(300);
    // Crear objeto TiffSettings
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.LZW,
        Depth = Aspose.Pdf.Devices.ColorDepth.Format1bpp
    };
    // Crear dispositivo TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
    // Convertir una página en particular y guardar la imagen en 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);
        }
    }
} 

Convertir PDF usando la clase ImageDevice

ImageDevice es el ancestro de BmpDevice, JpegDevice, GifDevice, PngDevice y EmfDevice.

  • La clase BmpDevice te permite convertir páginas PDF a imágenes BMP.
  • La clase EmfDevice te permite convertir páginas PDF a imágenes EMF.
  • La clase JpegDevice te permite convertir páginas PDF a imágenes JPEG.
  • La clase PngDevice te permite convertir páginas PDF a imágenes PNG.
  • La clase GifDevice te permite convertir páginas PDF a imágenes GIF.

Vamos a ver cómo convertir una página de PDF a una imagen. Vamos a ver cómo convertir una página de PDF en una imagen.

La clase BmpDevice proporciona un método llamado Process que permite convertir una página específica del archivo PDF al formato de imagen BMP. Las otras clases tienen el mismo método. Por lo tanto, si necesitamos convertir una página de PDF a una imagen, simplemente instanciamos la clase requerida.

Los siguientes pasos y fragmento de código en C# muestran esta posibilidad

Pasos: PDF a Imagen (BMP, EMF, JPG, PNG, GIF) en C#

  1. Crea una instancia de una subclase de ImageDevice, es decir:
    • BmpDevice (para convertir PDF a BMP)
    • EmfDevice (para convertir PDF a Emf)
    • JpegDevice (para convertir PDF a JPG)
    • PngDevice (para convertir PDF a PNG)
    • GifDevice (para convertir PDF a GIF)
  2. Llama al método ImageDevice.Process() para realizar la conversión de PDF a imagen.
public static class ExampleConvertPdfToImage
{
     private static readonly string _dataDir = @"C:\Samples\";
    // BMP, JPEG, GIF, PNG, EMF
    public static void ConvertPDFusingImageDevice()
    {
        // Crear 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))
        {
            // Convertir una página en particular y guardar la imagen en el stream
            imageDevice.Process(pdfDocument.Pages[pageCount], imageStream);

            // Cerrar stream
            imageStream.Close();
        }
    }
}

Convertir PDF utilizando la clase SaveOptions

Esta parte del artículo te muestra cómo convertir PDF a SVG usando C# y la clase SaveOptions.

Aspose.PDF para .NET te presenta la aplicación gratuita en línea “PDF a SVG”, donde puedes investigar la funcionalidad y calidad con la que trabaja.

Conversión de Aspose.PDF de PDF a SVG con aplicación gratuita Conversión de Aspose.PDF de PDF a SVG con aplicación gratuita

Gráficos Vectoriales Escalables (SVG) es una familia de especificaciones de un formato de archivo basado en XML para gráficos vectoriales bidimensionales, tanto estáticos como dinámicos (interactivos o animados). La especificación SVG es un estándar abierto que ha sido desarrollado por el Consorcio World Wide Web (W3C) desde 1999.

Las imágenes SVG y sus comportamientos se definen en archivos de texto XML. Esto significa que pueden ser buscados, indexados, scriptados y, si es necesario, comprimidos. Como archivos XML, las imágenes SVG pueden ser creadas y editadas con cualquier editor de texto, aunque a menudo es más conveniente crearlas con programas de dibujo como Inkscape.

Aspose.PDF para .NET soporta la característica de convertir imágenes SVG a formato PDF y también ofrece la capacidad de convertir archivos PDF a formato SVG. Aspose.PDF para .NET soporta la funcionalidad de convertir imágenes SVG a formato PDF y también ofrece la capacidad de convertir archivos PDF a formato SVG.

El siguiente fragmento de código muestra los pasos para convertir un archivo PDF a formato SVG con .NET.

Pasos: Convertir PDF a SVG en C#

  1. Crear un objeto de la clase Document.
  2. Crear un objeto SvgSaveOptions con las configuraciones necesarias.
  3. Llamar al método Document.Save() y pasarle el objeto SvgSaveOptions para convertir el documento PDF a SVG.
public static void ConvertPDFtoSVG()
{
    // Cargar documento PDF
    Document document = new Document(System.IO.Path.Combine(_dataDir, "input.pdf"));
    // Instanciar un objeto de SvgSaveOptions
    SvgSaveOptions saveOptions = new SvgSaveOptions
    {
        // No comprimir la imagen SVG en archivo Zip
        CompressOutputToZipArchive = false,
        TreatTargetFileNameAsDirectory = true                
    };
            
    // Guardar la salida en archivos SVG
    document.Save(System.IO.Path.Combine(_dataDir, "PDFToSVG_out.svg"), saveOptions);
}