Gabungkan Banyak File PDF Jadi Satu

Menggabungkan lebih dari satu file PDF dapat menggunakan software (gratis maupun berbayar) ataupun layanan online. Pekerjaan yang sederhana namun dapat merepotkan, terutama jika file yang dimiliki berjumlah ratusan, seperti file soal yang dimiliki John, atau terdapat limitasi pada teknologi yang digunakan.

Kode Lima Detik

import os
import PyPDF2

directory = "D:\\folder\\berisi\\banyak\\file\\untuk\\digabung\\"
newfilename = "D:\\folder\\berisi\\banyak\\file\\untuk\\nama_file_baru.pdf"
os.chdir(directory)

# untuk menggabungkan file pdf
pdfMerger = PyPDF2.PdfFileMerger()

# pada tiap file di folder
for filename in os.listdir("."):
    # jika nama file berakhiran .pdf
    if filename.endswith('.pdf'):
        # cetak nama file agar dapat diinvestigasi jika terjadi kesalahan pada salah satunya
        print(filename)
        # gabung file
        pdfMerger.append(PyPDF2.PdfFileReader(filename, strict=False))
        
# proses penggabungan        
pdfMerger.write(newfilename)
pdfMerger.close()

Latar Belakang

Setelah berhasil mencetak banyak file pdf sekaligus John baru sadar jika ada opsi lain, yaitu menggabungkan semua file menjadi satu kemudian mencetaknya.

Banyak file pdf di atas akan digabungkan menjadi satu file seperti gambar di bawah ini. Perbedaan ukuran, dari semula masing-masing berukuran ratusan KB, menjadi puluhan MB, adalah pertanda banyaknya halaman yang dimuat dalam file.

Untuk mencapai tujuan tersebut John dapat menggunakan desktop software editor pdf gratis, atau menggunakan layanan online. Masing-masing pilihan memiliki kelebihan dan tantangannya sendiri.

Tantangan yang dihadapi John saat menggunakan dua pilihan tersebut antara lain.

  • Beberapa desktop software gratis membatasi jumlah file atau halaman yang dapat digabungkan.
  • Layanan online mengharuskan untuk mengupload data ke server mereka dan mengunduh hasilnya, hal tersebut tentu membutuhkan koneksi internet.
  • Pilihan layanan online akan langsung dieliminasi John jika file pdf yang dimilikinya mengandung data yang sensitif. John mungkin paranoia, tapi harus diakui jika tak ada jaminan pemilik layanan tidak menyimpan dan membaca (menyalahgunakan) file yang mereka proses.

Lagipula John sedang senang membuat sendiri solusi untuk permasalahannya, jadi kenapa tidak membuat sendiri program sederhana untuk menggabungkan banyak file pdf menjadi satu?

Tugas program tersebut tidak muluk, hanya menggabungkan semua file pdf pada suatu folder menjadi satu file.


Teknologi Digunakan

PyPDF2 digunakan oleh John untuk melakukan tugas “mudah” ini. Library ini menyediakan beberapa fitur yang dapat digunakan untuk memodifikasi pdf, salah satunya sesuai kebutuhan, yaitu menggabungkan (merge) banyak file.


Langkah Kerja

Instalasi

Jika belum pernah melakukan instalasi, PyPDF2 dapat diinstal dengan perintah di bawah ini, pada terminal/command prompt/console.

pip install pypdf2

Dapat pula langsung melalui Jupyter Notebook.

Kode

Impor library

import os
import pypdf2

Library os akan digunakan untuk membaca folder berisi file pdf.

Folder

directory = "D:\\basangdata\\gabung_pdf\\gs3\\"
newfilename = "D:\\basangdata\\gabung_pdf\\baru.pdf"
os.chdir(directory)

Variabel directory memuat nama folder berisi banyak file pdf yang akan digabungkan. Variabel newfilename adalah file baru berisi gabungan semua file pada folder yang telah disebutkan sebelumnya.

Fungsi chdir dari library os dipanggil agar python berpindah ke folder yang dimuat pada variabel directory.

Gabung

# untuk menggabungkan file pdf
pdfMerger = PyPDF2.PdfFileMerger()

# pada tiap file di folder
for filename in os.listdir("."):
    # jika nama file berakhiran .pdf
    if filename.endswith('.pdf'):
        # cetak nama file agar dapat diinvestigasi jika terjadi kesalahan pada salah satunya
        print(filename)
        # gabung file
        pdfMerger.append(PyPDF2.PdfFileReader(filename, strict=False))
        
# proses penggabungan        
pdfMerger.write(newfilename)
pdfMerger.close()

Fungsi PdfFileMerger disediakan untuk menggabungkan file pdf menjadi satu.

variabel filename berisi nama file pada folder. Karena pada kode sebelumnya python telah berpindah ke folder pada variabel directory maka fungsi listdir cukup diisi dengan “.”.

Kode di atas hanya memproses file yang berakhiran .pdf, hal tersebut mungkin dengan memanfaatkan fungsi bawaan python, yaitu endswith.

Saat menggabungkan file, perlu dilakukan pembacaan file menggunakan PdfFileReader.


Catatan

Hidup selalu memberikan kejutan, kali ini berupa file pdf yang tidak dapat diproses oleh kode di atas.

Salah satu file pdf menyebabkan kesalahan dengan pesan kesalahan seperti pada gambar. Solusi cepat bagi John adalah memindahkan file tersebut dari folder yang diproses. Untungya hanya satu file saja.

John membandingkan file tersebut dengan file lain, semua adalah file dengan label (SECURED).

Bagi John mencari tahu lebih dalam secara teknis, kenapa satu file tersebut berbeda dengan lainnya, akan menghabiskan banyak sumber daya. Karena itu ia mencukupkan diri dengan solusi memindahkan file yang bermasalah.

Namun John merasa perlu mempertimbangkan teknologi lain jika di masa depan menghadapi masalah yang sama lagi. Salah satu alternatif yang cukup menjanjikan adalah menggunakan library PyMuPDF.


Simpulan

Proses otomasi pekerjaan menggunakan komputer dapat menggunakan software yang telah tersedia di pasaran (gratis maupun berbayar), layanan online, atau jika memungkinkan, membuat sendiri. Masing-masing dengan kelebihan dan tantangannya sendiri.


Referensi


Cover Photo by Linda Eller-Shein from Pexels

Leave a Reply

Your email address will not be published. Required fields are marked *