Convertir PDF a Diferentes Formatos de Imagen en C#

Resumen

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 for .NET utiliza varios enfoques para convertir PDF a imagen. En términos generales, utilizamos dos enfoques: conversión utilizando el enfoque de Dispositivo y conversión utilizando SaveOption. Esta sección te mostrará cómo convertir documentos PDF a formatos de imagen como BMP, JPEG, GIF, PNG, EMF, TIFF y SVG utilizando uno de esos enfoques.

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

Convertir PDF usando la clase DocumentDevice

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

La clase TiffDevice (basada en DocumentDevice) 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 de un archivo PDF a una sola imagen TIFF.

Convertir Páginas PDF a Una Imagen TIFF

Aspose.PDF for .NET explica cómo convertir todas las páginas en un archivo PDF a una sola imagen TIFF:

Pasos: Convertir PDF a TIFF en C#

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

El siguiente fragmento de código muestra cómo convertir todas las páginas PDF a una sola imagen TIFF.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoTIFF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoTIFF.pdf"))
    {
        // Create Resolution object
        var resolution = new Aspose.Pdf.Devices.Resolution(300);

        // Create TiffSettings object
        var tiffSettings = new Aspose.Pdf.Devices.TiffSettings
        {
            Compression = Aspose.Pdf.Devices.CompressionType.None,
            Depth = Aspose.Pdf.Devices.ColorDepth.Default,
            Shape = Aspose.Pdf.Devices.ShapeType.Landscape,
            SkipBlankPages = false
        };

        // Create TIFF device
        var tiffDevice = new Aspose.Pdf.Devices.TiffDevice(resolution, tiffSettings);

        // Convert a particular page and save the image to stream
        tiffDevice.Process(document, dataDir + "PDFtoTIFF_out.tif");
    }
}

Convertir Una Página a Imagen TIFF

Aspose.PDF for .NET permite convertir una página particular en un archivo PDF a una 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 Únicas o Particulares de PDF a TIFF en C#

  1. Crea un objeto de la clase Document.
  2. Crea objetos TiffSettings y TiffDevice.
  3. Llama al método sobrecargado TiffDevice.Process() con los parámetros fromPage y toPage para convertir las páginas del documento PDF a TIFF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoTiffSinglePage()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoTiffSinglePage.pdf"))
    {
        // Create Resolution object
        var resolution = new Aspose.Pdf.Devices.Resolution(300);

        // Create TiffSettings object
        var tiffSettings = new Aspose.Pdf.Devices.TiffSettings
        {
            Compression = Aspose.Pdf.Devices.CompressionType.None,
            Depth = Aspose.Pdf.Devices.ColorDepth.Default,
            Shape = Aspose.Pdf.Devices.ShapeType.Landscape,
        };

        // Create TIFF device
        var tiffDevice = new Aspose.Pdf.Devices.TiffDevice(resolution, tiffSettings);

        // Convert a particular page and save the image to stream
        tiffDevice.Process(document, 1, 1, dataDir + "PDFtoTiffSinglePage_out.tif");
    }
}

Usar el algoritmo de Bradley durante la conversión

Aspose.PDF for .NET ha estado apoyando la función de convertir PDF a TIF utilizando 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 utilizando Otsu, por lo que también les gustaría usar Bradley.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoTiffBradleyBinarization()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoTiffBradleyBinarization.pdf"))
    {
        string outputImageFile = dataDir + "PDFtoTiffBradleyBinarization_out.tif";
        string outputBinImageFile = dataDir + "PDFtoTiffBradleyBinarization-bin_out.tif";

        // Create Resolution object
        var resolution = new Aspose.Pdf.Devices.Resolution(300);

        // Create TiffSettings object
        var tiffSettings = new Aspose.Pdf.Devices.TiffSettings
        {
            Compression = Aspose.Pdf.Devices.CompressionType.LZW,
            Depth = Aspose.Pdf.Devices.ColorDepth.Format1bpp
        };

        // Create TIFF device
        var tiffDevice = new Aspose.Pdf.Devices.TiffDevice(resolution, tiffSettings);

        // Convert a particular page and save the image to stream
        tiffDevice.Process(document, outputImageFile);

        // Binarize the image using Bradley method
        using (var inStream = new FileStream(outputImageFile, FileMode.Open))
        {
            using (var 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 permite convertir páginas PDF a imágenes BMP.
  • La clase EmfDevice permite convertir páginas PDF a imágenes EMF.
  • La clase JpegDevice permite convertir páginas PDF a imágenes JPEG.
  • La clase PngDevice permite convertir páginas PDF a imágenes PNG.
  • La clase GifDevice permite convertir páginas PDF a imágenes GIF.

Veamos cómo convertir una página PDF a una imagen.

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

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

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

  1. Carga el archivo PDF utilizando la clase Document.
  2. Crea una instancia de la 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).
  3. Llama al método ImageDevice.Process() para realizar la conversión de PDF a Imagen.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFusingImageDevice()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Create Resolution object            
    var resolution = new Aspose.Pdf.Devices.Resolution(300);
    var bmpDevice = new Aspose.Pdf.Devices.BmpDevice(resolution);
    var jpegDevice = new Aspose.Pdf.Devices.JpegDevice(resolution);
    var gifDevice = new Aspose.Pdf.Devices.GifDevice(resolution);
    var pngDevice = new Aspose.Pdf.Devices.PngDevice(resolution);
    var emfDevice = new Aspose.Pdf.Devices.EmfDevice(resolution);

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "ConvertAllPagesToBmp.pdf"))
    {
        ConvertPDFtoImage(bmpDevice, "bmp", document, dataDir);
        ConvertPDFtoImage(jpegDevice, "jpeg", document, dataDir);
        ConvertPDFtoImage(gifDevice, "gif", document, dataDir);
        ConvertPDFtoImage(pngDevice, "png", document, dataDir);
        ConvertPDFtoImage(emfDevice, "emf", document, dataDir);
    }
}

private static void ConvertPDFtoImage(ImageDevice imageDevice,
        string ext, Document document, var dataDir)
{
    for (int pageCount = 1; pageCount <= document.Pages.Count; pageCount++)
    {
        using (FileStream imageStream =
            new FileStream($"{dataDir}image{pageCount}_out.{ext}",
            FileMode.Create))
        {
            // Convert a particular page and save the image to stream
            imageDevice.Process(document.Pages[pageCount], imageStream);
        }
    }
}

Convertir PDF usando la clase SaveOptions

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

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 estado en desarrollo 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 buscadas, indexadas, guionizadas y, si es necesario, comprimidas. Como archivos XML, las imágenes SVG pueden ser creadas y editadas con cualquier editor de texto, pero a menudo es más conveniente crearlas con programas de dibujo como Inkscape.

Aspose.PDF for .NET admite la función de convertir imágenes SVG a formato PDF y también ofrece la capacidad de convertir archivos PDF a formato SVG. Para lograr este requisito, se ha introducido la clase SvgSaveOptions en el espacio de nombres Aspose.PDF. Instancia un objeto de SvgSaveOptions y pásalo como segundo argumento al método Document.Save(..) para convertir el documento PDF a 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. Crea un objeto de la clase Document.
  2. Crea un objeto SvgSaveOptions con la configuración necesaria.
  3. Llama al método Document.Save() y pásale el objeto SvgSaveOptions para convertir el documento PDF a SVG.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoSVG()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoSVG.pdf"))
    {
        // Instantiate an object of SvgSaveOptions
        var saveOptions = new Aspose.Pdf.SvgSaveOptions
        {
            // Do not compress SVG image to Zip archive
            CompressOutputToZipArchive = false,
            TreatTargetFileNameAsDirectory = true                
        };

        // Save SVG file
        document.Save(dataDir + "PDFToSVG_out.svg", saveOptions);
    }
}