PDF a imagen usando Java [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Quiero convertir páginas PDF en una imagen (PNG,JPEG/JPG o GIF). Los quiero en tamaño de página completa.

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

Author: Aleksander Blomskøld, 2011-02-03

6 answers

Necesitará un renderizador PDF. Hay algunos más o menos buenos en el mercado (ICEPdf, pdfrenderer), pero sin, tendrá que confiar en herramientas externas. Los renderizadores PDF gratuitos tampoco pueden renderizar fuentes incrustadas, por lo que solo serán buenos para crear miniaturas (lo que finalmente desea).

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

Esto convierte Postscript (y PDF?) archivos a bmp para us , como una guía para modificar según sus necesidades (¡Sepa que necesita los env vars para que gs funcione!):

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
 9
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-03 14:07:41

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

  1. Cargue un archivo PDF o PS (use la clase PSDocument para eso):

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

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

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

Entonces puedes hacer lo que quieras con tus objetos de imagen, por ejemplo, puedes escribirlos como PNG de esta manera:

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

Nota: Ghost4J utiliza el nativo Ghostscript C API por lo que necesita tener un Ghostscript instalado en su caja.

Espero que te ayude:)

 30
Author: zippy1978,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-04 08:10:45

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 poder averiguar cómo usar PDF Box para convertir archivos PDF a imágenes desde su propio código Java.

 24
Author: Dónal Boyle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-14 17:19:34
 2
Author: Maxym,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-03 12:37:31

JPDFImages no es gratis, 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.

 1
Author: alaris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-13 19:09:17

Si la GPL está bien, puede echar un vistazo adicional a jPodRenderer (SourceForge)

 0
Author: mtraut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-03 14:51:11