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 PDF a imágenes. Por ejemplo, puede que necesite crear imágenes en miniatura a partir de PDF o realizar reconocimiento óptico de caracteres (OCR) en algunos documentos PDF.

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

La biblioteca está disponible en NuGet y en nuestro sitio. Obtenga la biblioteca y una clave de licencia gratuita con tiempo limitado en la página Descargar biblioteca PDF para C# .NET.

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

PDF a imagen en C# y VB.NET

Guardar página de PDF como imagen PNG, JPG o TIFF

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

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 indicar a la biblioteca que produzca imágenes JPEG o TIFF en lugar de PNG mediante la propiedad PdfDrawOptions.Compression. El siguiente fragmento muestra cómo cambiar a la generación de imágenes JPEG:

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

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

Documento PDF a TIFF multipágina en .NET

Puede guardar el documento completo como una imagen TIFF multipágina usando el método PdfDocument.SaveAsTiff. Aquí hay un ejemplo en C# de 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 ejemplo Guardar PDF como TIFF multipágina de GitHub. Allí están disponibles las versiones para C# y VB.NET.

Crear miniaturas a partir de PDF

Con la ayuda de la biblioteca Docotic.Pdf, puede generar miniaturas a partir de páginas de PDF. Este ejemplo de C# crea una miniatura de 200x200 píxeles a partir de la primera página del PDF especificado 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 usar los métodos PdfDrawOptions.CreateFitWidth o PdfDrawOptions.CreateFitHeight para producir imágenes en miniatura con un ancho o una altura especificados.

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

La biblioteca puede convertir documentos PDF a imágenes TIFF bitonales (en 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 al usar 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 PDF a imágenes PNG, JPG o TIFF en escala de grises. Solo use uno de los métodos PngImageCompressionOptions.SetGrayscale, JpegImageCompressionOptions.SetGrayscale, TiffImageCompressionOptions.SetGrayscale como en el siguiente fragmento:

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

Ampliar PDF

El método PdfDrawOptions.CreateZoom permite obtener una imagen de una página de PDF con un nivel de zoom especificado. 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);

Renderizado parcial de PDF a imagen

Es posible que necesite convertir solo una parte de una página PDF a imagen. Por ejemplo, para dividir una página PDF grande en teselas. O para recortar contenido no deseado.

Este código de 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;

Renderizado en teselas de PDF a imagen

Docotic.Pdf ofrece compatibilidad integrada con el renderizado en teselas de PDF a TIFF. Este método es útil cuando necesita procesar páginas PDF grandes usando una cantidad fija de memoria.

Por ejemplo, su documento PDF contiene una página con un tamaño de 10000x10000 puntos. La conversión normal 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. Usando renderizado en teselas con teselas 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 en teselas de PDF a imagen es más lenta que la conversión normal. Para cada tesela, la biblioteca necesita procesar todas las operaciones de la página PDF, incluso si algunas de ellas no afectan a la tesela actual.

Este ejemplo de C# muestra cómo convertir PDF a imagen usando teselas 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

la biblioteca Docotic.Pdf ofrece 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. También puede guardar documentos PDF como archivos TIFF multipágina. La biblioteca también puede producir imágenes bitonales y en escala de grises.

Descargue y pruebe los ejemplos PDF a imagen de GitHub.

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