Son Güncelleme: 29 Ocak, 2025

Bu makalede, Python kullanarak PDF dosyalarıyla nasıl çalışabileceğinizi göstereceğiz. Bunun için pypdf kütüphanesini kullanacağız.
pypdf kütüphanesini kullanarak Python’da aşağıdaki işlemleri nasıl gerçekleştirebileceğinizi göstereceğiz:
- PDF’lerden metin çıkarma
- PDF sayfalarını döndürme
- Birden fazla PDF’yi birleştirme
- PDF’leri ayrı dosyalara bölme
- PDF sayfalarına filigran ekleme
Not: Bu makale birçok değerli detayı içeriyor, bu yüzden sizi en çok ilgilendiren bölümlere atlayabilirsiniz! İçerik kolaylıkla gezilecek şekilde düzenlenmiştir, böylece size en ilgili olan konulara hızlıca odaklanabilirsiniz.

Örnek Kodlar
Bu makalede kullanılan tüm örnek kodları, aşağıdaki bağlantıdan indirebilirsiniz. Kodlar, giriş ve çıkış dosyalarını içermektedir.
pypdf Kurulumu
pypdf’i yüklemek için komut terminalinizde veya komut isteminde aşağıdaki komutu çalıştırabilirsiniz:
pip install pypdf
Not: Yukarıdaki komut büyük-küçük harfe duyarlıdır.
1. Python Kullanarak Bir PDF Dosyasından Metin Çıkarma
Kod Açıklaması
1. PDF Okuyucu Nesnesi Oluşturma
reader = PdfReader(pdf_file)
PdfReader(pdf_file)
PDF dosyasını bir okuyucu nesnesine yükler.- Bu nesne, sayfalara ve içeriklerine erişimi sağlar.
2. Sayfalar Üzerinden Döngü
for page_number, page in enumerate(reader.pages, start=1):
reader.pages
PDF’deki sayfaların bir listesini döndürür.enumerate(..., start=1)
ile 1’den başlayan bir sayfa numarası atanır.
3. Çıkarılan Metni Yazdırma
print(f"Sayfa {page_number}:")
print(page.extract_text())
print("-" * 50) # Okunabilirlik için ayırıcı
page.extract_text()
güncel sayfadan metin içeriğini çıkarır.- Betik çıkarılan metni ve sayfa numarasını yazdırır.
"-" * 50
daha iyi okunabilirlik için bir ayırıcı çizgi (--------------------------------------------------
) basar.
Koddaki Kullanılan Giriş PDF Dosyası
- Giriş Dosyası: İndirme Bağlantısı
Kodun Çıktısı
2. Python Kullanarak PDF Sayfalarını Döndürme
Kod Açıklaması
Kod temelde ilk sayfayı 90° saat yönünde döndürür ve değiştirilmiş PDF’yi diğer sayfaları etkilemeden kaydeder.
1. İhtiyaç Duyulan Sınıfları İçe Aktarma
from pypdf import PdfReader, PdfWriter
PdfReader
: Giriş PDF dosyasını okur.PdfWriter
: Değişikliklerle yeni bir PDF oluşturur.
2. Giriş ve Çıkış Dosya Yollarını Tanımlama
input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
- Betik
input.pdf
dosyasından okur ve değiştirilmiş dosyayırotated_output.pdf
olarak kaydeder.
3. PDF’yi Okuma ve Bir Yazıcı Nesnesi Oluşturma
reader = PdfReader(input_pdf)
writer = PdfWriter()
reader
mevcut PDF’yi yükler.writer
değiştirilmiş sayfaları depolamak için kullanılır.
4. İlk Sayfayı 90 Derece Döndürme
page = reader.pages[0]
page.rotate(90) # 90 derece saat yönünde döndür
writer.add_page(page)
- 1. sayfayı çıkarır, 90 derece döndürür ve yeni PDF’ye ekler.
5. Değişiklik Yapmadan Kalan Sayfaları Ekleme
for i in range(1, len(reader.pages)):
writer.add_page(reader.pages[i])
- Kalan sayfalar arasında gezinir ve bunları olduğu gibi ekler.
6. Yeni PDF’yi Kaydetme
with open(output_pdf, "wb") as file:
writer.write(file)
rotated_output.pdf
dosyasını yazma-ikili modda açar ve yeni PDF’yi kaydeder.
7. Onay Yazdırma
print(f"Döndürülmüş sayfa {output_pdf} olarak kaydedildi")
- Başarı mesajı görüntüler.
Koddaki Kullanılan Giriş PDF’si ve Döndürülen Çıktısı
- Giriş PDF Dosyası: İndirme Bağlantısı
- Döndürülen Çıktı PDF Dosyası: İndirme Bağlantısı
Ekran Görüntüsü
3. Python Kullanarak PDF Dosyalarını Birleştirme
Bu Python betiği, bir dizindeki birden fazla PDF dosyasını PyPDF kütüphanesini kullanarak tek bir PDF’e nasıl birleştirebileceğinizi gösteriyor.
Kod Açıklaması
- Bu betik, belirtilen dizindeki (
pdfs-to-merge
) tüm PDF dosyalarını otomatik olarak tek bir çıktı dosyasında (merged_output.pdf
) birleştirir. - Çıkış dizininin var olup olmadığını kontrol eder ve dosyalar liste sırasına göre eklenir.
- Nihai birleştirilmiş dosya
output-dir
alt dizininde çıktılanır.
Kod Anlatımı
1. Kütüphaneleri İçe Aktarma
import os
from pypdf import PdfReader, PdfWriter
os
: Dosya sistemini okumak ve dosya yollarını yönetmek gibi işlemler için kullanılır.PdfReader
: Bir PDF dosyasının içeriğini okur.PdfWriter
: Yeni bir PDF dosyası oluşturur ve yazar.
2. Dizin ve Çıktı Dosyasını Tanımlama
directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
directory
: PDF dosyalarının depolandığı klasörü belirtir.output_file
: Birleştirilmiş PDF’nin çıktı yolu ve adını tanımlar.
3. Çıkış Dizinini Var Olmadığında Oluşturma
os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
- Bu, çıkış dizininin varlığını sağlar; yoksa oluşturur.
4. Bir PdfWriter Nesnesi Oluşturma
writer = PdfWriter()
writer
, tüm sayfaları toplamak ve birleştirmek için kullanılır.
5. Dizindeki Tüm PDF Dosyalarını Yinelemek
for file_name in sorted(os.listdir(directory)):
if file_name.endswith(".pdf"):
file_path = os.path.join(directory, file_name)
print(f"Ekleniyor: {file_name}")
- Bu döngü, belirtilen dizindeki tüm dosyalar arasında dolaşır ve
.pdf
uzantılı dosyaları kontrol eder. İşlemi alfabetik sırayla gerçekleştirirsorted()
kullanarak.
6. Her Bir PDF’yi Okuma ve Sayfaları Yazıcıya Eklemek
reader = PdfReader(file_path)
writer.append(reader)
- Her PDF için,
PdfReader
dosyayı okur ve ardından o PDF’deki tüm sayfalarwriter
a eklenir.
7. Birleştirilmiş PDF’yi Bir Çıkış Dosyasına Yazma
output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
writer.write(output_pdf)
- Tüm sayfalar toplandıktan sonra,
writer.write()
birleştirilmiş PDF’yi belirtilen çıkış yoluna yazar.
8. Onay Yazdırma
print(f"Birleştirilmiş PDF şu adrese kaydedildi: {output_path}")
- Kaydedilen birleştirilmiş PDF’nin yeri hakkında bir onay mesajı yazdırır.
Koddaki Kullanılan Giriş PDF Dosyaları ve Birleştirilen Çıktı PDF
- Giriş PDF Dosyaları: İndirme Bağlantısı
- Birleştirilen Çıktı PDF: İndirme Bağlantısı
4. Python Kullanarak Bir PDF’yi Bölme
Kod Açıklaması
Yukarıdaki Python betiği, bir PDF’yi sayfalara ayırarak PyPDF kütüphanesi kullanarak her bir sayfayı ayrı ayrı PDF dosyası haline getirir. İlk olarak çıktı dizininin varlığını kontrol eder, ardından giriş PDF dosyasını okur. Betik, her sayfayı döngüye alır, yeni bir PdfWriter nesnesi oluşturur ve her sayfayı ayrı bir PDF dosyası olarak kaydeder. Çıkış dosyaları sıralı olarak adlandırılır (örneğin, page_1.pdf, page_2.pdf) ve output-dir
klasörüne kaydedilir. Son olarak, her oluşturulan dosya için bir onay mesajı yazdırır ve işlem tamamlandığında bilgi verir.
Koddaki Kullanılan Giriş PDF ve Bölünmüş Çıktı Dosyaları
- Giriş PDF Dosyası: İndirme Bağlantısı
- Bölünmüş Çıkış Dosyaları: İndirme Bağlantısı
5. Python Kullanarak PDF’ye Filigran Ekleme
PyPDF kütüphanesini kullanarak bir PDF dosyasına filigran ekleyebilirsiniz. Bunun için, var olan PDF’ye bir filigran PDF’si bindirilir. Filigran PDF’sinin yalnızca bir sayfası olduğundan emin olun, böylece ana PDF’nin her sayfasına doğru bir şekilde uygulanır.
Kod Açıklaması
Yukarıdaki Python betiği, bir giriş PDF’sini okur, tek sayfalık bir filigran PDF’si çıkarır, filigranı giriş PDF’sinin her sayfasına bindirir ve nihai filigranlanmış PDF’yi kaydeder.
Kod Anlatımı
Her bölümün kısa bir açıklaması
1. İhtiyaç Duyulan Sınıfları İçe Aktarma
from pypdf import PdfReader, PdfWriter
PdfReader
mevcut PDF’leri okumak için kullanılır.PdfWriter
yeni bir PDF oluşturmak ve yazmak için kullanılır.
2. Dosya Yollarını Tanımlama
input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
input_pdf
: Filigran eklenecek olan orijinal PDF.watermark_pdf
: Filigran olarak hizmet veren ayrı tek sayfalık PDF.output_pdf
: Filigranlanmış sayfaları içerecek çıkış dosyası.
3. PDF’leri Okuma
reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
reader
: Giriş PDF’sini okur.watermark
: Filigran PDF’sini okur.
4. Bir Yazıcı Nesnesi Oluşturma
writer = PdfWriter()
- Bu, filigranlanmış nihai PDF’yi oluşturmak için kullanılacak.
5. Filigran Sayfasını Çıkarma
watermark_page = watermark.pages[0]
- Filigran PDF’sinin yalnızca bir sayfa olduğununu varsayar, bu tüm sayfalara bindirilir.
6. Giriş PDF Sayfaları Üzerinden Döngü ve Filigran ile Birleştirme
for page in reader.pages:
# Filigranı mevcut sayfa ile birleştirme
page.merge_page(watermark_page)
# Birleştirilmiş sayfayı yazıcıya ekleme
writer.add_page(page)
input_pdf
her sayfa üzerinde iterasyon yapar.merge_page(watermark_page)
filigranı mevcut sayfanın üzerine bindirir.- Değiştirilen sayfayı
writer
a ekler.
7. Filigranlı PDF’yi Kaydetme
with open(output_pdf, "wb") as output_file:
writer.write(output_file)
- Değiştirilen sayfaları yeni bir PDF dosyasına yazar.
8. Onay Yazdırma
print(f"Filigranlanmış PDF şu adrese kaydedildi: {output_pdf}")
- Onay için çıkış dosyası yolunu yazdırır.
Giriş PDF, Filigran PDF ve Çıkış Filigranlı PDF
- Giriş PDF Dosyası: İndirme Bağlantısı
- Filigran PDF Dosyası: İndirme Bağlantısı
- Çıkış Filigranlı PDF Dosyası: İndirme Bağlantısı
Ekran Görüntüsü
Sonuç
Bu kılavuzda, Python’da metin çıkarma, sayfaları döndürme, birleştirme, bölme ve filigran ekleme gibi temel PDF işlemlerini inceledik. Bu becerilerle, kendi PDF yöneticinizi oluşturabilir ve çeşitli PDF görevlerini verimli bir şekilde otomatikleştirebilirsiniz.