ASP.NET Ve ITextSharp, iTextSharp kütüphanesi ile HTML table veya HTML kodlarıyla oluşturduğunuz görüntüleri kolayca PDF’e dönüştürebilirsiniz kütüphane çok geniş özelliklere sahiptir birçok yerde kullanma olanağına sahiptir taşıdığı özelliklerle.
ASP.NET ve iTextSharp ile HTMLgörünümü PDF olarak kaydetme ve mail olarak gönderme
Kullanılan Namespace’ler
1 2 3 4 5 6 7 8 | using System.IO; using System.Text; using System.Data; using System.Net; using System.Net.Mail; using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.html.simpleparser; |
C# Kodu
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[3] { new DataColumn("SiparişId"), new DataColumn("Ürün"), new DataColumn("Adet")}); dt.Rows.Add(101, "Cam bardak", 5); dt.Rows.Add(102, "Pantolon", 2); dt.Rows.Add(103, "Tişört", 12); dt.Rows.Add(104, "Gömlek", 9); SendPDFEmail(dt); } } private void SendPDFEmail(DataTable dt) { string companyName = "Murat ÖNER"; int orderNo = 2303; StringBuilder sb = new StringBuilder(); sb.Append("<table width='100%' cellspacing='0' cellpadding='2'>"); sb.Append("<tr><td align='center' style='background-color: #18B5F0' colspan = '2'><b>Sipariş Tablosu</b></td></tr>"); sb.Append("<tr><td colspan = '2'></td></tr>"); sb.Append("<tr><td><b>Sipariş Numarası:</b>"); sb.Append(orderNo); sb.Append("</td><td><b>Tarih: </b>"); sb.Append(DateTime.Now); sb.Append(" </td></tr>"); sb.Append("<tr><td colspan = '2'><b>Şirket Adı :</b> "); sb.Append(companyName); sb.Append("</td></tr>"); sb.Append("</table>"); sb.Append("<br />"); sb.Append("<table border = '1'>"); sb.Append("<tr>"); foreach (DataColumn column in dt.Columns) { sb.Append("<th style = 'background-color: #D20B0C;color:#ffffff'>"); sb.Append(column.ColumnName); sb.Append("</th>"); } sb.Append("</tr>"); foreach (DataRow row in dt.Rows) { sb.Append("<tr>"); foreach (DataColumn column in dt.Columns) { sb.Append("<td>"); sb.Append(row[column]); sb.Append("</td>"); } sb.Append("</tr>"); } sb.Append("</table>"); StringReader sr = new StringReader(sb.ToString()); Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f); HTMLWorker htmlparser = new HTMLWorker(pdfDoc); #region Türkçe karakter sorunu için yazılması gereken kod bloğu. FontFactory.Register(Path.Combine("C:\\Windows\\Fonts\\Arial.ttf"), "Garamond"); // kendi türkçe karakter desteği olan fontunuzu da girebilirsiniz. StyleSheet css = new StyleSheet(); css.LoadTagStyle("body", "face", "Garamond"); css.LoadTagStyle("body", "encoding", "Identity-H"); css.LoadTagStyle("body", "size", "12pt"); htmlparser.SetStyleSheet(css); #endregion using (MemoryStream memoryStream = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream); pdfDoc.Open(); htmlparser.Parse(sr); pdfDoc.Close(); byte[] bytes = memoryStream.ToArray(); memoryStream.Close(); MailMessage mm = new MailMessage("kimden(mail adres)", "kime(mail adres)"); mm.Subject = "iTextSharp PDF"; mm.Body = "iTextSharp PDF Eki"; mm.Attachments.Add(new Attachment(new MemoryStream(bytes), "iTextSharpPDF.pdf")); mm.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "<smtp host>(smtp.google.com)"; smtp.EnableSsl = true; NetworkCredential NetworkCred = new NetworkCredential(); NetworkCred.UserName = "<smtp kullanıcı adı>"; NetworkCred.Password = "<smtp şifre>"; smtp.UseDefaultCredentials = true; smtp.Credentials = NetworkCred; smtp.Port = 587; smtp.Send(mm); } } |
Oluşan PDF Görüntüsü
iTextSharp kütüphanesi ile HTML tablomuzu PDF’e çevirdik pdf’e çevirme işleminden sonra mail olarak gönderildi mail’e ait görüntüde aşağıda yer almaktadır.
Email Sonuç
HTML görüntüsünden PDF Oluşturuldu ve Mail olarak gönderildi gönderilen mail örneğine ait ekran görüntüsüde altta gördüğünüzü gibidir.
Hocam ben bu itext kullanarak pdf işlemini yapıyorum ama boş sayfa indiriyor pc ye bunun sebebini bulamadım nedir sorun bır bılgınız var mı
HTMLWorker artık iTextSharp tarafından obselete ilan edildiği için yeni eklenen dll’lerde bu kod çalışmamaktadır.
Hocam yazıyı göremiyorum
Özür dilerim makale içerisindeki bir sorundan dolayı gözükmüyordu sorun giderildi, geri dönüş için teşekkür ederim.
İyi günler Murat Bey. Yazınız için öncelikle teşekkür ederim. Ben Pdf dosyasını oluşturma da ve yazmada herhangi bir probem yaşaadım ama css leri uyguanmıyor hem sizin gibi inline style i denedim hemde
var cssText = File.ReadAllText(MapPath(@”Content/plugins/datatables/jquery.dataTables.min.css”));
using (MemoryStream memoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
{
}
kodda yol belirterek denedim olmadı. Böyle bir sorun daha önce yasadınz mı acaba
merhaba hocam
bir web sitesi yapıyorum ve teknik servis sayfamda veritabanına kaydettiğim bilgileri pdf olarak sizinkisi gibi görüntülemek istiyorum.
örnek kodlama için yardımınızı rica edderim.
Merhaba Ceyhun bey
Bende aynı sizin gibi teknik servis sayfamda veritabanına kaydettiğim bilgileri pdf olarak gibi görüntülemek istiyorum.
Siz bir çözüme ulaştınız mı acaba
Merhaba yapmış olduğunuz örnek uygulamada görüyorumki türkçe karakter problemi var. bende buna benzer bir uygulama yaptım ancak bende türkçe karakterlerde sorun yaşamaktayım. Bununla ilgili nasıl bir çözüm yapabiliriz yardımcı olursanız sevinirim
Merhaba,
Şu kodu kullanıp Türkçe karakterler ile yaşanan sıkıntınızı giderebilirsiniz.
merhaba,
mvc bir projem var veritabanından birkaç satır bilgi çekiyorum bunları düzgün bir formatta pdf’e dönüştürmek istiyorum yardımcı olabilirmisiniz
Bu makaledeki örneğimizi direk kullanabilirsiniz sadece mail kısmını görmezden gelip diğer kısımlarıda alıp kendi verilerinize göre tasarımını ve html kodlamasını değiştirebilirsiniz.
Hocam öncelikle çok sağolsun. Ben ck editördeki verileri pdf dosyasına aktarmak istiyorum ama şöyle bir sıkıntı çıkıyor. http://i.hizliresim.com/6r4VPW.png Yani aktardığım yazılar şeklinde gözüküyor. Bu sorunu nasıl halledebiliriz hocam.
Kodları görüp öyle yorum yapmak lazım ama html decode işlemi yapıp öyle htmlparser.Parse(sr); satırında decode edilmiş html’i verirseniz olabilir ama en sağlıklısı kodu görüp yorum yapmak.
Hocam merhaba, itextsharp kutuphanesini nasil eklicez projeye bilgilendirebilirmisiniz. Kac gündür arıyorum. Dll indiriyorum ama biturlu projeye ekleyemedim add referance da gözükmüyor
Projeye itextsharp’ın dll’ini bulup referans olarak ekleme gibi şeylerşe uğraşmanıza gerek yok nuget’tan iTextSharp paketini kurarsanız sizin için gerekli dosyaları indirip otomatik reference olarak ekleyecektir.