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
- Python Kurulumu: Python 3.x sürümünü Python.org adresinden indirip kurun.
- 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)