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.