Son Güncelleme: 29 Ocak, 2025

Başlık - Python'da PDF Dosyalarıyla Çalışma

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.

İllüstrasyon - Python'da PDF Dosyalarıyla Çalışma

Ö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ı

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ı

Ekran Görüntüsü Dönüştürülen Sayfanın Python Kullanarak PDF’de 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ştirir sorted() 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 sayfalar writera 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

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ı

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ı writera 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

Ekran Görüntüsü Python Kullanarak Filigran Eklenmiş PDF’nin 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.