Można użyć PyPdf2 s PdfMerger
klasę.
Łączenie plików
Możesz po prostu połączyć pliki za pomocą append
metody.
from PyPDF2 import PdfFileMerger
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("result.pdf")
merger.close()
Jeśli chcesz, możesz przekazać uchwyty plików zamiast ścieżek do plików.
Łączenie plików
Jeśli chcesz dokładniejszej kontroli scalania, istnieje merge
metoda PdfMerger
, która pozwala określić punkt wstawiania w pliku wyjściowym, co oznacza, że możesz wstawić strony w dowolnym miejscu pliku. append
Metoda może być traktowane jako merge
gdzie punkt wstawiania jest koniec pliku.
na przykład
merger.merge(2, pdf)
Tutaj wstawiamy cały plik PDF do wyjścia, ale na stronie 2.
Zakresy stron
Jeśli chcesz kontrolować, które strony są dołączane z określonego pliku, możesz użyć pages
argumentu słowa kluczowego append
i merge
, przekazując krotkę w formularzu (start, stop[, step])
(podobnie jak zwykła range
funkcja).
na przykład
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Jeśli określisz nieprawidłowy zakres, otrzymasz plik IndexError
.
Uwaga: aby uniknąć pozostawienia otwartych plików, po PdfFileMerger
zapisaniu scalonego pliku należy wywołać metodę s close. Zapewnia to terminowe zamykanie wszystkich plików (wejściowych i wyjściowych). Szkoda, że PdfFileMerger
nie jest zaimplementowany jako menedżer kontekstu, więc możemy użyć with
słowa kluczowego, uniknąć jawnego zamknięcia i uzyskać łatwe zabezpieczenie wyjątków.
Możesz również spojrzeć na pdfcat
skrypt dostarczony jako część pypdf2. Możesz potencjalnie całkowicie uniknąć konieczności pisania kodu.
Github PyPdf2 zawiera również przykładowy kod demonstrujący łączenie.