Można użyć PyPdf2 s PdfMergerklasę.
Łączenie plików
Możesz po prostu połączyć pliki za pomocą appendmetody.
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 mergemetoda PdfMerger, która pozwala określić punkt wstawiania w pliku wyjściowym, co oznacza, że możesz wstawić strony w dowolnym miejscu pliku. appendMetoda może być traktowane jako mergegdzie 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ć pagesargumentu słowa kluczowego appendi merge, przekazując krotkę w formularzu (start, stop[, step])(podobnie jak zwykła rangefunkcja).
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 PdfFileMergerzapisaniu scalonego pliku należy wywołać metodę s close. Zapewnia to terminowe zamykanie wszystkich plików (wejściowych i wyjściowych). Szkoda, że PdfFileMergernie jest zaimplementowany jako menedżer kontekstu, więc możemy użyć withsłowa kluczowego, uniknąć jawnego zamknięcia i uzyskać łatwe zabezpieczenie wyjątków.
Możesz również spojrzeć na pdfcatskrypt 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.