2011-01-14 38 views
17

Necesito convertir un archivo PDF a imágenes. Utilicé para fines de prueba "Total PDF Converter", que ofrece una línea de comandos, pero es shareware y necesito encontrar una alternativa gratuita.Convertir PDF a JPG o PNG usando C# o la línea de comandos

¿Alguien conoce una herramienta o tal vez incluso una biblioteca gratuita de C#?

Respuesta

16

El convert herramienta (o magicksince version 7) desde el haz ImageMagick puede hacer esto (y mucho más).

En su forma más simple, es sólo

convert myfile.pdf myfile.png 

o

magick myfile.pdf myfile.png 
+1

Para ampliar esta respuesta, se usaría el http://www.csharp-station.com/HowTo/ProcessStart.aspx –

+1

He tratado ImageMagick y funciona muy bien en la conversión de imágenes. Para trabajar con pdf necesitarás instalar GhostScript también. http://sourceforge.net/projects/ghostscript/ –

+0

Intenté esto pero por alguna razón solo obtengo una página en blanco con una línea negra en el centro y texto al azar en el costado ... – Martin

2

Es posible que desee comprobar esta solución libre

http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API

Es convertir fácilmente PDF a imágenes (solo archivo o varios archivos) es de código abierto, y el uso de Ghostscript (descarga gratuita)

ejemplo de su uso:

converter = new PDFConverter(); 
converter.JPEGQuality = 90; 
converter.OutputFormat = "jpg"; 
string output = "output.jpg"; 
converter.Convert("input.pdf", output); 
5

Questio n es bastante viejo, pero recientemente encontré esta solución que funcionó para mí: https://github.com/jhabjan/Ghostscript.NET. También está disponible como descarga nuget.

Aquí es el código de ejemplo para convertir todas las páginas PDF en imágenes PNG: herramienta de línea de

private static void Test() 
    { 
     var localGhostscriptDll = Path.Combine(Environment.CurrentDirectory, "gsdll64.dll"); 
     var localDllInfo = new GhostscriptVersionInfo(localGhostscriptDll); 

     int desired_x_dpi = 96; 
     int desired_y_dpi = 96; 

     string inputPdfPath = "test.pdf"; 

     string outputPath = Environment.CurrentDirectory; 

     GhostscriptRasterizer _rasterizer = new GhostscriptRasterizer(); 

     _rasterizer.Open(inputPdfPath, localDllInfo, false); 

     for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++) 
     { 
      string pageFilePath = Path.Combine(outputPath, "Page-" + pageNumber.ToString() + ".png"); 

      Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber); 
      img.Save(pageFilePath, ImageFormat.Png); 
     } 

     _rasterizer.Close(); 
    } 
+1

Advertencia: no olvide llamar al _rasterizer.Close() al final. (Es importante y evite tener excepciones en caso de que utilice este código en un ciclo, por ejemplo). – bau

+0

¿existe una alternativa a 'GetPage' que obtenga el documento completo que usted conoce? – rogerdeuce

0

2JPEG comando puede hacerlo, como:

2jpeg.exe -src "C: \ En \ *. pdf" -dst 'C: \ Out'

+0

Lo sentimos, pero no funciona con muchos errores. – Turtle

+0

Hi Turtle, ¿Podría decirme más información sobre los errores de 2JPEG que tiene? –

7

Ésta es una cuestión de edad, sino como una respuesta GhostScript ha desaparecido y no hay ningún indicio de varias páginas PDF de exportación sin embargo creo que la adición otra variante está bien. Descripción

gs -dBATCH -dNOPAUSE -sDEVICE=pnggray -r300 -dUseCropBox -sOutputFile=item-%03d.png examples.pdf 

Opciones:

  • dBatch y dNOPAUSE sólo decirle gs para funcionar en modo batch, lo que significa más o menos no va a hacer cualquier pregunta. Esos parámetros también son importantes si desea ejecutar el comando en un script bash.
  • sDEVICE le dice a gs qué formato de salida debe producir. pnggray es para en escala de grises, png16m para color RGB de 24 bits. Si insiste en crear Jpegs use -sDEVICE=jpeg para producir archivos JPEG a color.Utilice el parámetro -dJPEGQ=N (N es un entero de 0 a 100, valor predeterminado 75) para controlar la calidad de Jpgeg.
  • -r300 establece la resolución de escaneo a 300 ppp. Si prefiere tamaños de salida más pequeños, utilice -r70 o si ingresa el pdf tiene una alta resolución use -r600. Si tiene un PDF con 300dpi y especifica -r600, sus imágenes se escalarán.
  • -dUseCropBox dile a gs que use un CropBox si está definido. Un CropBox es especifica un área de interés en una página. Si tiene un pdf con un margen blanco grande de y no desea este margen en su salida, esta opción podría ser de ayuda.
  • -sOutputFile define el nombre (s) del archivo de salida. La parte% 03d.png le dice a gs que incluya un contador para varios archivos. Un pdf de dos páginas resultaría en dos archivos llamados item-001.png y item-002.png.
  • La última (parámetro sin nombre es el archivo de entrada.)

Disponibilidad: El comando de conversión de ImageMagick usa el comando gs internamente. Si puede convertir un pdf con imagemagick, ya tiene instalado gs.

Instalar ghostscript:

RHEL:

yum install ghostscript 

SLES:

zypper install ghostscript 

Debian/Ubuntu:

sudo apt-get install ghostscript 

Ventanas:

Usted puede encontrar los binarios de Windows bajo http://www.ghostscript.com/download/gsdnld.html