Nowsza PyPdf2 biblioteka ma PdfMerger
klasy, które mogą być używane jak tak.
przykład:
from PyPDF2 import PdfFileMerger
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(open(pdf, 'rb'))
with open('result.pdf', 'wb') as fout:
merger.write(fout)
Sposób append
wydaje się wymagać leniwe obiekt pliku. To znaczy, że nie od razu odczytuje plik. Wydaje się czekać, aż zostanie wywołana metoda write
. Jeśli używasz zakresu o ograniczonym zasięgu (tj. with
) dołącza puste strony do pliku wynikowego, ponieważ plik wejściowy jest w tym momencie zamknięty.
Najprostszym sposobem na uniknięcie tego problemu, jeśli czas życia uchwytu pliku jest problemem, jest przekazywanie ciągów nazw plików w formacie append
i umożliwienie im obsługi cyklu życia pliku.
tj
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")
A teraz https://pypi.python.org/pypi/PyPDF2 który jest następcą projekt PyPDF –
@ Iago-Lito spojrzeć poniżej, aby [to] (https://stackoverflow.com/a/37945454/1540468) odpowiedź. –