C# ile iTextSharp kütüphanesi kullanarak pdf dosyası oluşturmak ve Türkçe karakter sorununun çözümü

by Tufan Ünlü 24. Şubat 2010 17:53
C# ile pdf dosyası oluşturmak için iTextSharp kütüphanesini kullanabiliriz. Öncelikle buraya tıklayarak iTextSharp.dll dosyasını bilgisayarınıza indirin. Dosyayı bilgisayarınıza indirdikten sonra. Projenizde References'a sağ tıklayın ve Add Reference'ı seçin.

Açılan pencerede browse sekmesine tıklayarak iTextSharp.dll dosyasını bulun ve OK butonuna tıklayın.

Eğer iTextSharp kütüphanesini başarılı olarak projemize ekleyebildiysek. Aşağıda görüldüğü gibi References listedinde iTextSharp kütüphanesi görülecektir.

Referansımızı ekledikten sonra namespaceleri de ekleyerek kodlarımızı yazmaya başlayabiliriz.
using iTextSharp.text.pdf;
using iTextSharp.text;
using System.IO;
Pdf dosyamızı oluşturacak olan kodları yazarken bazı noktalara dikkat edilmelidir. Türkçe karakter problemini çözebilmek için BaseFont oluştururken verilen parametreler aşağıdaki gibi olmalıdır. Kullanılacak fontun bulunduğu konum ise mutlaka yazılmalıdır. Fontlar Windows klasörünün altında Fonts klasöründe yer alırlar.
Resim eklemek için ise iTextSharp kütüphanesine ait image nesnesinin bir instance ını almalıyız. Burada Image.GetInstance methoduna parametre olarak resmin buludunduğu path verilmelidir. 

iTextSharp.text.Document document = new iTextSharp.text.Document();

PdfWriter.GetInstance(document, new FileStream(@"C:\deneme.pdf", FileMode.Create));

BaseFont arial = BaseFont.CreateFont("C:\\windows\\fonts\\arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

Font font = new Font(arial, 12, Font.NORMAL);

 if (document.IsOpen() == false)

{

document.Open();

string text = "Deneme pdf yazısı. \n alt satıra in Türkçe karakterleri yaz ıİşŞçÇöÖğĞüÜ;

iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(@"C:\info.png");

text = TurkceKarakter(text);

document.Add(new Paragraph(text, font));

document.Add(img);

document.Close();

}

Oluşan pdf dosyamıza baktığımızda türkçe karakterlerin görüntülenemediğini görürüz bu sorunu çözmek için metnimizdeki Türkçe karakterleri bu karakterlere ait unicodelar ile değiştirmeliyiz.
Şimdide unicoları yazacak olan ve yukarıda çağırdığımız TurkceKarakter methodumuzu yazalım. TurkceKarakter methodumuz şu şekilde olmalıdır.
public string TurkceKarakter(string text)

{

text = text.Replace("İ", "\u0130");

text = text.Replace("ı", "\u0131");

text = text.Replace("Ş", "\u015e");

text = text.Replace("ş", "\u015f");

text = text.Replace("Ğ", "\u011e");

text = text.Replace("ğ", "\u011f");

text = text.Replace("Ö", "\u00d6");

text = text.Replace("ö", "\u00f6");

text = text.Replace("ç", "\u00e7");

text = text.Replace("Ç", "\u00c7");

text = text.Replace("ü", "\u00fc");

text = text.Replace("Ü", "\u00dc");

return text;

}

 

 

Bu methodu yazdıktan sonra artık pdf dosyamızda Türkçe karakterler de sorunsuz olarak görüntülenebilecektir.

Tufan Ünlü

Tufan Ünlü 1986 yılında İstanbul’da doğdu. Liseyi; Haydarpaşa Anadolu Teknik Lisesi Otomatik Kumanda bölümünde, üniversiteyi, Marmara Üniversitesi TBMYO Endüstriyel Elektronik bölümünde okudu. Yazılıma olan merakı lisede aldığı mikroişlemciler, C++, assembly, PLC gibi derslerle başladı. Daha sonra, Bilge Adam Bilgi Teknolojileri Akademisi’nde 500 saatlik yazılım ve veritabanı uzmanlığı eğitimi aldı. Şuan Türkiye'nin önde gelen bilişim firmalarından birinde “Yazılım Geliştirme Uzmanı” olarak çalışmaktadır.  Ayrıca, Anadolu Üniversitesi Açık Öğretim Fakültesi İşletme bölümünde lisans eğitimine devam etmektedir.

Month List