Công việc của mình thường xuyên phải gộp nhiều trang PDF nhỏ thành 1 file PDF, bình thường thì việc gộp file PDF này có thể được thực hiện bằng một số công cụ online như smallpdf, hoặc 1 số phần mềm xử lý pdf của Adobe. Tuy nhiên, mình không muốn file pdf của mình bị upload lên các dịch vụ online, mà cài cả 1 phần mềm Adobe cần phải trả phí vào chỉ để gộp PDF thì mình cũng không muốn, vậy nên trong bài này mình sẽ chia sẻ với các bạn cách chúng ta có thể tự tạo ra một công cụ dòng lệnh (CLI – tool) để có thể gộp nhiều trang PDF thành 1 tài liệu PDF bằng Python. Các hướng dẫn trong bài này mình thực hiện trên hệ điều hành MacOS, với hệ điều hành Windows, hoặc các hệ điều hành khác, thì cũng tương tự.
Xem nhanh
Có rất nhiều thư viện để xử lý PDF trong Python, trong bài này, mình dùng PyPDF2, để cài đặt, chúng ta sử dụng dòng lệnh sau trong ứng dụng Terminal của MacOS:
pip install PyPDF2
Sau khi cài đặt thành công thì chúng ta có thể chuyển qua bước tiếp theo
Chúng ta có thể lưu đoạn code sau đây trong một file Python, mình lưu ở file join.py tại đường dẫn
/Users/user_name/Documents/PythonScripts
Các bạn có thể lưu code ở một đường dẫn khác tuỳ ý các bạn. Đoạn code như sau:
import argparse
from PyPDF2 import PdfFileMerger
parser = argparse.ArgumentParser(description="Merge multiple pdfs into one pdf")
parser.add_argument('-o','--output')
parser.add_argument('-i','--input', nargs="+")
args = parser.parse_args()
pdfs = args.input
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write(args.output)
merger.close()
Cách sử dụng công cụ này như sau, trong cửa sổ Terminal, bạn có thể gõ theo cú pháp sau đây
python /Users/user_name/Documents/PythonScripts -o duong_dan_toi_file_ket_qua.pdf -i file1.pdf file2.pdf file3.pdf
Trong cú pháp trên, sau “-o” bạn để tên của file đã được gộp, sau “-i” bạn để danh sách các file con sẽ gộp.
Vì nếu viết hết đường dẫn tới các files cần gộp sẽ rất dài, vậy nên khi sử dụng, mình thường chuyển thư mục hiện tại tới thư mục chứa các file pdf cần gộp, sau đó có thể tham chiếu tới các file bởi tên file mà không cần đường dẫn đầy đủ.
Như vậy, trong bài viết này, chúng ta đã có thể tạo ra được một công cụ đơn giản phục vụ cho công việc gộp file PDF thành 1 file. Chúc các bạn ứng dụng tốt vào công việc.
Các bạn có thể học thêm nhiều kỹ thuật sử dụng Python để tương tác với Excel, tạo ra nhiều công cụ điều khiển Excel, tương tác với các phần mềm trên Web trong khoá học Lập trình tương tác python Excel – chìa khoá tối ưu công việc của Thanh.