Kode Python Membuat Password PDF pada Banyak File Sekaligus (Batch Encryption)

Keamanan dokumen digital adalah prioritas utama di era ini. Bayangkan Anda adalah seorang HRD yang perlu mengirimkan slip gaji ke 100 karyawan, atau Guru yang membagikan rapor siswa. Mengirim file PDF sensitif tanpa kata sandi (password) adalah tindakan berisiko tinggi.
Namun, memberikan password pada 100 file PDF satu per satu menggunakan software PDF Reader biasa akan memakan waktu berjam-jam dan melelahkan.
Solusinya? Otomatisasi dengan Python.
Dalam tutorial ini, kita akan membuat script Python sederhana namun powerful yang mampu mengunci (enkripsi) ratusan file PDF dalam satu folder sekaligus hanya dalam hitungan detik. Script ini aman, gratis, dan dijalankan secara lokal di komputer Anda (tanpa perlu upload ke website pihak ketiga yang berpotensi mencuri data).
Persiapan: Library pypdf
Kita akan menggunakan library pypdf, standar industri untuk manipulasi PDF di Python yang ringan dan cepat.
Buka Terminal atau Command Prompt (CMD) Anda, lalu instal library ini:
Bashpip install pypdf
Skenario Masalah
Anda memiliki folder bernama Slip_Gaji yang berisi file PDF:
Agus.pdfBudi.pdfCitra.pdf
Tujuannya adalah membuat folder baru Slip_Gaji_Terproteksi di mana semua file tersebut sudah terkunci dengan password yang sama (misalnya: “Rahasia2024”).
Kode Script: The Bulk PDF Encryptor
Salin kode di bawah ini dan simpan dengan nama kunci_pdf.py. Letakkan file script ini di luar folder PDF yang akan diproses.
Pythonimport os
from pypdf import PdfReader, PdfWriter
def enkripsi_batch_pdf(folder_sumber, folder_tujuan, password):
# 1. Membuat folder tujuan jika belum ada
if not os.path.exists(folder_tujuan):
os.makedirs(folder_tujuan)
print(f"[INFO] Folder '{folder_tujuan}' berhasil dibuat.")
# 2. Mendapatkan daftar file di folder sumber
files = [f for f in os.listdir(folder_sumber) if f.lower().endswith('.pdf')]
if not files:
print(f"[ERROR] Tidak ada file PDF di folder '{folder_sumber}'")
return
print(f"Ditemukan {len(files)} file PDF. Memulai proses enkripsi...\n")
# 3. Loop memproses setiap file
for filename in files:
path_asal = os.path.join(folder_sumber, filename)
path_hasil = os.path.join(folder_tujuan, filename)
try:
# Membaca PDF Asli
reader = PdfReader(path_asal)
writer = PdfWriter()
# Menyalin semua halaman dari file asli ke writer baru
for page in reader.pages:
writer.add_page(page)
# 4. MENERAPKAN ENKRIPSI
# algorithm="AES-256" adalah standar enkripsi terkuat saat ini
writer.encrypt(password, algorithm="AES-256")
# Menyimpan file hasil enkripsi
with open(path_hasil, "wb") as f_out:
writer.write(f_out)
print(f"[SUKSES] {filename} berhasil dikunci.")
except Exception as e:
print(f"[GAGAL] {filename} error: {e}")
print("\n[SELESAI] Semua file telah diproses.")
# --- KONFIGURASI ---
if __name__ == "__main__":
# Ganti nama folder sesuai kebutuhan Anda
input_folder = "Slip_Gaji"
output_folder = "Slip_Gaji_Terproteksi"
# Password yang akan digunakan
kata_sandi = "RahasiaPerusahaan2024"
enkripsi_batch_pdf(input_folder, output_folder, kata_sandi)
Bedah Kode: Mengapa Script Ini “High Value”?
Agar artikel ini memberikan wawasan teknis yang mendalam (disukai Google), mari kita bedah fitur keamanannya:
1. algorithm="AES-256" (Standar Militer)
Banyak tutorial lama menggunakan enkripsi standar RC4 yang sudah usang dan mudah diretas. Dalam script di atas, kita secara eksplisit menggunakan AES-256. Ini adalah standar enkripsi tingkat tinggi yang digunakan oleh pemerintah dan perbankan. Dokumen Anda dijamin aman dari upaya brute-force sederhana.
2. Logika Non-Destructive
Perhatikan bahwa script ini TIDAK menimpa file asli.
Script membaca file dari folder_sumber, memberinya password, lalu menyimpannya sebagai file baru di folder_tujuan. Ini adalah praktik pemrograman yang baik (Safe Coding). Jika terjadi kesalahan saat proses enkripsi, file asli Anda tetap aman dan utuh.
3. Penanganan Ekstensi (.lower().endswith('.pdf'))
Script ini cukup cerdas untuk hanya memproses file PDF. Fungsi .lower() memastikan file dengan ekstensi .PDF (huruf besar) atau .pdf (huruf kecil) tetap terdeteksi.
Studi Kasus: Password Dinamis (Level Lanjutan)
Bagaimana jika Anda ingin setiap file memiliki password yang berbeda? Misalnya, passwordnya adalah NIK karyawan?
Anda bisa memodifikasi script di atas dengan sedikit logika tambahan.
- Ubah nama file PDF menjadi format NIK, misal:
12345_Agus.pdf. - Ambil NIK dari nama file (
filename.split('_')[0]). - Gunakan NIK tersebut sebagai parameter password di
writer.encrypt(nik).
Fitur ini sangat dicari oleh departemen Payroll dan HRD perusahaan.
Kesimpulan
Automasi keamanan dokumen adalah keterampilan mahal di dunia kerja. Dengan script Python sederhana ini, Anda telah menghemat waktu berharga dan meningkatkan standar keamanan data pribadi atau perusahaan Anda.
Anda tidak perlu lagi bergantung pada tool online yang meragukan privasinya. Semua proses terjadi di dalam komputer Anda, cepat, aman, dan gratis.
Selamat mencoba, dan jaga kerahasiaan password Anda!