Existem inúmeras ferramentas para gerar arquivos PDF como .Net, mas poucas delas são confiáveis, e quando são, o valor para utiliza-las é um tanto elevado.
A ferramenta mais utilizada para gerar arquivos PDF é o iTextSharp, que é fácil de implementar, traz inúmeras opções ao desenvolvedor e é totalmente gratuita. Mas para gerar arquivo PDF a partir de um arquivo ou código HTML não é muito simples, tornando o processo muito “braçal”.
Encontrei uma solução muito simples e gratuita para essa função, que foi a utilização do PDFFizer. Veja o código de exemplo:
public void HtmlToPdf() { System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(); sbHtml.Append("<html>"); sbHtml.Append("<body>"); sbHtml.Append("<font size='14'> C#.Net =D </font>"); sbHtml.Append("<br/>"); sbHtml.Append("<img src='http://2.bp.blogspot.com/-qW60lVRk0gI/T3dX_aznzXI/AAAAAAAACD8/TMN8VDG3Xm4/s1600/C_Sharp.png' border='3' alt='C#'>"); sbHtml.Append("Testando o PDFizer"); sbHtml.Append("</body>"); sbHtml.Append("</html>"); using (System.IO.Stream fluxo = new System.IO.FileStream(@"C:\PDF.pdf", System.IO.FileMode.OpenOrCreate)) { Pdfizer.HtmlToPdfConverter htmlToPdf = new Pdfizer.HtmlToPdfConverter(); htmlToPdf.Open(fluxo); htmlToPdf.Run(sbHtml.ToString()); htmlToPdf.Close(); } }
O PDFizer se mostrou bastante eficiente, só apresento problemas em paginas HTML complexas, quando o código fonte continha tabelas sem um padrão.
Também encontrei uma solução que funcionou 100% mas utiliza um programa para gerar o PDF, o wkhtmltopdf. Ele é um programa que executa pelo DOS e gera arquivos PDF de um arquivo HTML como pode ser visto no código fonte abaixo:
<div> System.Diagnostics.Process p = new System.Diagnostics.Process();</div> <div> p.StartInfo.FileName = @"C:\Program Files\wkhtmltopdf\wkhtmltopdf.exe";</div> <div> p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //executa em segudno plano, sem abrir a tela do DOS</div> <div> p.StartInfo.Arguments = @"--margin-top 4mm --margin-left 20mm --page-size A4 --zoom 3 C:\html.html c:\pdf.pdf";</div> <div> p.Start();</div> <div> p.WaitForExit();</div>
O wkhtmltopdf gerou arquivos PDF perfeitamente, perfeito para gerar Boletos Bancários e para o mais complexo dos HTML’s.
Espero que esse artigo ajude alguém. Abraço!