Pessoal, é possível gerar um PDF através de um código HTML usando o JasperReports?
JasperReports gerando PDF de um HTML
6 Respostas
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.
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…
^^
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
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(.....));
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>
Usando as libs abaixo::core-renderer-R8-final.jar
xml-apis-xerces-2.9.1.jaro 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