1. Podział dokumentu PDF na strony
Podstawy podziału dokumentów PDF za pomocą PyPDF2
PyPDF2 dostarcza klasę PdfReader do otwierania plików PDF i odczytywania stron, oraz klasę PdfWriter do zapisywania stron w nowym dokumencie PDF. Do podziału dokumentu na osobne strony używa się add_page() w PdfWriter, aby zapisać potrzebne strony w osobnych plikach.
Zapisywanie każdej strony PDF jako osobny dokument
Ten kod dzieli dokument, tworząc osobny plik PDF dla każdej strony oryginalnego pliku.
import PyPDF2
# Otwieramy plik PDF
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Przechodzimy przez każdą stronę
for page_num in range(len(pdf_reader.pages)):
pdf_writer = PyPDF2.PdfWriter()
# Wyciągamy stronę i dodajemy do nowego PDF
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Zapisujemy bieżącą stronę jako osobny plik PDF
output_filename = f"page_{page_num + 1}.pdf"
with open(output_filename, "wb") as output_file:
pdf_writer.write(output_file)
print("Każda strona została zapisana jako osobny plik.")
W tym przykładzie każda strona oryginalnego dokumentu jest zapisywana w osobnym pliku page_1.pdf, page_2.pdf i tak dalej.
2. Wyodrębnianie zakresu stron
Czasami trzeba zapisać nie każdą stronę, a określony zakres stron, na przykład od 1 do 5. W tym celu można podać konkretne strony w pętli.
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
pdf_writer = PyPDF2.PdfWriter()
# Definiujemy zakres stron, na przykład strony od 1 do 5
start_page = 1
end_page = 5
for page_num in range(start_page - 1, end_page): # Numeracja stron zaczyna się od 0
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Zapisujemy zakres stron jako nowy PDF
with open("pages_1_to_5.pdf", "wb") as output_file:
pdf_writer.write(output_file)
print("Zakres stron został pomyślnie zapisany.")
Ten kod wyciąga strony od 1 do 5 i zapisuje je w pliku pages_1_to_5.pdf.
3. Zapisywanie kilku zakresów
Jeśli trzeba wyodrębnić kilka zakresów stron i zapisać je w osobnych plikach, można użyć funkcji, która przyjmuje początek i koniec zakresu.
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"Strony {start_page}–{end_page} zapisane w {output_pdf}")
# Użycie funkcji do wyodrębniania różnych zakresów
save_page_range("sample.pdf", "section_1.pdf", 1, 3)
save_page_range("sample.pdf", "section_2.pdf", 4, 6)
Ten kod tworzy dwie funkcje do zapisywania stron od 1 do 3 i od 4 do 6, które są zapisywane w section_1.pdf i section_2.pdf odpowiednio.
4. Masowe przetwarzanie dokumentów PDF
Automatyzacja podziału PDF dla wszystkich stron w folderze
Jeśli trzeba podzielić każdą stronę wszystkich dokumentów PDF w określonym folderze, można stworzyć skrypt, który automatycznie przetworzy każdy plik.
import PyPDF2
import os
# Ścieżka do folderu z plikami PDF
folder_path = "pdf_folder"
# Automatyczny podział wszystkich plików PDF w folderze
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)
# Dzielenie pliku na osobne strony
for page_num in range(len(pdf_reader.pages)):
pdf_writer = PyPDF2.PdfWriter()
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Tworzenie nazwy pliku wyjściowego
output_filename = f"{filename[:-4]}_page_{page_num + 1}.pdf"
output_path = os.path.join(folder_path, output_filename)
# Zapis strony
with open(output_path, "wb") as output_file:
pdf_writer.write(output_file)
print("Wszystkie strony z każdego pliku PDF w folderze zostały pomyślnie zapisane.")
Ten skrypt automatycznie przechodzi przez każdy plik PDF w folderze pdf_folder i zapisuje każdą stronę jako osobny PDF z nazwą <nazwa_pliku>_page_<numer>.pdf.
5. Kiedy podzielić pliki PDF?
Jak powiedział pewien wielki programista, który po wielu godzinach kodowania, tak jak my, często zadaje sobie pytanie: "Po co?". Rozdział dokumentów PDF może być potrzebny w różnych sytuacjach:
- Wyróżnienie kluczowych stron: Podziel się tylko potrzebnymi stronami, nie wysyłając całej "Wojny i Pokoju" kolegom.
- Tworzenie zestawień: Zapisz ważne rozdziały z różnych dokumentów w jednym pliku do celów edukacyjnych lub zawodowych.
- Archiwizacja: Przechowuj archiwum ważnych danych strona po stronie, aby nie gubić cennych informacji wśród zbędnych stron.
Tu na pomoc przychodzi nasz bohater PyPDF2, który ułatwi ci życie!
6. Przypadkowe trudności i jak ich unikać
Pracując z dokumentami PDF, możesz napotkać pewne trudności. Na przykład numeracja stron w PyPDF2 zaczyna się od zera, więc pamiętaj, aby to uwzględnić przy podawaniu potrzebnych stron. Nie ma nic gorszego niż tracenie czasu na wyciąganie nie tych stron, które są potrzebne!
Ponadto przy pracy z otwartymi i zamkniętymi plikami, upewnij się, że wszystkie close() są wywołane poprawnie. Jedna niezamknięta książka może stać się problemem, zwłaszcza jeśli to podręcznik do Oracle.
Zastosowanie w prawdziwym życiu
Użycie tej metody jest przydatne nie tylko do przetwarzania osobistych dokumentów. Na przykład, jeśli pracujesz w firmie prawniczej i musisz szybko przygotować określone sekcje z rozległej sprawy do sądu, podział PDF na części może znacznie zaoszczędzić czas i wysiłek.
Podobne techniki mogą być również używane do przygotowywania materiałów edukacyjnych, wyróżniania ważnych sekcji z raportów technicznych i wielu innych. Prawdziwa magia polega na tym, jak łatwo można zautomatyzować te rutynowe zadania!
GO TO FULL VERSION