Bạn có thể sử dụng lớp PyPdf2 s PdfMerger.
Kết nối tệp
Bạn có thể chỉ cần nối các tệp bằng cách sử dụng appendphương pháp này.
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()
Bạn có thể chuyển các trình xử lý tệp thay vì đường dẫn tệp nếu muốn.
Hợp nhất tệp
Nếu bạn muốn kiểm soát chi tiết hơn việc hợp nhất, có một mergephương pháp PdfMergercho phép bạn chỉ định điểm chèn trong tệp đầu ra, nghĩa là bạn có thể chèn các trang vào bất kỳ đâu trong tệp. Các appendphương pháp có thể được coi như một mergenơi điểm chèn là kết thúc của tập tin.
ví dụ
merger.merge(2, pdf)
Ở đây chúng tôi chèn toàn bộ pdf vào đầu ra nhưng ở trang 2.
Phạm vi trang
Nếu bạn muốn kiểm soát những trang nào được nối từ một tệp cụ thể, bạn có thể sử dụng pagesđối số từ khóa của appendvà merge, chuyển một bộ giá trị trong biểu mẫu (start, stop[, step])(như rangehàm thông thường ).
ví dụ
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Nếu bạn chỉ định một phạm vi không hợp lệ, bạn sẽ nhận được IndexError.
Lưu ý: cũng để tránh các tệp bị bỏ ngỏ, PdfFileMergerphương thức s close nên được gọi khi tệp đã hợp nhất đã được ghi. Điều này đảm bảo tất cả các tệp được đóng (đầu vào và đầu ra) một cách kịp thời. Thật tiếc khi PdfFileMergernó không được triển khai như một trình quản lý ngữ cảnh, vì vậy chúng tôi có thể sử dụng withtừ khóa, tránh lệnh gọi gần rõ ràng và nhận được một số ngoại lệ an toàn dễ dàng.
Bạn cũng có thể muốn nhìn vào pdfcat tập lệnh được cung cấp như một phần của pypdf2. Bạn có thể tránh hoàn toàn việc phải viết mã.
PyPdf2 github cũng bao gồm một số mã ví dụ minh họa việc hợp nhất.