Hoşgeldiniz!

Kayıt olarak, topluluğumuzun diğer üyeleri ile görüşebilir, paylaşabilir ve özel mesaj gönderebileceksiniz.

Şimdi Kayıt Ol!

Python ile pdf split (bölmek)

snow

Administrator
Yönetici
Katılım
11 Ağu 2019
Mesajlar
14
Beğeniler
12
#1
Python ile pdf dosyalarındaki sayfaları istediğiniz bir düzende başka bir pdf dosyasına kaydetmeyek için PyPDF2 kütüphanesine ihtiyacınız bulunmaktadır.

Kod:
pip install PyPDF2
Komutunu çalıştırarak python için ihtiyaç duyduğunuz kütüphaneleri indirebilirsiniz.
İndirme işlemi sonrasında kütüphanemizi basit bir örnek ile tanıyalım.

Aşağıdaki örnekte pdftest.py isimli bir python dosyamız ve ornek.pdf isimli 143 sayfalık herhangi bir pdf dosyasından herhangi iki sayfa arasını ayırma işlemi yapılacaktır.

pdftest.py dosyamıza kütüphanemizi dahil ederek işleme başlıyoruz.
Python:
from PyPDF2 import PdfFileReader, PdfFileWriter
import os
daha sonra kullanacağımız pdf dosyasını öğrenmek için input ile kullanıcıdan dosya ismi alıyoruz.
Python:
path = str(input("Pdf File: "))
Aslında bu şekilde direk dosyanın ismini isteyebiliriz ancak dosya isimleri yanlış yazılmaya daha müsaittir. Buyüzden yukarıdaki girişi geliştirerek aşağıdaki şekilde kontrollerimizi geliştirerek böyle bir dosya yoksa olmayan dosyanın ismini ekrana yaz ve dosyanın bulunamadığını belir dedik.

Python:
path = None
while path == None:
    path = str(input("Pdf File: "))
    if not os.path.exists(path):
        print("{} is not found".format(path))
        path = None
Dosyayı farklı bir isim ile kaydetmek için pdf dosyasının gerçek yolunu ve ismini ayrı ayrı değişkenlere kaydediyoruz.
Python:
path = os.path.realpath(path) # gerçek konumunu al
filename = os.path.basename(path) # dosya ismini al
savepath = os.path.dirname(path) # gerçek konumdan dosya ismini ayır ve kayıt klasörünü al
Seçtiğimiz pdf dosyasında hangi iki sayfanın arasını alacağımızı kullanıcıdan input komutu ile alıyoruz. Ancak farklı veya hatalı bir değer girmesine karşılık bir döngü içerisinde kontrollerimizi sağlıyoruz.
Python:
startpage = 0
endpage = 0
while True:
    try:
        startpage = int(input("Start page number: "))
        endpage = int(input("End page number: "))

        if startpage > endpage:
            raise Exception("The end page cannot be larger than the start page")

        break
    except Exception as ex:
        print(ex)
İhtiyaç duyduğumuz bütün bilgileri kullanıcıdan istedik. Sıra programı tamamlamak için son adım olan pdf'i işlemekte.

Python:
pdf = PdfFileReader(path,'rb')
Yukarıdaki komut ile pdf isimli değişkene kullanıcının belirttiği pdf dosyasını PdfFileReader sınıfına rb(read bytes) yöntemi ile açıp okuma işlemi yaptık.
Python:
writer = PdfFileWriter()
writer isimli değişken üzerine PdfFileWriter sınıfını başlatıp kaydettik.

Python:
for i in range(startpage, endpage+1):
    writer.addPage(pdf.getPage(i))
Ardından kullanıcının ayırmak istediği sayfaları sırayla writer üzerine for döngüsü ile bir bir tanımladık.

Python:
with open("{}/out_{}".format(savepath,filename), 'wb') as out:
    writer.write(out)
ve son olarak kaydettiğimiz tüm sayfaları seçtiğimiz pdf dosyasının yanına isminin başına out_ ekleyerek kaydettik.

Dosyamız burada sonlandı.
Programın kısa hikayesi aşağıdaki gibidir.
Kullanıcı programı başlattı.
test.pdf isimli dosyanın 10 ile 20.sayfaları arasını bölmek istediğini belirtti.
program test.pdf dosyasını okudu ve istediği sayfaları out_test.pdf isimli dosyanın içerisine kaydetti. :)
from PyPDF2 import PdfFileReader, PdfFileWriter
import os
path = None
while path == None:
path = str(input("Pdf File: "))
if not os.path.exists(path):
print("{} is not found".format(path))
path = None
path = os.path.realpath(path) # gerçek konumunu al
filename = os.path.basename(path) # dosya ismini al
savepath = os.path.dirname(path) # gerçek konumdan dosya ismini ayır ve kayıt klasörünü al

startpage = 0
endpage = 0
while True:
try:
startpage = int(input("Start page number: "))
endpage = int(input("End page number: "))
if startpage > endpage:
raise Exception("The end page cannot be larger than the start page")
break
except Exception as ex:
print(ex)

pdf = PdfFileReader(path,'rb')
writer = PdfFileWriter()
for i in range(startpage, endpage+1):
writer.addPage(pdf.getPage(i))
with open("{}/out_{}".format(savepath,filename), 'wb') as out:
writer.write(out)
 
Üst Alt