Memecah atau menggabungkan file PDF di Linux caranya sangat mudah. Ada tiga tools yang akan kita gunakan:

  • pdftk
  • Ghostscript
  • ImageMagick

Menggunakan pdftk

Agar bisa menggunakan pdftk, kita install terlebih dahulu. Contoh berikut untuk distro Ubuntu, tinggal disesuaikan saja dengan distro yang anda gunakan.

sudo apt-get update
$ sudo apt install pdftk

Kemudian, untuk mengekstrak hanya halaman 1,2,4 dan 5 dari pdf sumber, gunakan perintah berikut:

$ pdftk filelama.pdf cat 1 2 4 5 output filebaru.pdf

cat adalah perintah untuk mengekstrak/ split pdf, dan output adalah keyword yang diikuti dengan nama file hasil ekstraksi.

Kita juga bisa menggunakan range saat mengekstrak pdf:

$ pdftk filelama.pdf cat 1-2 4-5 output filebaru.pdf

Untuk mensplit halaman pdf satu persatu:

$ pdftk myoldfile.pdf burst

output yang dihasilkan secara default akan diberi nama pg_0001.pdf, pg_0002.pdf dan seterusnya.

Untuk menggabung dua file pdf, gunakan perintah berikut:

$ pdftk pg_0001.pdf pg_0002.pdf pg_0004.pdf pg_0005.pdf output filebaru.pdf

Menggunakan Ghostscript

Terkadang saat menggunakan pdftk kita menemukan error namun tidak mendapatkan penjelasan lebih jauh, misalnya seperti ini:

$ pdftk filebermasalah.pdf cat 1-4  output filebaru.pdf
Unhandled Java Exception:
Unhandled Java Exception:
java.lang.NullPointerException
   at gnu.gcj.runtime.NameFinder.lookup(libgcj.so.12)
   at java.lang.Throwable.getStackTrace(libgcj.so.12)
   at java.lang.Throwable.stackTraceString(libgcj.so.12)
   at java.lang.Throwable.printStackTrace(libgcj.so.12)
   at java.lang.Throwable.printStackTrace(libgcj.so.12)

Install dulu Ghostscript:

$ sudo apt install ghostscript

Jika kita gunakan Ghostscript, akan muncul pesan yang lebih detail, dan tampak ada proses error yang “repaired or ignored”:

$ gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=1 
-dLastPage=4 -sOutputFile=filebaru.pdf filelama.pdf
GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
**** Warning: considering '0000000000 XXXXX n' as a free entry.
**** Warning: considering '0000000000 XXXXX n' as a free entry.
**** Warning: considering '0000000000 XXXXX n' as a free entry.
Processing pages 1 through 4.
Page 1
Loading NimbusSanL-Regu font from /usr/share/fonts/type1/gsfonts/n019003l.pfb... 4287624 2669241 2475832 1154775 3 done.
Loading NimbusSanL-Bold font from /usr/share/fonts/type1/gsfonts/n019004l.pfb... 4328616 2778664 2516200 1192102 3 done.
Loading NimbusMonL-Regu font from /usr/share/fonts/type1/gsfonts/n022003l.pfb... 4371912 2946486 2677672 1350807 3 done.
Page 2
Loading NimbusSanL-BoldItal font from /usr/share/fonts/type1/gsfonts/n019024l.pfb... 4431472 2877228 2738224 1120988 3 done.
Loading NimbusSanL-ReguItal font from /usr/share/fonts/type1/gsfonts/n019023l.pfb... 4471488 2998784 2758408 1209901 3 done.
Page 3
Page 4
**** This file had errors that were repaired or ignored.
**** The file was produced by: 
**** >>>> iText 1.4.5 (by lowagie.com) <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.

Menggunakan ImageMagick

Install dulu ImageMagick:

$ sudo apt install imagemagick

Gabungkan dua pdf:

$ convert file1.pdf file2.pdf output.pdf

Gabungkan subset dari dua pdf (ingat, ImageMagic menggunakna zero-based page number):

$ convert file1.pdf[0] file2.pdf[0-1,3] output.pdf