1. PDF sənədin səhifələrə bölünməsi
PyPDF2 vasitəsilə PDF sənədlərin səhifələrə bölünməsinin əsasları
PyPDF2 PdfReader
sinfini PDF-faylları açmaq və səhifələri oxumaq üçün, həmçinin PdfWriter
sinfini səhifələri yeni PDF-sənədə yazmaq üçün təmin edir. Sənədi ayrı-ayrı səhifələrə bölmək üçün add_page()
istifadə olunur PdfWriter
-də, lazım olan səhifələri ayrı-ayrı fayllara saxlamaq üçün.
Hər PDF səhifəsini ayrıca sənəd kimi saxlamaq
Bu kod sənədi bölür və ilkin fayldakı hər səhifə üçün ayrıca PDF-fayl yaradır.
import PyPDF2
# PDF-faylını açırıq
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Hər səhifəni keçirik
for page_num in range(len(pdf_reader.pages)):
pdf_writer = PyPDF2.PdfWriter()
# Səhifəni çıxarırıq və yeni PDF-yə əlavə edirik
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Cari səhifəni ayrıca PDF-fayl kimi saxlayırıq
output_filename = f"page_{page_num + 1}.pdf"
with open(output_filename, "wb") as output_file:
pdf_writer.write(output_file)
print("Hər səhifə ayrıca fayl kimi saxlanılıb.")
Bu nümunədə ilkin sənədin hər səhifəsi page_1.pdf
, page_2.pdf
və s. olaraq ayrı-ayrı fayllara saxlanılır.
2. Səhifə diapazonunun çıxarılması
Bəzən hər səhifəni yox, müəyyən bir diapazonu saxlamaq lazım olur, məsələn, 1-dən 5-ə qədər. Bunun üçün dövr içində spesifik səhifələri göstərə bilərik.
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
pdf_writer = PyPDF2.PdfWriter()
# Səhifə diapazonunu müəyyən edirik, məsələn, 1-dən 5-ə qədər səhifələr
start_page = 1
end_page = 5
for page_num in range(start_page - 1, end_page): # Səhifələrin nömrələnməsi 0-dan başlayır
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Səhifə diapazonunu yeni PDF kimi saxlayırıq
with open("pages_1_to_5.pdf", "wb") as output_file:
pdf_writer.write(output_file)
print("Səhifə diapazonu uğurla saxlanıldı.")
Bu kod 1-dən 5-ə qədər səhifələri çıxarır və onları pages_1_to_5.pdf
faylına saxlayır.
3. Bir neçə aralığın saxlanması
Əgər bir neçə səhifə aralığını çıxarmaq və onları ayrı fayllarda saxlamaq lazımdırsa, başlanğıc və son səhifəni qəbul edən bir funksiyadan istifadə etmək olar.
import PyPDF2
def save_page_range(input_pdf, output_pdf, start_page, end_page):
with open(input_pdf, "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
pdf_writer = PyPDF2.PdfWriter()
for page_num in range(start_page - 1, end_page):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
with open(output_pdf, "wb") as output_file:
pdf_writer.write(output_file)
print(f"Səhifələr {start_page}–{end_page} {output_pdf} olaraq saxlanıldı")
# Fərqli aralıqları çıxarmaq üçün funksiyadan istifadə
save_page_range("sample.pdf", "section_1.pdf", 1, 3)
save_page_range("sample.pdf", "section_2.pdf", 4, 6)
Bu kod 1-dən 3-ə qədər və 4-dən 6-ya qədər səhifələri saxlamaq üçün iki funksiya yaradır, hansılar ki, section_1.pdf
və section_2.pdf
adları ilə saxlanılır.
4. PDF sənədlərinin kütləvi işlənməsi
Bütün qovluqdakı PDF-lərin avtomatik bölünməsi
Əgər göstərilən qovluqdakı bütün PDF sənədlərinin hər bir səhifəsini bölmək lazımdırsa, hər bir faylı avtomatik işləyəcək script yarada bilərsiniz.
import PyPDF2
import os
# PDF faylların olduğu qovluğun yolu
folder_path = "pdf_folder"
# Qovluqdakı bütün PDF faylların avtomatik bölünməsi
for filename in os.listdir(folder_path):
if filename.endswith(".pdf"):
file_path = os.path.join(folder_path, filename)
with open(file_path, "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Faylı ayrılmış səhifələrə bölmək
for page_num in range(len(pdf_reader.pages)):
pdf_writer = PyPDF2.PdfWriter()
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Çıxış faylının adını yaratmaq
output_filename = f"{filename[:-4]}_page_{page_num + 1}.pdf"
output_path = os.path.join(folder_path, output_filename)
# Səhifənin yadda saxlanması
with open(output_path, "wb") as output_file:
pdf_writer.write(output_file)
print("Qovluqdakı hər bir PDF faylın bütün səhifələri uğurla yadda saxlanıldı.")
Bu script pdf_folder
adlı qovluqdakı hər bir PDF faylını avtomatik olaraq oxuyur və hər səhifəni <fayl_adı>_page_<nömrə>.pdf
adıyla ayrıca PDF kimi yadda saxlayır.
5. PDF faylları nə zaman bölmək lazımdır?
Bir dəfə böyük bir developer belə demişdi - uzun kod yazandan sonra həmin developer kimi, bizdə də tez-tez belə bir sual yaranır: "Niyə?". PDF sənədlərinin bölünməsi müxtəlif hallarda lazım ola bilər:
- Açar səhifələrin seçimi: Yalnız lazım olan səhifələri paylaş, "Hərb və Sülh" kitabını bütünlüklə iş yoldaşlarına göndərməyə ehtiyac yoxdur.
- Seçmələr yaratmaq: Müxtəlif sənədlərdən vacib bölümləri bir sənəddə saxla, həm oxuma, həm də iş üçün.
- Arxivləşdirmə: Vacib məlumatları səhifə-səhifə saxla ki, dəyərli info lazımsız səhifələr arasında itməsin.
Bu zaman bizim qəhrəman - PyPDF2 səhnəyə çıxır və həyatı asanlaşdırır!
6. Təsadüfi çətinliklər və onların qarşısını necə almaq olar
PDF sənədləri ilə işləyərkən bəzi çətinliklərlə qarşılaşa bilərsiniz. Məsələn, PyPDF2-də səhifələrin nömrələnməsi sıfırdan başlayır, buna görə də lazım olan səhifələri seçərkən bunu nəzərə alın. Axı, ehtiyacınız olmayan səhifələri çıxarmağa vaxt sərf etməkdən daha pis bir şey yoxdur!
Həmçinin, açıq və bağlanmış fayllarla işləyərkən, bütün close()
çağırışlarının düzgün yerinə yetirildiyinə əmin olun. Bağlanmamış bir kitab, xüsusən də bu Oracle dərsliyidirsə, başınıza bəla gətirə bilər.
Real həyat tətbiqləri
Bu metodu istifadə etmək yalnız şəxsi sənədlərin işlənməsi üçün deyil, həm də faydalıdır. Məsələn, əgər hüquq firmasındasınızsa və məhkəmə üçün böyük işin müəyyən hissələrini sürətli şəkildə hazırlamalısınızsa, PDF sənədini hissələrə bölmək vaxtınızı və səylərinizi xeyli qənaət edə bilər.
Bu cür texnikalar tədris materiallarının hazırlanması, texniki hesabatlardan mühüm bölmələrin ayrılması və çox şey üçün istifadə oluna bilər. Əsl sirr, bu adi işləri nə qədər asan avtomatlaşdırmağın mümkünlüyündədir!
GO TO FULL VERSION