CodeGym /Kursy /Python SELF PL /Podział stron dokumentu PDF do zapisania osobnych części

Podział stron dokumentu PDF do zapisania osobnych części

Python SELF PL
Poziom 43 , Lekcja 4
Dostępny

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.

Python

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.

Python

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.

Python

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.

Python

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!

1
Zadanie
Python SELF PL, poziom 43, lekcja 4
Niedostępne
Podział jednej strony dokumentu PDF
Podział jednej strony dokumentu PDF
2
Zadanie
Python SELF PL, poziom 43, lekcja 4
Niedostępne
Wydzielenie zakresu stron
Wydzielenie zakresu stron
3
Zadanie
Python SELF PL, poziom 43, lekcja 4
Niedostępne
Zapisanie kilku zakresów stron
Zapisanie kilku zakresów stron
4
Zadanie
Python SELF PL, poziom 43, lekcja 4
Niedostępne
Automatyczne przetwarzanie folderu z dokumentami PDF
Automatyczne przetwarzanie folderu z dokumentami PDF
1
Ankieta/quiz
Odczytywanie plików PDF za pomocą PyPDF2, poziom 43, lekcja 4
Niedostępny
Odczytywanie plików PDF za pomocą PyPDF2
Odczytywanie plików PDF za pomocą PyPDF2
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION