Necesito un programa/sdk/software para convertir archivos pdf a imágenes. Necesito las siguientes características en ese convertidor:
Compruebe si el archivo pdf está en color o en blanco y negro. Si el archivo pdf es BW, una opción para convertir el archivo pdf a imágenes .tiff. Si el archivo pdf está coloreado, una opción para convertir el archivo pdf a imágenes .png. Esta conversión debe ser rápida y, si es posible, debe tener la opción de subprocesos múltiples. Puede ser una herramienta gratuita (código abierto) o una solución paga que puedo integrar con Visual Studio 2010 C#. Lo que significa que una interfaz de línea de comandos funcionaría.
Para comprobar si el PDF está en color o en blanco y negro, puede utilizar Ghostscript (gratuito, de código abierto, multiplataforma):
Línea de comando de ejemplo:
gs -o - -sDEVICE=inkcov /path/to/your.pdf
Salida de ejemplo:
Page 1 0.00000 0.00000 0.00000 0.02230 CMYK OK Page 2 0.02360 0.02360 0.02360 0.02360 CMYK OK Page 3 0.02525 0.02525 0.02525 0.00000 CMYK OK Page 4 0.00000 0.00000 0.00000 0.01982 CMYK OK
Puede ver aquí que la página 4 no usa color, mientras que las páginas 1+2+3 sí. Este caso es particularmente 'desagradable' para las personas que quieren ahorrar en tinta de color: debido a que todos los valores C, M, Y (y K) son exactamente iguales para cada una de las páginas 1-3, posiblemente podrían parecerle al ser humano ojo, no como páginas en color, sino como escala de grises ("rica") de todos modos (si cada píxel se mezcla con estos valores de color).
Otras ideas: ¿Cómo sé si las páginas de un PDF son en color o en blanco y negro?
Para convertir un PDF a TIFF, puede usar GhostScript (gratuito, de código abierto, multiplataforma):
en Windows:
gswin32c -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf
en *nix:
gs -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf
Otras ideas: La mejor manera de convertir archivos pdf a archivos tiff
Para convertir un PDF a PNG, puede usar ImageMagick (gratis, de código abierto, multiplataforma):
convert foo.pdf pages-%03d.png
Si está interesado en un SDK comercial para este tipo de conversión y manipulación de imágenes, puede intentar usar LEADTOOLS Imaging SDK . Tenga en cuenta que soy un empleado de esta herramienta
Puede usar nuestro ImageColorTypeCommand para verificar si la imagen es en blanco y negro, en escala de grises o en color. Puede implementar esto en C# usando lo siguiente:
using (RasterCodecs codecs = new RasterCodecs())
{
RasterImage image = codecs.Load(@"path to file");
ImageColorTypeCommand command = new ImageColorTypeCommand();
command.Run(image);
Console.WriteLine("Color Type = " + command.ColorType.ToString() + "\n" + "Confidence = " + command.Confidence.ToString());
}
Una vez que sepa qué es ImageColorType, simplemente puede guardar el archivo especificando el formato de salida de esta manera:
if(command.ColorType == ImageColorType.BlackAndWhite)
{
codecs.Save(image, @"Save path for output", RasterImageFormat.Tif, 0);
}
else
{
codecs.Save(image, @"Save path for output", RasterImageFormat.Png, 0);
}
Puede encontrar un poco más de información sobre las clases utilizadas en el código aquí: