1. Łączenie PDF za pomocą PyPDF2
Dlaczego warto łączyć pliki PDF
Po pierwsze, zastanówmy się, dlaczego w ogóle zachodzi potrzeba łączenia plików PDF. Jak się mówi, „Jeden PDF jest lepszy niż dziesięć!”. W pracy możesz mieć raporty, wyniki badań, dokumentację techniczną lub prezentacje, które są dostarczane jako oddzielne pliki. Ciągłe przełączanie się między nimi jest nie tylko niewygodne, ale i ryzykowne — coś można przeoczyć. Dzięki połączeniu wszystkich plików w jeden dokument uprościsz pracę z tymi danymi i stworzysz bardziej uporządkowane podejście do ich analizy i dystrybucji.
Ponadto, łączenie plików PDF jest wygodne na potrzeby późniejszego archiwizowania, tworzenia jednego końcowego raportu lub łączenia wielu wersji dokumentu w celu śledzenia zmian. Krótko mówiąc, możliwości są nieskończone!
Podstawy korzystania z PyPDF2 do łączenia PDF
Na początek skorzystajmy z podstaw pracy z PyPDF2. Stworzymy skrypt, który połączy kilka plików PDF w jeden. Oczywiście kod będzie zawierał komentarze, abyś rozumiał, co się dzieje na każdym etapie.
import PyPDF2
# Tworzymy obiekt PdfMerger z biblioteki PyPDF2
pdf_merger = PyPDF2.PdfMerger()
# Lista naszych dokumentów PDF, które chcemy połączyć
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# Pętla do dodania każdego pliku do obiektu PdfMerger
for file in pdf_files:
pdf_merger.append(file)
# Zapisujemy wynik do nowego pliku PDF
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# Zamykamy obiekt PdfMerger, aby zwolnić zasoby
pdf_merger.close()
print(f"Połączony PDF utworzony: {output_filename}")
Kolejność i struktura połączonego dokumentu
Teraz, gdy nauczyliśmy się łączyć dokumenty PDF, warto pomyśleć o kolejności stron. Pamiętaj, że PyPDF2 dodaje strony w kolejności, w jakiej przekazałeś pliki do metody .append(). Tak więc kolejność w liście pdf_files wpływa na kolejność w końcowym dokumencie.
2. Łączenie pojedynczych stron
Jeśli chcesz nie połączyć całych dokumentów, ale stworzyć końcowy dokument z ich części, musisz skorzystać z klasy PdfWriter zamiast PdfMerger. Oto przykład:
import PyPDF2
# Lista plików PDF, które należy połączyć
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# Tworzenie obiektu PdfWriter do zapisu połączonego PDF
pdf_writer = PyPDF2.PdfWriter()
# Przechodzimy przez każdy plik PDF
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# Dodajemy każdą stronę do PdfWriter
for page_num in range(len(pdf_reader.pages)):
# Tutaj możesz pominąć strony, które nie chcesz dodawać
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Zapisujemy połączony PDF
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Jak działa ten kod?
- Tworzymy listę plików: Lista
pdf_fileszawiera ścieżki do dokumentów PDF, które należy połączyć. - Inicjalizujemy PdfWriter:
pdf_writerjest używany do tworzenia nowego pliku PDF. - Przechodzimy przez każdy plik: Każdy plik PDF jest otwierany w trybie odczytu.
- Dodajemy strony: Wszystkie strony pliku są dodawane do obiektu
pdf_writerza pomocąadd_page(). - Zapisujemy wynik: Po dodaniu wszystkich stron nowy plik PDF jest zapisywany jako
merged_document.pdf.
3. Stylizacja nowego dokumentu
Dodawanie zakładek i spisu treści
Co zrobić, jeśli twój połączony dokument stał się zbyt duży i trudno się w nim poruszać? W takiej sytuacji z pomocą przychodzą zakładki! PyPDF2 pozwala dodawać podstawowe zakładki, aby ułatwić nawigację po dokumencie. Dodajmy zakładki dla każdego dokumentu, który łączymy.
pdf_merger = PyPDF2.PdfMerger()
# Indeks strony dla zakładek
page_offset = 0
for file in pdf_files:
# Czytamy bieżący dokument
pdf_reader = PyPDF2.PdfReader(file)
# Dodajemy dokument do PdfMerger
pdf_merger.append(file)
# Dodajemy zakładkę z nazwą pliku
pdf_merger.add_bookmark(file, page_offset)
# Aktualizujemy przesunięcie stron
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
Ten prosty trik pomoże ci zachować spokój i uniknąć zagubienia się w morzu PDF-ów.
Aktualizacja metadanych połączonego pliku
Po połączeniu możesz dodać lub zmienić metadane dokumentu, takie jak autor, tytuł i słowa kluczowe.
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Dodanie metadanych
pdf_writer.add_metadata({
"/Title": "Połączony dokument",
"/Author": "Jan Kowalski",
"/Subject": "Raport sprzedaży"
})
# Zapisanie połączonego pliku
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Ten kod dodaje metadane, które pomogą identyfikować i uporządkować dokument.
GO TO FULL VERSION