2011-02-03 19 views
32

Deseo convertir páginas PDF en una imagen (PNG, JPEG/JPG o GIF). Los quiero en tamaños de página completa.PDF para crear imágenes usando Java

¿Cómo se puede hacer esto usando Java? ¿Qué bibliotecas están disponibles para lograr esto?

+1

Oh, sería interesante saberlo. También es bueno si hay una opción de cambio de tamaño. – Nishant

+2

http://stackoverflow.com/questions/356550/a-good-library-for-converting-pdf-to-tiff –

+0

@Nishant: cuando obtienes Image object puedes transformarlo;) – Maxym

Respuesta

9

Necesitará un procesador de PDF. Hay unos pocos más o menos buenos en el mercado (ICEPdf, pdfrenderer), pero sin eso, tendrá que depender de herramientas externas. Los renderizadores de PDF gratuitos tampoco pueden generar fuentes incrustadas, por lo que solo servirán para crear miniaturas (lo que eventualmente desee).

Mi herramienta externa favorita es Ghostscript, que puede convertir archivos PDF a imágenes con una sola invocación de línea de comando.

Esto convierte archivos PostScript a BMP para nosotros, así como una guía de modificar para sus necesidades (y PDF?) (Sabe que necesita el env vars para GS a la obra!):

pushd 
setlocal 

Set BIN_DIR=C:\Program Files\IKOffice_ACME\bin 
Set GS=C:\Program Files\IKOffice_ACME\gs 
Set GS_DLL=%GS%\gs8.54\bin\gsdll32.dll 
Set GS_LIB=%GS%\gs8.54\lib;%GS%\gs8.54\Resource;%GS%\fonts 
Set Path=%Path%;%GS%\gs8.54\bin 
Set Path=%Path%;%GS%\gs8.54\lib 

call "%GS%\gs8.54\bin\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE#bmpmono -r600x600 -sOutputFile#%2 -f %1 

endlocal 
popd 
+0

Hola Daniel, gracias por su respuesta rápida. ¿Puedo automatizar Ghostscript usando Java? Si es posible, ¿cómo puedo hacerlo? Donde puedo encontrar muy buen tutorial de Ghostscript, ¡Gracias de nuevo! –

+0

Puede echarle un vistazo a Ghost4J http://ghost4j.sourceforge.net/coreapisamples.html – anergy

+0

No es correcto que "los renderizadores gratuitos no puedan redner las fuentes incrustadas" - al menos jPodRenderer lo hace ... – mtraut

0

Si GPL está bien que puede tener un aspecto adicional en jPodRenderer (SourceForge)

29

En la biblioteca Ghost4J (http://ghost4j.sourceforge.net), desde la versión 0.4.0 se puede utilizar un SimpleRenderer para hacer el trabajo con pocas líneas de código :

  1. Cargar archivo PDF o PS (el uso de clase PSDocument para eso):

    PDFDocument document = new PDFDocument(); 
        document.load(new File("input.pdf")); 
    
  2. Crear el procesador de

    SimpleRenderer renderer = new SimpleRenderer(); 
    
        // set resolution (in DPI) 
        renderer.setResolution(300); 
    
  3. Render

    List<Image> images = renderer.render(document); 
    

entonces usted puede hacer lo que quiera con sus objetos de imagen, por ejemplo, se puede escribir como PNG así:

  for (int i = 0; i < images.size(); i++) { 
       ImageIO.write((RenderedImage) images.get(i), "png", new File((i + 1) + ".png")); 
      } 

Nota: Ghost4J utiliza la API nativa de Ghostscript C, por lo que debe tener un Ghostscript instalado en su caja.

espero que le ayudará a :)

+0

Oye, recibo un error que dice "Excepción en el hilo" principal "java.lang.UnsatisfiedLinkError: no se puede cargar la biblioteca 'gsdll32': no ​​se pudo encontrar el módulo especificado. " Ya he instalado la última versión de Ghostscript. Ayuda :( –

+1

Esto significa que no se encontró la biblioteca de Ghostscript ... ¿En qué sistema operativo está trabajando? Asegúrese de que .dll/.so esté en la ruta de la biblioteca del sistema. – zippy1978

+0

Simplemente instalar Ghostscript no funciona para mí. esto bu cayendo gsdll32.dll en la carpeta del proyecto Eclipse. – MyTitle

21

Apache PDF Box puede convertir archivos PDF a JPG, BMP, WBMP, PNG y GIF.

La biblioteca incluso viene con una utilidad de línea de comandos llamada PDFToImage para hacer esto.

Si descarga el código fuente y mira la clase PDFToImage, debería ser capaz de descubrir cómo usar el PDF Box para convertir archivos PDF a imágenes desde su propio código Java.

+0

es algo inconsistente para imágenes. Si hay un "ColorPattern" (no una imagen pero similar ... confuso) en el PDF fuente, no se copiará en el destino imagen de la nación http://stackoverflow.com/questions/28589477/pdfbox-pdf-to-image-losing-qr-code-colorspace-pattern-doesnt-provide-a-non-str?noredirect=1#comment45487987_28589477 – mmcrae

+0

pero puede haber mejoras en la versión 2.x de PDFBox! (esperando) – mmcrae

+1

Consulte https://pdfbox.apache.org/2.0/migration.html en PDF Rendering para obtener detalles sobre cómo hacer esto en PDFBox 2.0.0 – gordon613

1

jPDFImages no es gratuito, sino una biblioteca comercial que convierte páginas PDF a imágenes en formato JPEG, TIFF o PNG. El tamaño de la imagen de salida es personalizable.

+0

¿Está afiliado a ese producto? Por favor, asegúrese de leer las preguntas frecuentes en la promoción http://stackoverflow.com/faq#promotion – Leigh