Esta página puede contener texto traducido automáticamente.

Convertir PDF a imagen en C# y VB.NET

Hay casos en los que necesita convertir archivos PDF a imágenes. Por ejemplo, es posible que necesites crear imágenes en miniatura a partir de archivos PDF o realizar un reconocimiento óptico de caracteres (OCR) en algunos documentos PDF.

Puede utilizar la biblioteca Docotic.Pdf para convertir documentos PDF en imágenes en proyectos C# y VB.NET. La biblioteca está 100% gestionada sin dependencias externas. No utiliza System.Drawing.dll ni GDI+ para la rasterización de PDF. Por lo tanto, obtendrá resultados consistentes en Windows, Linux, macOS, iOS y Android.

Puede descargar los binarios de la biblioteca o utilizar su paquete NuGet. Para probar Docotic.Pdf sin restricciones del modo de evaluación, puede obtener la clave de licencia gratuita por tiempo limitado utilizando el formulario aquí.

Docotic.Pdf ofrece muchas opciones para la conversión de PDF a imagen. Y también puede renderizar e imprimir documentos PDF. Veamos cómo puedes convertir PDF a imágenes usando la biblioteca Docotic.Pdf.

PDF a imagen en C# y VB.NET

Guarde la página PDF como imagen PNG, JPG o TIFF

La biblioteca Docotic.Pdf le permite convertir páginas PDF a imágenes PNG, JPEG o TIFF. Puede escribir las imágenes resultantes en una secuencia o en un archivo. Este fragmento de C# guarda páginas PDF en imágenes PNG con un fondo blanco y una resolución de 300 x 300 ppp:

using BitMiracle.Docotic.Pdf;

using (var pdf = new PdfDocument("your_document.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.Create();
    options.BackgroundColor = new PdfRgbColor(255, 255, 255);
    options.HorizontalResolution = 300;
    options.VerticalResolution = 300;

    for (int i = 0; i < pdf.PageCount; ++i)
        pdf.Pages[i].Save($"page_{i}.png", options);
}

Puede indicarle a la biblioteca que produzca imágenes JPEG o TIFF en lugar de PNG usando la propiedad PdfDrawOptions.Compression. El siguiente fragmento muestra cómo pasar a crear imágenes JPEG:

PdfDrawOptions options = ..;
options.Compression = ImageCompressionOptions.CreateJpeg();

Hay ejemplos relacionados de C# y VB.NET disponibles en GitHub.

Documento PDF a TIFF de varias páginas en .NET

Puede guardar el documento completo en una imagen TIFF de varias páginas utilizando el método PdfDocument.SaveAsTiff. Aquí hay un ejemplo de C# para la conversión de PDF a TIFF:

using (var pdf = new PdfDocument("document.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.Create();
    options.BackgroundColor = new PdfRgbColor(255, 255, 255);

    pdf.SaveAsTiff("result.tiff", options);
}

Descargue y pruebe el código de muestra Guardar PDF como TIFF de varias páginas de GitHub. Allí están disponibles las versiones C# y VB.NET.

Crear miniaturas desde PDF

Con la ayuda de la biblioteca Docotic.Pdf, puede generar miniaturas a partir de páginas PDF. Este ejemplo de C# crea una miniatura de 200 x 200 píxeles a partir de la primera página del PDF proporcionado y escribe la miniatura en un flujo de memoria:

using (var pdf = new PdfDocument("document.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.CreateFitSize(new PdfSize(200, 200), false);
    options.BackgroundColor = new PdfGrayColor(100);
    
    using (var stream = new MemoryStream())
    {
        pdf.Pages[0].Save(stream, options);
        ..
    }
}

También puede utilizar el método PdfDrawOptions.CreateFitWidth o PdfDrawOptions.CreateFitHeight para producir imágenes en miniatura de un ancho o alto especificado.

Convierta PDF a imágenes bitonales o en escala de grises en .NET

La biblioteca puede convertir documentos PDF en imágenes TIFF bitonales (blanco y negro). Este ejemplo muestra cómo producir una imagen TIFF bitonal a partir de un documento PDF en C#:

using (var pdf = new PdfDocument("colored.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.Create();
    options.BackgroundColor = new PdfRgbColor(255, 255, 255);
    options.Compression = ImageCompressionOptions.CreateTiff().SetBitonal();

    pdf.SaveAsTiff("bitonal.tiff", options);
}

También puede especificar un nivel de umbral cuando utiliza el método TiffImageCompressionOptions.SetBitonalThreshold. El nivel de umbral define cómo transformar colores en escala de grises, RGB o CMYK a blanco y negro.

Docotic.Pdf también admite la conversión de imágenes de PDF a PNG, JPG o TIFF en escala de grises. Simplemente use uno de los PngImageCompressionOptions.SetGrayscale, JpegImageCompressionOptions.SetGrayscale, TiffImageCompressionOptions.SetGrayscale como en el siguiente fragmento:

PdfDrawOptions options = ..;
options.Compression = ImageCompressionOptions.CreatePng().SetGrayscale();

Ampliar PDF

El método PdfDrawOptions.CreateZoom le permite obtener una imagen de una página PDF con un nivel de zoom específico. Este ejemplo de C# convierte una página PDF en una imagen con un nivel de zoom del 400%:

using (var pdf = new PdfDocument(@"document.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.CreateZoom(400);
    pdf.Pages[0].Save("zoomed.png", options);
}

PDF parcial a representación de imágenes

Es posible que necesites convertir sólo una parte de una página PDF a imagen. Por ejemplo, para dividir una página PDF grande en mosaicos. O para recortar algún contenido no deseado.

Este código C# guarda una imagen de un área de 256x256 puntos en la esquina superior izquierda de una página PDF:

using (var pdf = new PdfDocument("large.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.Create();
    options.BackgroundColor = new PdfRgbColor(255, 255, 255);

    PdfPage page = pdf.Pages[0];
    PdfBox cropBoxBefore = page.CropBox;

    page.CropBox = new PdfBox(0, cropBoxBefore.Height - 256, 256, cropBoxBefore.Height);
    page.Save("part.png", options);

    page.CropBox = cropBoxBefore;
}

PDF en mosaico a representación de imágenes

Docotic.Pdf proporciona soporte integrado para la representación en mosaico de PDF a TIFF. Este método es útil cuando necesita procesar páginas PDF grandes utilizando una cantidad fija de memoria.

Por ejemplo, su documento PDF contiene una página que tiene un tamaño de 10000x10000 puntos. La conversión regular de esta página a una imagen RGB con una resolución de 300 DPI requiere más de 1 Gb (= 10000 * 10000 * 3 * 300 / 72,0 bytes) de memoria para los datos intermedios de la imagen RGB sin comprimir. Al utilizar la representación en mosaico con mosaicos de 1024x1024, puede limitar el consumo de memoria para los datos de imagen RGB sin comprimir a 12 Mb (= 1024 * 1024 * 3 * 300 / 72,0 bytes).

Tenga en cuenta que la conversión de PDF en mosaico a imágenes es más lenta que la conversión normal. Para cada mosaico, la biblioteca necesita procesar todas las operaciones de la página PDF, incluso si algunas de ellas no afectan el mosaico actual.

Este ejemplo de C# muestra cómo convertir PDF a imagen usando mosaicos de 512x512:

using (var pdf = new PdfDocument("large.pdf"))
{
    PdfDrawOptions options = PdfDrawOptions.Create();
    options.Compression = ImageCompressionOptions.CreateTiff().SetTileSize(512, 512);
    options.BackgroundColor = new PdfGrayColor(100);
    options.HorizontalResolution = 300;
    options.VerticalResolution = 300;

    pdf.Pages[0].Save("tiled.tiff", options);
}

Conclusión

Biblioteca Docotic.Pdf proporciona diferentes opciones para la conversión de PDF a imagen en .NET. Puede convertir páginas PDF a imágenes de tamaño completo o en miniatura en formatos PNG, TIFF y JPEG. Y puede guardar documentos PDF como archivos TIFF de varias páginas. La biblioteca también puede producir imágenes bitonales y en escala de grises.

Descargue y pruebe muestras de PDF a imagen de GitHub.

Contáctenos si tiene preguntas sobre la conversión de PDF a imagen.