JasperReports gerando PDF de um HTML

6 respostas
T

Pessoal, é possível gerar um PDF através de um código HTML usando o JasperReports?

6 Respostas

T

Pessoal, não vai dar certo usar o Jasper. O lista de tags que ele renderiza é muito limitada.

Se alguém souber uma forma de gerar um pdf através de um código HTML ficarei grato.

E

Thiago Siqueira:
Pessoal, é possível gerar um PDF através de um código HTML usando o JasperReports?

No caso você esta querendo usar o HTML como fonte de dados…

É só transformar o conteudo que você necessita em CSV filtrando os dados. E usar o CSV posteriormente!

Existem alguns parses prontos, é só dar uma pesquisada…

^^

T

Valeu pela resposta, mas não foi preciso fazer isso.

Segue o código que deu certo

import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.html.simpleparser.HTMLWorker;
import com.lowagie.text.html.simpleparser.StyleSheet;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.codec.Base64;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;

/**
 *
 * @author Thiago Siqueira
 */
public class PDF {

    public static void main(String[] args) throws Exception {
        Document pdfDocument = new Document();
        Reader htmlreader = new BufferedReader(new InputStreamReader(
                new FileInputStream("index.html")));
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfWriter.getInstance(pdfDocument, baos);
        pdfDocument.open();
        StyleSheet styles = new StyleSheet();
        styles.loadTagStyle("body", "font", "Bitstream Vera Sans");
        ArrayList arrayElementList = HTMLWorker.parseToList(htmlreader, styles);
        for (int i = 0; i < arrayElementList.size(); ++i) {
            Element e = (Element) arrayElementList.get(i);
            pdfDocument.add(e);
        }
        
        
        
        pdfDocument.close();
        byte[] bs = baos.toByteArray();
        String pdfBase64 = Base64.encodeBytes(bs); //output
        File pdfFile = new File("pdfExample.pdf");
        FileOutputStream out = new FileOutputStream(pdfFile);
        out.write(bs);
        out.close();
    }
}

Quem quiser mais informações:

http://www.developers-blog.org/blog/default/2009/12/16/HTML-convert-to-Pdf-in-Java

Z

Usando as libs abaixo::

core-renderer-R8-final.jar
xml-apis-xerces-2.9.1.jar

o código é o seguinte:

ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(urlDoHtml);
        renderer.layout();
        renderer.createPDF(new OutputStream(.....));
E

Sensacional!

Muito bom! Ainda fica mais facil se adicionar essa dependencia no maven:

<dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency>

T
zslnd:
Usando as libs abaixo::

core-renderer-R8-final.jar
xml-apis-xerces-2.9.1.jar

o código é o seguinte:

ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(urlDoHtml);
        renderer.layout();
        renderer.createPDF(new OutputStream(.....));

Obrigado pela dica. Já tinha visto essas libs porém não posso utilizar muitas bibliotecas no projeto :S

Criado 17 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 6
Participantes 3