Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Python có thể giúp bạn mã hóa và giải mã file PDF dễ dàng. Dưới đây là chi tiết cách mã hóa và giải mã file PDF bằng Python.
Vấn nạn bị xâm phạm các tập tin riêng tư khá phổ biến ngày nay. Vì thế, để đảm bảo chỉ những người được phép mới có thể truy cập nội dung file, bạn có thể mã hóa chúng trước khi gửi đi.
Để làm theo các bước dưới đây, bạn cần có kiến thức cơ bản về Python.
Trên một terminal Mac hoặc giao diện dòng lệnh Windows, chạy lệnh sau để cài thư viện PyMuPDF:
pip install PyMuPDF
Thư viện này sẽ giúp bạn mở và chỉnh sửa file PDF.
Khi đã hoàn tất cài đặt PyMuPDF, bạn đã sẵn sàng lập trình.
Nhập mô đun Fitz của thư viện PyMuPDF. Điều này sẽ cho phép bạn gọi và dùng các hàm mà nó hỗ trợ.
Import fitz
Bạn sẽ dùng fitz để mở, mã hóa, giải mã và lưu PDF.
Tạo một hàm kiểm tra mức độ mã hóa của PDF và trả về một giá trị boolean.
def pdf_is_encrypted(file):
pdf = fitz.Document(file)
return pdf.isEncrypted
Bạn sẽ dùng hàm này sau đó, để giúp chương trình tự động quyết định xem mã hóa hay giải mã PDF nhập vào.
Tạo một hàm để mã hóa PDF đầu vào. Hàm này cho bạn biết PDF đã được mã hóa hay chưa. Nếu chưa, nó sẽ mã hóa file bằng thuật toán AES-256. Đây là thuật toán mã hóa mạnh nhất mà fitz cung cấp. Cuối cùng, nó sẽ lưu PDF được mã hóa.
def encrypt_pdf_file(pdf, password, outfile, file):
if not pdf_is_encrypted(file):
perm = int(
# Ensure everyone with the PDF
# can access it
fitz.PDF_PERM_ACCESSIBILITY
| fitz.PDF_PERM_PRINT # permits printing
| fitz.PDF_PERM_COPY # permits copying
| fitz.PDF_PERM_ANNOTATE # permits annotations
)
# eEncryption algorithm
encrypt_meth = fitz.PDF_ENCRYPT_AES_256
pdf.save(outfile, encryption=encrypt_meth, user_pw=password,
permissions=perm)
if pdf.save:
print("PDF encrypted")
Hàm này lưu PDF được mã hóa vào đường dẫn file bạn chuyển đi trong đối số tệp ngoài.
Tạo một hàm giải mã. Hàm này đầu tiên sẽ kiểm tra xem file nhập vào có được mã hóa hay không. Nếu được mã hóa, nó sẽ nhắc người dùng nhập mật khẩu. Sau đó, nó sẽ thử mở PDF bằng mật khẩu được cung cấp. Nếu password đúng, fitz sẽ giải mã PDF. Sau đó, nó sẽ lưu nội dung của PDF được giải mã vào file PDF chưa được bảo vệ.
def decrypt_pdf(file):
if pdf_is_encrypted(file):
password = input('Enter pdf password : ')
pdf = fitz.open(file)
if pdf.authenticate(password):
pdf.save('decrypted.pdf')
if pdf.save:
print("PDF decrypted")
else:
print('Incorrect Password')
Code này lưu PDF chưa được bảo vệ vào thư mục làm việc hiện tại.
Sau khi giải mã file protected.pdf thành công, nó sẽ được lưu dưới dạng decrypted.pdf.
Tạo một hàm chính sẽ kiểm soát luồng chương trình. Nó sẽ lưu đường dẫn của PDF nhập vào, gọi hàm mã hóa, giải mã và chuyển các tham số nhập vào.
def main():
# replace the file path with either that of
# the pdf to be encrypted or decrypted
file = 'sample.pdf'
pdf = fitz.open(file)
password = 'pass123'
encrypt_pdf_file(pdf, password, 'protected.pdf', file)
decrypt_pdf(pdf)
Để thay đổi tên của file PDF được mã hóa, thay thế protected.pdf bằng tên bạn muốn nhưng nhớ giữ nguyên định dạng .pdf.
Đảm bảo phương thức chính (main) chạy trước:
if __name__ == '__main__':
main()
Code này kiểm tra xem tập lệnh có đang được chạy dưới dạng chương trình chính chứ không phải mô-đun đã nhập hay không. Nếu là chương trình chính, nó sẽ gọi hàm main.
Tạo chương trình mã hóa/giải mã PDF trong Python là một dự án thú vị nhưng thử thách. Nó giúp bạn rèn luyện kỹ năng Python và làm chủ kỹ năng xử lý tập tin bằng ngôn ngữ này.
Nguồn tin: Quantrimang.com
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn