Menggabungkan beberapa file PDF dapat dilakukan dengan menggunakan library mPDF. Namun performanya sangat buruk dan butuh waktu lama hingga terkendala dengan max_execution_time
yang umumnya hanya 30 detik.
Setelah browsing saya menemukan tools pada linux yang dapat menggabungkan file pdf dengan cepat. Tools tersebut adalah pdfunite
yang terdapat pada package poppler-utils
. Ia dapat menggabungkan ribuan file sekaligus dengan cepat. Performanya sangat berbeda jauh bila dibandingkan dengan library pdf pada php.
Install pdfunite
pdfunite merupakan tools yang terdapat pada package poppler-utils, jadi untuk menginstallnya anda dapat menggunakan perintah dibawah ini:
sudo apt-get install poppler-utils
Setelah terinstall anda siap untuk menggunakan perintah pdfunite melalui terminal. Syntaxnya kurang lebih seperti dibawah ini:
/usr/bin/pdfunite <filepdf_1>...<filepdf_n> <output.pdf>
agar lebih mudah, tempatkan semua file pdf anda di dalam satu folder dan gunakan perintah dibawah ini untuk menggabungkan semua file pdf pada folder tersebut:
/usr/bin/pdfunite ./*.pdf output.pdf
Masalah Urutan
Dengan perintah diatas anda sudah dapat menggabungkan file pdf, namun output yang dihasilkan mungkin tidak ter-urut dengan baik. Kombinasi tools find dan sort akan membantu anda mengatasi masalah ini. Contohnya
/usr/bin/pdfunite $(find *.pdf | sort -V) output.pdf
Implementasi ke PHP
pdfunite merupakan shell script yang dijalankan melalui terminal. Bahasa pemrograman PHP menyediakan fungsi shell_exec
untuk mengeksekusi shell script. Potongan kode nya kurang lebih seperti dibawah ini:
$command = "cd ${dir_path} &&" . ' /usr/bin/pdfunite $(find *.pdf | sort -V) output.pdf';
shell_exec( $command );
Leave a Reply