Python ile pdf üzerine toplu yazı yazma

python ile PDF Üzerine Yazı Eklemek

Python, PDF dosyalarını işlemek için kullanılan güçlü kütüphanelerle birlikte gelir. Bu kütüphaneler arasında PyPDF2 ve reportlab gibi araçlar, PDF dosyalarına yazı eklemek için idealdir. İşte bu makalede, Python kullanarak PDF dosyalarına nasıl yazı ekleyebileceğinizi adım adım öğreneceksiniz.

Gereksinimler

  1. Python Kurulumu: Python 3.x sürümünü Python.org adresinden indirip kurun.
  2. PyPDF2 Kütüphanesi: PDF dosyalarını işlemek için gerekli olan PyPDF2 kütüphanesini kurmak için terminal veya komut istemcisinde şu komutu çalıştırın:
pip install PyPDF2

reportlab Kütüphanesi: PDF dosyalarına içerik eklemek için reportlab kütüphanesini yüklemek için terminal veya komut istemcisinde şu komutu çalıştırın:

pip install reportlab

Adım 1: PDF Dosyası Oluşturma veya Seçme PDF dosyasına yazı eklemek için ilk adım, üzerine yazı eklemek istediğiniz var olan bir PDF dosyasını seçmek veya yeni bir PDF dosyası oluşturmaktır. Örneğin, mevcut bir PDF dosyasına yazı eklemek için: çalısan bir proje için kod örneğini kullanabilirsiniz. ilgili yazı karakterlerini indirin türkce karakter sorunu yasamamanız için önemli

from PyPDF2 import PdfWriter, PdfReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

def cm_to_points(cm):
    return cm * 28.3465

def add_text_to_pdf(input_pdf, output_pdf, text, y_cm, page_num=0):
    # Orijinal PDF dosyasını oku
    existing_pdf = PdfReader(open(input_pdf, "rb"))
    output = PdfWriter()
    page = existing_pdf.pages[page_num]
    page_width = float(page.mediabox.upper_right[0])  # Decimal'i float'a dönüştür
    page_height = float(page.mediabox.upper_right[1])  # Decimal'i float'a dönüştür

    # Geçici bir PDF dosyası oluştur
    c = canvas.Canvas("temp.pdf", pagesize=(page_width, page_height))
    
    # Koordinatları cm'den point'e çevir
    y = cm_to_points(y_cm)
    
    # Yazı tipini ve boyutunu ayarla
    font_size = 24
    
    # Türkçe karakterleri destekleyen bir TrueType font dosyası yükle
    try:
        pdfmetrics.registerFont(TTFont('ArialUnicodeBold', 'C:/Users/Hac-02/Desktop/python/Arial-Unicode-Bold.ttf'))
        pdfmetrics.registerFont(TTFont('ArialUnicodeRegular', 'C:/Users/Hac-02/Desktop/python/Arial-Unicode-Regular.ttf'))
    except Exception as e:
        print(f"Font loading error: {e}")
        return
    
    # Metnin genişliğini hesapla
    text_width = c.stringWidth(text, 'ArialUnicodeRegular', font_size)
    
    # Metni tam ortalamak için x koordinatını ayarla
    x = (page_width - text_width) / 2.25
    
    # Metni belirlenen koordinatlara yerleştir
    sayin_text = "Sayın "
    name_text = text
    
    c.setFont('ArialUnicodeRegular', font_size)
    c.drawString(x, page_height - y, sayin_text)
    
    c.setFont('ArialUnicodeBold', font_size)
    c.drawString(x + c.stringWidth(sayin_text, 'ArialUnicodeRegular', font_size), page_height - y, name_text)
    
    c.save()

    # Geçici PDF dosyasını oku
    temp_pdf = PdfReader(open("temp.pdf", "rb"))

    # Belirli sayfaya geçici PDF'deki içeriği ekle
    page.merge_page(temp_pdf.pages[0])
    output.add_page(page)

    # Sonucu yeni PDF dosyasına yaz
    with open(output_pdf, "wb") as outputStream:
        output.write(outputStream)

# Kullanım
input_pdf = r"C:\Users\Hac-02\Desktop\python\input.pdf"
texts = ["Ad Soyad", "Mustafa Aylas", "Hakan Akdıman", "Mustafa Yerlikayalar"]
y_cm = 11.10  # y koordinatını cm cinsinden belirleyin

for i, text in enumerate(texts):
    output_pdf = r"C:\Users\Hac-02\Desktop\python\{}.pdf".format(text)
    add_text_to_pdf(input_pdf, output_pdf, text, y_cm)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir