Biblioteca Java Free para conversão de documento PDF para Imagem

Eu estou usando uma biblioteca chamda Java Renderer para converter documentos PDF para imagem. Porém esta biblioteca não converte corretamente arquivos de grande área.

Alguém conhece outra biblioteca freeware para Java que faça este trabalho?

acho que vc consegue isso com itext.

Já tentei usá-lo mas não consegui nada.

tem um referencia o itext in action vai la no 4shared que vc encontra e nessa referencia vc consegue resolver o seu problema.

Achei o documento e estou baixando-o. Não acredito q o iText vá ajudar, mas esse documento é novo, não ouvi falar dele antes! Obrigado pela esperança! =) Vou testar e logo falo o resultado!

bo brother eu te digo que sim, pq tem tres formas de se gerar relatorio com itext uma é pdf outra imagem e HTML.

se vc quiser converter vc pega o pdf converte para bytearray e devolve a imagem…

mais ou menos assim.

espero ter ajudado.

Bom dia Alan!!

Eu consegui chegar bem perto com a solução que você ofereceu!! Realmente é possível fazer esse trabalho com o iText!!
Só estou com problemas no seguinte item:

Eu pego o conteúdo da página do documento em forma de byte[] e quando vou converter pra BufferedImage ele converte pra null!! Não estou conseguindo achar o melhor jeito pra essa conversão.

Depois de mtas tentativas com voltas e sem voltas, o meu código para essa conversão ficou congelado assim:

    public static BufferedImage toImage(byte[] data) {
        try {
            ByteArrayInputStream bais = new ByteArrayInputStream(data);
            BufferedImage image = ImageIO.read(bais);
            return image;
        } catch (Exception ex) {
            System.out.println("Erro: " + ex.getMessage());
            return null;
        }
    }

E nesse código ele está retornando null sem cair na excessão!! O ImageIO.read não consegue ler! O BufferedImage recebe nullo.

Você ou mais alguém pode me ajudar a resolver esse problema?

eu acredito que vc esta indo pelo lado diferente, faz o seguinte pega o fonte do JBoleto que la tem isso ja pronto.

http://jboleto.org/download_programadorjava.php

Oi Alan!!

Eu pesquisei o JBoleto mas não encontrei nada… Ele tem código de captura de imagens no disco e escrita das mesmas num documento PDF. Ele foi na contra-mão do que preciso.

da uma olhada nisso e ve se te ajuda

http://www.coderanch.com/t/63481/Other-Open-Source-Projects/iText-pdf-image-conversion

A resposta se chama PDFBox

ainda é dev mas é um excelente projeto.

E tem exemplos sobre como converter PDF para imagem

http://incubator.apache.org/pdfbox/

[quote=Felagund]A resposta se chama PDFBox

ainda é dev mas é um excelente projeto.

E tem exemplos sobre como converter PDF para imagem

http://incubator.apache.org/pdfbox/

[/quote]

Eu baixei esta ferramenta, a implementei e estou trabalhando nela. Porém ela não está convertendo o projeto por não encontrar uma classe da própria biblioteca. Você já utilizou esta ferramenta para este propósito?

Eis a solução!! O PDFBox não funciona corretamente sem o FontBox!! Precisei baixá-lo também!! Já está tudo funcionando como precisava!!!
Muito obrigado a vocês, Alan e Felagund, pela ajuda!!!

Usando o PDFBox e o FontBox na pasta de biblioteca, eis o código para a conversão:

/*
 * Classe de conversão de arquivo PDF para Imagem
 */

package conversao;

import java.awt.image.BufferedImage;
import java.util.List;
import java.util.Vector;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDPage;

/**
 *
 * @author Márcio Raphael Rigues
 * 
 */
public class PdfToBufferedImage {
    public Vector<BufferedImage> Convert(String caminho){
        try {
            Vector<BufferedImage> paginas = new Vector<BufferedImage>();
            PDDocument document = PDDocument.load(caminho);
            List<PDPage> pages = document.getDocumentCatalog().getAllPages();
            for (int i = 0; i < pages.size(); i++) {
                PDPage singlePage = pages.get(i);
                BufferedImage buffImage = singlePage.convertToImage();
                paginas.add(buffImage);
            }
            return paginas;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }
}

Abraços!!!

Eu fiz assim tambem ams ta dando erro no = PDDocument document = PDDocument.load(caminho);

o erro é esse:

Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.pdfbox.pdfparser.BaseParser.(BaseParser.java:58)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:861)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:829)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:754)
at teste.Convert(teste.java:20)
at teste.main(teste.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)

Boa tarde barradas,

minhas pesquisas avançaram muito depois deste tópico. Este componente se mostrou insuficiente pra mim e usei outro mais profissional: o JPedal (http://www.jpedal.org/). Lá tem duas versões: a free e a paga. Nós aqui precisamos da paga. Valeu muiiito a pena! É excelente e suporta todas as fontes que precisamos.

Você pode usar a versão gratuita que também é muito boa. O site te informa de tudo e ainda tem um código de exemplo que te ajuda a fazer uma conversão básica. =)

Abraços e boa sorte! =)

mas você não sabe o que é esse erro que esta dando no meu codigo ?
ou pelo menos tem um exemplo com JPanel ?

Não sei, amigo. Eu larguei mão da PDFBox pq dava mto problema na época.

E um exemplo com JPedal ? Não consigo fazer o do site funcionar !

Jovem,

Um tempo atrás precisei adotar uma solução semelhante, mas o iText não atendia minhas necessidades então acabei montando uma biblioteca para tal funcionalidade.

Abs,