Merhaba, bu yazımızda C# kodları ile pdf dosya oluşturmayı ve oluşabilecek Türkçe karakter problemlerini nasıl giderebileceğimizi inceleyeceğiz.
C# ile pdf dosyası oluşturmak için iTextSharp kütüphanesini kullanabiliriz. Öncelikle buraya tıklayarak iTextSharp.dll dosyasını bilgisayarımıza indirelim. Dosyayı bilgisayarımıza indirdikten sonra, projemizde References'a sağ tıklayalım ve Add Reference'ı seçelim.
Açılan pencerede browse sekmesine tıklayarak iTextSharp.dll dosyasını bulalım ve OK butonuna tıklayalım.
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 örneğini oluşturmalıyız. Burada Image.GetInstance methoduna parametre olarak resmin buludunduğu dosya yolu 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 da yazdıktan sonra artık pdf dosyamızda Türkçe karakterler de sorunsuz olarak görüntülenebilecektir.