Python ile PDF Oluşturma: fpdf Kütüphanesi ve Uygulamaları
Merhaba, ben Fatih Soysal. Bu makalede, Python programlama dili ile PDF dosyası oluşturmanın pratik ve etkili bir yolunu, fpdf kütüphanesini kullanarak ele alacağız. fpdf kütüphanesi, PDF oluşturma işlemini oldukça kolaylaştıran, açık kaynaklı ve kullanımı basit bir araçtır. Öncelikle kütüphaneyi pip install fpdf2 komutu ile kurabilirsiniz. Bu kurulumdan sonra, PDF dosyanızı oluşturmaya başlayabilirsiniz.
Verilen Python kod örneği, fpdf kütüphanesinin temel kullanımını göstermektedir. Kod, bir PDF nesnesi oluşturur, otomatik sayfa kırma özelliğini ayarlar, yeni bir sayfa ekler ve son olarak da yazı stili ve boyutu belirleyerek metin ekler. Bu örnek, daha karmaşık PDF belgelerinin temelini oluşturur. Örneğin, bu kod bloğu bir kapak sayfası oluşturmaya uygun şekilde düzenlenebilir. Daha detaylı ve kapsamlı PDF’ler oluşturmak için, kütüphanenin sunduğu diğer fonksiyonları kullanabilirsiniz.
from fpdf import FPDF
# PDF nesnesi oluştur
pdf = FPDF()
# Otomatik sayfa kırma ayarları
pdf.set_auto_page_break(auto=True, margin=15)
# Yeni sayfa ekle
pdf.add_page()
# Yazı stili ve boyutu ayarları
pdf.set_font("Arial", style="", size=12)
# Başlık ekle
pdf.set_font("Arial", style='B', size=16)
pdf.cell(200, 10, "KAJIAN TEORI: TEORI DAN PRAK")
# PDF'i kaydet (Dosya adı belirleyin)
pdf.output("ornek.pdf")
Bu kod, basit bir PDF dosyası oluşturur. Ancak, fpdf kütüphanesi ile çok daha fazlasını yapabilirsiniz. Resim eklemek, tablo oluşturmak, çizgiler çizmek ve daha birçok özellik, kütüphanenin sunduğu geniş fonksiyon yelpazesi sayesinde mümkündür. Kütüphanenin resmi dokümantasyonuna buradan ulaşabilirsiniz. Daha kapsamlı projeler için, örneğin bir rapor oluşturmak veya bir form tasarlamak için bu fonksiyonlardan faydalanabilirsiniz. Bununla birlikte, daha gelişmiş grafikler ve düzenlemeler için, reportlab gibi diğer kütüphanelere yönelebilirsiniz.
Örneğin, bir akademik makale için PDF oluştururken, kapak sayfasını, içerik tablosunu, bölüm başlıklarını ve kaynakçayı otomatik olarak oluşturmak üzere fpdf kütüphanesini gelişmiş fonksiyonlarıyla kullanabilirsiniz. Bu, zaman kazandıran ve daha düzenli bir çalışma sunan etkili bir yöntemdir. Ayrıca, kütüphanenin özellikle metin işlemedeki esnekliği, PDF’lerinizi daha kişiselleştirilebilir hale getirmenize olanak tanır.
Örnek Uygulama – 1
from fpdf import FPDF # PDF oluştur pdf = FPDF() pdf.add_page() pdf.set_auto_page_break(auto=True, margin=15) # Unicode destekleyen font ekle (DejaVu) pdf.add_font(‘DejaVu’, ”, ‘/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf’, uni=True) pdf.add_font(‘DejaVu’, ‘B’, ‘/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf’, uni=True) # Başlık pdf.set_font(“DejaVu”, ‘B’, 16) pdf.cell(0, 10, “2 Haftalık Sınav Öncesi Çalışma Programı”, ln=True, align=”C”) pdf.ln(5) # Ders programı metni pdf.set_font(“DejaVu”, ”, 12) text = “”” Hafta İçi Çalışma (Okul sonrası) Pazartesi (21.10) 17:00-17:50 – Matematik tekrar (Zor konular) 18:00-18:50 – Biyoloji tekrar + test 19:00-19:30 – İngilizce kelime & gramer 20:00-20:30 – Seçmeli ders tekrar Salı (22.10) 17:00-17:50 – Din Kültürü konu tekrarı 18:00-18:50 – Felsefe konu tekrarı 19:00-19:30 – Almanca kelime 20:00-20:30 – Bilişim Teknolojileri kısa tekrar Çarşamba (23.10) 17:00-17:50 – Matematik test çözümü 18:00-18:50 – Tarih tekrar 19:00-19:50 – Edebiyat konu tekrarı + soru 20:00-20:30 – İngilizce tekrar Perşembe (24.10) 17:00-17:50 – Fizik konu tekrarı 18:00-18:50 – Kimya konu tekrarı 19:00-19:50 – Coğrafya tekrar + soru 20:00-20:30 – Güzel Sanatlar kısa tekrar Cuma (25.10) 17:00-17:50 – Matematik test çözümü 18:00-18:50 – Edebiyat tekrar 19:00-19:30 – Beden Eğitimi / kısa tekrar 20:00-20:30 – Eksik dersler tekrarı Cumartesi (26.10) 10:00-11:00 – Fizik konu tekrarı 11:15-12:15 – Fizik soru çözümü 13:30-14:30 – Bilişim konu tekrarı 14:45-15:45 – Bilişim soru çözümü Pazar (27.10) 10:00-10:50 – Fizik tekrar (Sınav öncesi son tekrar) 11:00-11:50 – Bilişim tekrar (Sınav öncesi son tekrar) 12:30-13:00 – İngilizce kelime tekrarı (28.10 sınavı için) Sınav Haftası (27.10 – 6.11) 27.10 – Fizik & Bilişim: Sabah kısa tekrar: Fizik formüller, Bilişim önemli konular 28.10 – İngilizce: 17:00-18:00 kelime, 18:00-18:30 gramer tekrar 30.10 – Coğrafya & Biyoloji: 10:00-11:00 Coğrafya tekrar, 11:15-12:15 Biyoloji soru çözümü, 16:00-16:50 Biyoloji tekrar 31.10 – Almanca & Din: 10:00-10:50 Almanca tekrar, 11:00-11:50 Din kısa tekrar 3.11 – Türk Dili ve Edebiyat: 10:00-10:50 konu tekrarı, 11:00-11:50 soru çözümü 4.11 – Matematik: 10:00-10:50 formüller & zor konular, 11:00-11:50 soru çözümü 5.11 – Tarih & Temel Dini Bilgiler: 10:00-10:50 Tarih tekrar, 11:00-11:50 Temel Dini Bilgiler kısa tekrar 6.11 – Kimya & Felsefe: 10:00-10:50 Kimya tekrar, 11:00-11:50 Felsefe tekrar + test “”” pdf.multi_cell(0, 8, text) # PDF kaydet file_path = “/mnt/data/Sinav_Oncesi_Calisma_Programi.pdf” pdf.output(file_path) file_path
Örnek Uygulama -2
from fpdf import FPDF
from datetime import date
# Bugünün tarihi
today = date.today().strftime(“%d.%m.%Y”)
# PDF sınıfı tanımı
class PDF(FPDF):
def header(self):
self.set_font(“Arial”, “B”, 12)
self.cell(0, 10, “T.C.”, ln=True, align=”C”)
self.cell(0, 10, “……………….. İLKOKULU MÜDÜRLÜĞÜ’NE”, ln=True, align=”C”)
self.ln(10)
def footer(self):
self.set_y(-15)
self.set_font(“Arial”, “I”, 8)
self.cell(0, 10, f”Sayfa {self.page_no()}”, 0, 0, “C”)
# PDF oluşturma
pdf = PDF()
pdf.add_page()
pdf.set_auto_page_break(auto=True, margin=15)
pdf.set_font(“Arial”, “”, 12)
# Dilekçe metni
text = f”””
Konu: Sınıfta Yaşanan Davranış Sorunları Hakkında Ortak Başvuru
Okulunuz …………. sınıfında öğrenim gören çocuklarımız, aynı sınıfta bulunan bir öğrencinin sürekli olarak sergilediği agresif, saldırgan ve zarar verici davranışlardan olumsuz şekilde etkilenmektedir. Bu öğrenci, hem fiziksel hem de duygusal olarak arkadaşlarına zarar vermekte; sınıf ortamında huzursuzluğa neden olmaktadır.
Yaşanan bu durum;
– Çocuklarımızın okula gitmek istememelerine,
– Kendilerini güvende hissetmemelerine,
– Eğitim sürecine odaklanmakta zorluk yaşamalarına
sebep olmaktadır. Bu konuda sınıf öğretmeni ile daha önce görüşmeler yapılmış olsa da, sorun devam etmektedir.
Bu sebeple, okul yönetiminizden;
1. Söz konusu öğrenci için rehberlik servisi desteği alınmasını,
2. İlgili öğrenci ve velisinin yönlendirilerek gerekli psikolojik desteğin sağlanmasını,
3. Sınıf içi güvenliğin temin edilmesi için gerekli önlemlerin ivedilikle alınmasını
talep ediyoruz.
Çocuklarımızın sağlıklı ve güvenli bir eğitim ortamında bulunma hakkının korunmasını, yaşanan bu sorunun kalıcı ve yapıcı bir şekilde çözülmesini önemle rica ederiz.
Saygılarımızla arz ederiz.
Tarih: {today}
“””
pdf.multi_cell(0, 10, text)
# Tablo başlıkları
pdf.ln(10)
pdf.set_font(“Arial”, “B”, 11)
pdf.cell(45, 10, “Veli Adı Soyadı”, 1)
pdf.cell(30, 10, “İmza”, 1)
pdf.cell(45, 10, “Öğrenci Adı”, 1)
pdf.cell(20, 10, “Sınıfı”, 1)
pdf.cell(50, 10, “İletişim (İsteğe bağlı)”, 1)
pdf.ln()
# Boş satırlar
pdf.set_font(“Arial”, “”, 11)
for _ in range(5):
pdf.cell(45, 10, “”, 1)
pdf.cell(30, 10, “”, 1)
pdf.cell(45, 10, “”, 1)
pdf.cell(20, 10, “”, 1)
pdf.cell(50, 10, “”, 1)
pdf.ln()
# PDF dosyasını kaydet
pdf.output(“Toplu_Veli_Dilekçesi.pdf”)
Sonuç olarak, fpdf Python için güçlü ve kullanımı kolay bir PDF oluşturma kütüphanesidir. Basit uygulamalardan karmaşık raporlara kadar geniş bir yelpazede kullanılabilir. Daha fazla bilgi ve destek için kendi web sitemi fatihsoysal.com‘u ziyaret edebilirsiniz. Umarım bu makale, fpdf kütüphanesini daha iyi anlamanıza ve kullanmanıza yardımcı olmuştur.
#Etiketler: Python, fpdf, PDF, PDF Oluşturma, Kütüphane, Programlama, Kod Örneği, Reportlab, Dokümantasyon, Akademik Makale, Rapor Oluşturma

from fpdf import FPDF
# PDF oluştur
pdf = FPDF(format=’A4′)
pdf.set_auto_page_break(auto=True, margin=15)
# Sayfa 1: Başlık
pdf.add_page()
pdf.set_font(“Arial”, ‘B’, 24)
pdf.cell(0, 20, “Özdemir Asaf Sunumu”, ln=True, align=’C’)
pdf.set_font(“Arial”, ”, 16)
pdf.multi_cell(0, 10, “Modern Türk Şiirinin Özgün Sesi\n\nHazırlayan: [Senin İsmin]”, align=’C’)
# Sayfa 2: Hayatı
pdf.add_page()
pdf.set_font(“Arial”, ‘B’, 18)
pdf.cell(0, 10, “Hayatı”, ln=True)
pdf.set_font(“Arial”, ”, 14)
pdf.multi_cell(0, 8,
“• Doğum: 11 Haziran 1923, Ankara\n”
“• Gerçek Adı: Halit Özdemir Arun\n”
“• Eğitim: Galatasaray Lisesi, Kabataş Lisesi\n”
“• Önemli Nokta: Kendi matbaasını kurarak şiirlerini yayımladı\n”
“• Vefat: 28 Ocak 1981, İstanbul\n\n”
“Konuşma Notu:\nHalit Özdemir Arun, 1923’te Ankara’da doğmuş, Galatasaray ve Kabataş’ta eğitim görmüştür. Hayatı boyunca şiirden kopmamış, kendi matbaasını kurarak eserlerini yayımlamıştır.”
)
# Sayfa 3: Edebi Kişiliği
pdf.add_page()
pdf.set_font(“Arial”, ‘B’, 18)
pdf.cell(0, 10, “Edebi Kişiliği”, ln=True)
pdf.set_font(“Arial”, ”, 14)
pdf.multi_cell(0, 8,
“• Temalar: Aşk, yalnızlık, insan ilişkileri, zaman\n”
“• Tarz: Yalın ama derin; kısa dizelerle güçlü etki\n”
“• Öne Çıkan Özellik: Kendine özgü şiir dili, hem duygusal hem düşündürücü\n\n”
“Konuşma Notu:\nÖzdemir Asaf şiirlerinde aşkı, yalnızlığı, insan ilişkilerini ve zamanı işler. Yalın dili sayesinde kısa dizeleri bile derin anlamlar taşır ve okuyucuyu etkiler.”
)
# Sayfa 4: Şiir
pdf.add_page()
pdf.set_font(“Arial”, ‘B’, 18)
pdf.cell(0, 10, “Örnek Şiir: Yalnızlık Paylaşılmaz”, ln=True)
pdf.set_font(“Arial”, ”, 14)
pdf.multi_cell(0, 8,
“Yalnızlık, yaşamda bir an,\n”
“Hep yeniden başlayan..\n”
“Dışından anlaşılmaz.\n\n”
“Ya da kocaman bir yalan,\n”
“Kovdukça kovalayan..\n”
“Paylaşılmaz.\n\n”
“Bir düşünde beni sana ayıran\n”
“Yalnızlık paylaşılmaz\n”
“Paylaşılsa yalnızlık olmaz.\n\n”
“Konuşma Notu:\nŞiiri okurken yavaş ve duygulu oku. “Paylaşılmaz” kelimesinde vurgu yap. Ara ara sınıfa bakarak göz teması kur.”
)
# Sayfa 5: Kapanış ve Tüyolar
pdf.add_page()
pdf.set_font(“Arial”, ‘B’, 18)
pdf.cell(0, 10, “Kapanış ve Sunum Tüyoları”, ln=True)
pdf.set_font(“Arial”, ”, 14)
pdf.multi_cell(0, 8,
“Kapanış Cümlesi:\n”
“Özdemir Asaf, kısa dizeleriyle hem duyguyu hem düşünceyi bir araya getiren, Türk şiirinin özgün ve etkileyici bir sesidir. Dinlediğiniz için teşekkür ederim.\n\n”
“Sunum Tüyoları:\n”
“• Slaytlarda az yazı, görsellerle destek\n”
“• Konuşma notlarını küçük kağıtlardan takip et\n”
“• Şiiri okurken duraklamalarla vurgu yap\n”
“• Göz teması kur ve elleri doğal pozisyonda tut\n”
“• Slayt açarken istersen hafif arka plan müziği ekleyebilirsin”
)
# PDF kaydet
pdf_file = “Ozdemir_Asaf_Sunum_ve_Konusma.pdf”
pdf.output(pdf_file)
print(f”PDF oluşturuldu: {pdf_file}”)
Merhaba, örnek kod için teşekkürler.