Salve, salve galera! Hoje, vou postar uma forma de exportar aquele HTML para o tão sonhado PDF. Existem muitas maneiras de fazer isso, mas neste post, vou servir-me de uma DDL bastante conhecida pela galera do desenvolvimento, que é a iTextSharp.
Essa DDL é gratuita para uso, e até bem simples de utilizar. Então, sem mais, faça o Download dela aqui: Download iTextSharp. Após o download, coloque-a em uma pasta do seu sistema, e claro, adicione a referência à mesma em seu projeto.
“Bora pro” exemplo. Nas referências do projeto, na página em questão, onde será realizado o processo de conversão do nosso HTML em PDF, deverá conter ao menos as seguintes referências:
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using iTextSharp; using iTextSharp.text; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf; |
Após a inclusão das referências, o próximo passo, é definir as variáveis que serão utilizadas, veja abaixo:
1 2 3 4 5 |
HtmlForm form = new HtmlForm(); Document document = new Document(PageSize.A4, 20, 20, 20, 20); MemoryStream ms = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(document, ms); HTMLWorker obj = new HTMLWorker(document); |
E para finalizar, segue abaixo como ficará nosso arquivo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
string html = " <html> " + " <body> " + " <span style=color:#f00; font-size:10pt>Nosso HTML básico.</span> " + " <table border=1 bordercolor=#222 cellpadding=2 cellspacing=0> " + " <tr> " + " <td># 1</td> " + " <td># 2</td> " + " </tr> " + " <tr> " + " <td>Coluna n° 1</td> " + " <td><strong>Coluna n° 2</strong></td> " + " </tr> " + " </table> " + " </body> " + " </html> "; StringReader se = new StringReader(html); document.Open(); obj.Parse(se); document.Close(); Response.Clear(); Response.AddHeader("content-disposition", "filename=NomedoMeuArquivo.pdf"); Response.ContentType = "application/pdf"; Response.Buffer = true; Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); Response.OutputStream.Flush(); Response.End(); |
Você ainda, pode dar uma “palhinha” ao código, incrementando para, ao invés de exibir o documento no navegador, realizar o download diretamente, substituindo a seguinte linha
1 |
Response.AddHeader("content-disposition", "filename=NomedoMeuArquivo.pdf"); |
Por esta:
1 |
Response.AddHeader("content-disposition", "attachment;filename=NomedoMeuArquivo.pdf"); |
Segue o download do nosso exemplo: Exemplo_iTextSharp.7z
Bom galera, espero ter ajudado.