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 append
phươ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 merge
phương pháp PdfMerger
cho 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 append
phương pháp có thể được coi như một merge
nơ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 append
và merge
, chuyển một bộ giá trị trong biểu mẫu (start, stop[, step])
(như range
hà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ỏ, PdfFileMerger
phươ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 PdfFileMerger
nó 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 with
từ 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.