2010-05-16 26 views
24

Estoy buscando una biblioteca Java que pueda tomar un PDF y crear una imagen en miniatura (PNG) desde la primera página.Crear imagen en miniatura para PDF en Java

Ya he analizado JPedal, pero su tarifa de licencia insana es completamente prohibitiva. Estoy usando iText para manipular archivos PDF en este momento, pero creo que no genera imágenes en miniatura. Puedo usar algo como Ghostscript en la línea de comandos, pero espero mantener mi proyecto en todas las versiones de Java, si es posible.

+0

Ver si [jPod] (http://sourceforge.net/projects/jpodlib/) puede hacer eso, apostaría que sí. (No es una respuesta, ya que es solo una sugerencia). – doublep

+0

Mirando jPod ahora. Preferiría una solución de fuente abierta si es posible, supongo. Incluso 99 euros es demasiado para gastar si puedo evitarlo. Tampoco es fácil encontrar una API para ello. –

+0

Bueno, mmm, la última vez que descargué jPod fue gratis. Supongo que necesito verificar lo que pasó ... – doublep

Respuesta

21

PDF Renderer es una licencia LGPL biblioteca pura de Java que hace esto tan simple como (tomado de su página de ejemplo):

File file = new File("test.pdf"); 
RandomAccessFile raf = new RandomAccessFile(file, "r"); 
FileChannel channel = raf.getChannel(); 
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()); 
PDFFile pdffile = new PDFFile(buf); 

// draw the first page to an image 
PDFPage page = pdffile.getPage(0); 

//get the width and height for the doc at the default zoom 
Rectangle rect = new Rectangle(0,0, 
       (int)page.getBBox().getWidth(), 
       (int)page.getBBox().getHeight()); 

//generate the image 
Image img = page.getImage(
       rect.width, rect.height, //width & height 
       rect, // clip rect 
       null, // null for the ImageObserver 
       true, // fill background with white 
       true // block until drawing is done 
       ); 
+0

Guau, eso definitivamente se ve como lo que necesito. Lo probaré e informaré. –

+0

¿Cómo guardo este objeto de imagen en el disco? –

+1

'ImageIO.write (image," png ", file);' – FRotthowe

5

PDF Procesador está bien siempre y cuando usted utiliza solamente el subconjunto de archivos PDF que utilizar. Con JPod y JPedal está pagando por una biblioteca activa y desarrollada, no por un proyecto muerto.

+0

Mi solución debe funcionar con archivos PDF arbitrarios. ¿Puedes explicar más por "solo el subconjunto [PDF Render] usa"? Re: JPedal, ya lo he descartado debido a su ridículo costo; re: JPod, aún no estoy seguro si hará lo que necesito arriba. –

+0

PDF Renderer no admite objetos comprimidos ni otras funciones en una gran cantidad de archivos PDF actuales. –

+0

+1 gracias por el aviso –

Cuestiones relacionadas