Olá pessoal!
Utilizei este ótimo artigo escrito pelo nosso amigo Éder Baum :D. Mas tinha uma dúvida, que segundo ele vários leitores tambem possuem, que é como configurar as margens do arquivo PDF. Ele deu a dica e eu pesquisei e encontrei algo muito interessante.
As margens no arquivo PDF são configuradas através de uma regra CSS que deve ser inserida no corpo do arquivo HTML. A regra @page define alguns pontos referentes a página, e segue abaixo um exemplo do uso da mesma baseado no artigo do Éder:
[code]OutputStream os = new FileOutputStream(“C:\hello.pdf”);;
String corpo = “”;
corpo = “”;
corpo += “@page { “;
corpo += " size: 4.18in 6.88in;”; //Tamanho da folha
corpo += " margin: 30px 20px 15px 35px;”; //Margem: Cima Direita Baixo Esquerda
corpo += “}”;
corpo += “”;
corpo += “
”;
corpo += " Hello PDF";
corpo += “
”;
Html2Pdf.convert(corpo, os);
os.close();[/code]
[quote=EderBaum]Sempre vejo pessoas procurando por ai como converter HTML para PDF, mas sempre as soluções são obscuras complicadas e não muito “limpas”, as vezes requerendo bibliotecas proprietárias.
Pois então vou lhe dar uma solução com apenas 06 linhas de código que salvará sua alma . Lá vamos nós rápidos e rasteiros. Como o código é mediocremente pequeno vou colocar tudo aqui pra encher linguiça, até os imports
[code]import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.w3c.dom.Document;
import org.w3c.tidy.Tidy;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.DocumentException;
/**
-
@Autor Eder Baum
*/
public class Html2Pdf {
public static void convert(String input, OutputStream out) throws DocumentException{
convert(new ByteArrayInputStream(input.getBytes()), out);
}
public static void convert(InputStream input, OutputStream out) throws DocumentException{
Tidy tidy = new Tidy();
Document doc = tidy.parseDOM(input, null);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(out);
}
}
[/code]
Se você contar o numero de linhas do 2º método convert, verá que há apenas 06 linhas como prometido, e para usar esta classe, o código é menor ainda:
OutputStream os = new FileOutputStream("C:\\hello.pdf");;
Html2Pdf.convert("<h1 style=\"color:red\">Hello PDF</h1>", os);
os.close();
Os jars que vc precisa são estes
Tidy : http://jtidy.sourceforge.net
XHTMLRenderer : https://xhtmlrenderer.dev.java.net/
Itext: http://www.lowagie.com/iText
Espero que tenham divertido-se.[/quote]