Langsung ke konten utama
PulsarKit

Mengompres PDF sesuai ukuran yang diinginkan, bukan sekadar “lebih kecil”

Kompresi PDF biasa memberi ukuran berapa pun yang kebetulan keluar. Mencapai angka yang pas untuk batas email atau batas unggahan adalah pekerjaan lain.

Oleh PulsarKit · ·

Tingkat kualitas dan ukuran target adalah dua permintaan yang berbeda

Memilih tingkat kualitas kompresi (ringan, disarankan, atau agresif), lalu melihat berapa ukuran hasilnya, adalah cara kerja sebagian besar kompresi, dan cara ini tepat bila yang dipentingkan adalah kualitas. Lain halnya bila file harus berada di bawah angka tertentu, misalnya dua puluh lima megabyte untuk lampiran email atau dua megabyte untuk batas unggahan formulir web. Satu pengaturan kualitas yang tetap tidak bisa tahu sebelumnya berapa ukuran yang akan dihasilkannya pada dokumen tertentu. Mencapai angka yang pas berarti bekerja mundur dari ukuran, bukan maju dari pilihan kualitas. Pertanyaannya berubah dari “seberapa bagus tampilannya nanti” menjadi “seberapa kecil file ini harus dibuat”, dan pertanyaan kedua butuh proses yang berbeda untuk menjawabnya.

Mencapai angka tertentu berarti mencari, bukan menebak sekali

Satu-satunya cara yang andal untuk mencapai ukuran target adalah pencarian, dan itulah yang dijalankan mode “Ukuran target” di Kompres PDF: coba satu pengaturan kualitas, ukur file yang sudah disusun ulang, lalu naikkan atau turunkan kualitasnya sesuai seberapa jauh hasilnya meleset. Langkah ini diulang beberapa kali, alih-alih memilih satu angka dan berharap hasilnya cocok. Pada setiap percobaan, semua gambar di dokumen menjalani encode ulang penuh. Karena itu, kompresi dengan target seperti ini jelas memakan waktu lebih lama daripada satu kali proses dengan kualitas tetap. Waktu tambahan itu adalah harga untuk mencapai angka tertentu, bukan angka perkiraan. Proses yang masuk akal berhenti begitu hasilnya berada sedikit di bawah target dan tidak mengecilkan file lebih jauh dari yang perlu, karena mencari lebih lanjut dari titik itu hanya menghabiskan waktu tanpa memperbaiki apa pun yang penting.

Sebagian target memang di bawah batas yang mungkin dicapai secara fisik

Teks, font tersemat, dan gambar vektor di dalam PDF punya bobot tetap yang tidak bisa dikurangi oleh kompresi gambar sekuat apa pun, karena tidak satu pun dari konten itu adalah gambar raster. Bila font dan teks dokumen saja sudah melebihi ukuran yang Anda minta, tidak ada pengaturan kualitas yang akan pernah mencapainya. Mengukur bobot file tanpa gambar sama sekali, sebelum pencarian dimulai, menunjukkan batas bawah itu sejak awal, bukan setelah beberapa menit percobaan yang sia-sia. Mengetahui ukuran terkecil yang bisa dicapai sejak awal jauh lebih baik daripada alat yang meleset dari target tanpa memberi tahu dan menyerahkan file yang lebih besar dari yang diminta.

Teks tetap tajam, berapa pun ukuran targetnya

Dalam kompresi seperti ini, hanya gambar raster yang tersemat di dokumen yang menjalani encode ulang. Teks asli yang bisa dipilih tidak pernah disentuh, seagresif apa pun ukuran targetnya. Jadi, kontrak yang sebagian besar berisi teks tetap sama tajamnya dan tetap bisa dicari pada ukuran terkecil yang bisa dicapai, sama seperti pada ukuran terbesarnya. Pengecualiannya adalah halaman hasil scan. Karena seluruh halaman itu sendiri adalah satu gambar, target ukuran yang agresif memang membuat tulisan di halaman itu jelas kurang tajam, sebab di bawah halaman hasil scan tidak ada lapisan teks terpisah yang bisa dibiarkan utuh.

Bila ukuran terkecil yang mungkin pun masih kurang kecil

Sebuah dokumen bisa punya lebih banyak halaman berisi konten raster daripada yang dimungkinkan oleh target ukuran mana pun, dan pada titik itu jawabannya bukan angka yang lebih kecil. Jawabannya adalah jumlah halaman yang lebih sedikit. Memisahkan file dengan Pisahkan PDF, lalu mengompres setiap bagian ke target secara terpisah, berhasil karena batas bawah ukuran itu bertambah seiring jumlah halaman. Menghapus halaman yang tidak diperlukan untuk keperluan yang dibatasi ukurannya, dengan Hapus halaman, juga berhasil. Mengubah dokumen yang sarat teks menjadi teks biasa lebih dulu dengan PDF ke teks adalah opsi ketiga yang lebih drastis, yang layak diketahui untuk kasus langka ketika cara tadi pun belum cukup.

Arti angkanya: DPI, kualitas, dan batas bawah

Dua angka menentukan bobot setiap gambar di PDF. Resolusi menentukan berapa banyak piksel yang harus disimpan: halaman A4 hasil scan 300 DPI berisi sekitar 8,7 juta piksel, halaman yang sama pada 150 DPI seperempatnya, dan pada 96 DPI kira-kira sepersepuluhnya. Kualitas JPEG menentukan berapa banyak byte yang boleh disimpan setiap piksel: 85 mendekati aslinya, sedangkan 45 membuat foto jelas kurang tajam. Resolusi adalah tuas yang lebih kasar, jadi mode “Ukuran target” di Kompres PDF menurunkan kualitas lebih dulu, tetapi hanya sampai 45, kualitas tingkat “File terkecil”: alih-alih turun lebih rendah lagi, mode ini menurunkan resolusi.

Pencarian dimulai pada kualitas 65, lalu mencoba 45, keduanya pada resolusi penuh. Bila file masih terlalu berat, resolusi gambar dibatasi menjadi 300, 150, 96, dan akhirnya 72 DPI, setiap langkah dengan kualitas 45. Langkah yang tidak akan mengubah gambar di dokumen ini dilewati, dan hanya pada 72 DPI kualitas turun sampai 20. Pada langkah pertama ketika file sudah muat, kualitas dinaikkan lagi mendekati target, dan pencarian berhenti begitu ukuran file berada di antara 90 dan 100 persen dari target, setelah paling banyak delapan kali penyusunan ulang. Jadi, permintaan 1 MB biasanya menghasilkan file 0,9 sampai 1 MB. Kualitas 20 pada 72 DPI adalah batas bawah praktis: batas ini diukur begitu file dibuka dalam mode “Ukuran target”, dan target yang lebih rendah dikunci.

Alat yang dipakai di artikel ini

Baca berikutnya