C# PdfSharp İle Pdf Oluşturucu Yapımı

Grimner

Adanmış Üye
28 Mar 2020
6,308
4,725
a3b2jeo.png


Giriş

Merhaba, bugünkü konumda PdfSharp kütüphanesini kullanarak nasıl pdf oluşturucu yapılır onu anlatacağım.
Tabi buradaki kullanım çok temel bir şekilde olacak, sizler UI tarafını daha da geliştirip çok daha detaylı bir uygulama yapabilirsiniz.
İyi okumalar dilerim!

Kullanım


Öncelikle bir proje oluşturmakla başlayalım.

sryoag4.png


Projemizi oluşturduktan sonra ilk olarak basit bir tasarım yapıyorum, sizler çok daha geniş bir tasarım yapabilirsiniz.

o74t057.png


Şimdi ise gerekli kütüphanelerimizi ekleyelim.

lrcpyas.png



Bunun için "NuGet Paket Yöneticisi" bölümüne giriyoruz.

Sonrasında "Gözat" kısmındaki arama kısmına "PdfSharp" yazıyoruz ve ilk çıkanı yüklüyoruz.
Yükledikten sonra ise, indirdiğimiz kütüphaneyi kodumuza entegre etmemiz gerek.

Bunun için aşağıdaki kodu kullanıyoruz.

C#:
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Fonts;
using PdfSharp.Pdf;

Şimdi ise diğer kodlara geçelim.


C#:
private void button1_Click(object sender, EventArgs e)
{
    CustomFontResolver fontResolver = new CustomFontResolver();
    // Önce, özel font çözümleyiciyi oluşturuyoruz.

    GlobalFontSettings.FontResolver = fontResolver;
    // Global font ayarlarını yapıyoruz.

    // Yukarıdaki 2 satır kodu CustomFontResolver classını ekleyecekseniz kullanın.

    PdfDocument document = new PdfDocument();
    // Yeni bir PDF belgesi oluşturuyoruz.

    PdfPage page = document.AddPage();
    // Oluşturduğumuz PDF belgesine bir sayfa ekliyoruz.

    XGraphics gfx = XGraphics.FromPdfPage(page);
    // Bir tane grafik nesnesi oluşturuyoruz.

    XFont font = new XFont("Arial", 12, XFontStyleEx.Regular);
    gfx.DrawString(textBox2.Text, font, XBrushes.Black,
        new XRect(0, 0, page.Width, page.Height),
        XStringFormats.Center);

    /* Bu kısımın düzenlenmesi size kalmış durumda. Yazı tipi, yazı boyutu, sayfa boyutu, içeriği vb. bunları kendi ui tasarımınıza göre
şekillendirebilirsiniz. Ben sadece içeriği textbox2 içinden almakla yetiniyorum. */

    /*
        Xfont: Font font türünü ve boyutunu belirtir.
        Xbrush: Yazının rengini belirtir.
        Xrect: Sayfanın hizalanmasını ve boyutunu belirtir.
        XStringFormat: İçerik hizalama.
    */

    string filename = $"{textBox1.Text}.pdf";
    // textbox1 içinden aldığımız değer ile bir dosya adı değişkeni oluşturduk.

    document.Save(filename);
    // Burada ise dosyamızı kaydediyoruz.}

Eğer bu kodları çalıştırırken font hatası alırsanız aşağıdaki kodu eklemeniz gerekmekte.

C#:
public class CustomFontResolver : IFontResolver
{
    public byte[] GetFont(string faceName)
    {
        if (string.Equals(faceName, "Arial", StringComparison.OrdinalIgnoreCase))
        {
            // Arial yazı tipi dosyasının yolunu belirtiyoruz.
            string fontFilePath = @"arial.ttf";

            // Eğer font dosyası varsa, bu dosyadaki byte dosyasını döndürüyoruz.
            if (File.Exists(fontFilePath))
            {
                return File.ReadAllBytes(fontFilePath);
            }
            else
            {
                throw new FileNotFoundException($"Arial font dosyası bulunamadı: {fontFilePath}");
            }
        }
        else
        {
            // Font mevcut değilse boş döndürüyoruz.
            return null;
        }
    }

    public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
    {
        if (string.Equals(familyName, "Arial", StringComparison.OrdinalIgnoreCase))
        {
            return new FontResolverInfo("Arial");
        }
        else
        {
            // İstenilen yazı tipi ailesi desteklenmiyorsa null döndürün
            return null;
        }
    }
}

Bu arada kodları direkt olduğu gibi kullanmak yerine eklemeler yapsanız iyi olur.
Mesela bu son koda bir try catch eklenebilir. O kısımlar sizin kullanışına göre şekillenmeli.

Sonuç


ceiibvi.png



lo3m6qm.png


Gördüğünüz gibi pdf dosyamız başarıyla oluşturuldu.

aca4br9.png


Kapanış

Evet, konumuz bu kadardı.
İleri düzey bir pdf oluşturucu olmasa da, basit programlarınızda pdf oluşturma ihtiyacınız olursa, işinize yarabilir.
Okuduğunuz için teşekkür ederim.
İYİ FORUMLAR!

jju3zci.png
 

ACE Veen

Uzman üye
4 Şub 2023
1,093
548
Belirsiz
a3b2jeo.png


Giriş

Merhaba, bugünkü konumda PdfSharp kütüphanesini kullanarak nasıl pdf oluşturucu yapılır onu anlatacağım.
Tabi buradaki kullanım çok temel bir şekilde olacak, sizler UI tarafını daha da geliştirip çok daha detaylı bir uygulama yapabilirsiniz.
İyi okumalar dilerim!

Kullanım


Öncelikle bir proje oluşturmakla başlayalım.

sryoag4.png


Projemizi oluşturduktan sonra ilk olarak basit bir tasarım yapıyorum, sizler çok daha geniş bir tasarım yapabilirsiniz.

o74t057.png


Şimdi ise gerekli kütüphanelerimizi ekleyelim.

lrcpyas.png



Bunun için "NuGet Paket Yöneticisi" bölümüne giriyoruz.

Sonrasında "Gözat" kısmındaki arama kısmına "PdfSharp" yazıyoruz ve ilk çıkanı yüklüyoruz.
Yükledikten sonra ise, indirdiğimiz kütüphaneyi kodumuza entegre etmemiz gerek.

Bunun için aşağıdaki kodu kullanıyoruz.

C#:
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Fonts;
using PdfSharp.Pdf;

Şimdi ise diğer kodlara geçelim.


C#:
private void button1_Click(object sender, EventArgs e)
{
    CustomFontResolver fontResolver = new CustomFontResolver();
    // Önce, özel font çözümleyiciyi oluşturuyoruz.

    GlobalFontSettings.FontResolver = fontResolver;
    // Global font ayarlarını yapıyoruz.

    // Yukarıdaki 2 satır kodu CustomFontResolver classını ekleyecekseniz kullanın.

    PdfDocument document = new PdfDocument();
    // Yeni bir PDF belgesi oluşturuyoruz.

    PdfPage page = document.AddPage();
    // Oluşturduğumuz PDF belgesine bir sayfa ekliyoruz.

    XGraphics gfx = XGraphics.FromPdfPage(page);
    // Bir tane grafik nesnesi oluşturuyoruz.

    XFont font = new XFont("Arial", 12, XFontStyleEx.Regular);
    gfx.DrawString(textBox2.Text, font, XBrushes.Black,
        new XRect(0, 0, page.Width, page.Height),
        XStringFormats.Center);

    /* Bu kısımın düzenlenmesi size kalmış durumda. Yazı tipi, yazı boyutu, sayfa boyutu, içeriği vb. bunları kendi ui tasarımınıza göre
şekillendirebilirsiniz. Ben sadece içeriği textbox2 içinden almakla yetiniyorum. */

    /*
        Xfont: Font font türünü ve boyutunu belirtir.
        Xbrush: Yazının rengini belirtir.
        Xrect: Sayfanın hizalanmasını ve boyutunu belirtir.
        XStringFormat: İçerik hizalama.
    */

    string filename = $"{textBox1.Text}.pdf";
    // textbox1 içinden aldığımız değer ile bir dosya adı değişkeni oluşturduk.

    document.Save(filename);
    // Burada ise dosyamızı kaydediyoruz.}

Eğer bu kodları çalıştırırken font hatası alırsanız aşağıdaki kodu eklemeniz gerekmekte.

C#:
public class CustomFontResolver : IFontResolver
{
    public byte[] GetFont(string faceName)
    {
        if (string.Equals(faceName, "Arial", StringComparison.OrdinalIgnoreCase))
        {
            // Arial yazı tipi dosyasının yolunu belirtiyoruz.
            string fontFilePath = @"arial.ttf";

            // Eğer font dosyası varsa, bu dosyadaki byte dosyasını döndürüyoruz.
            if (File.Exists(fontFilePath))
            {
                return File.ReadAllBytes(fontFilePath);
            }
            else
            {
                throw new FileNotFoundException($"Arial font dosyası bulunamadı: {fontFilePath}");
            }
        }
        else
        {
            // Font mevcut değilse boş döndürüyoruz.
            return null;
        }
    }

    public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
    {
        if (string.Equals(familyName, "Arial", StringComparison.OrdinalIgnoreCase))
        {
            return new FontResolverInfo("Arial");
        }
        else
        {
            // İstenilen yazı tipi ailesi desteklenmiyorsa null döndürün
            return null;
        }
    }
}

Bu arada kodları direkt olduğu gibi kullanmak yerine eklemeler yapsanız iyi olur.
Mesela bu son koda bir try catch eklenebilir. O kısımlar sizin kullanışına göre şekillenmeli.

Sonuç


ceiibvi.png



lo3m6qm.png


Gördüğünüz gibi pdf dosyamız başarıyla oluşturuldu.

aca4br9.png


Kapanış

Evet, konumuz bu kadardı.
İleri düzey bir pdf oluşturucu olmasa da, basit programlarınızda pdf oluşturma ihtiyacınız olursa, işinize yarabilir.
Okuduğunuz için teşekkür ederim.
İYİ FORUMLAR!

jju3zci.png
elinieze sağlık hocam
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.