Ubah ukuran batch dan kompres file PDF


15

Saya perlu cara untuk memperkecil dan mengkompres kumpulan file PDF. Saya lebih suka melakukan ini pada Windows, tetapi Linux akan baik-baik saja jika itu berarti alur kerja yang lebih lancar.

Saya tahu bahwa ada program seperti NitroPDF dan Acrobat yang memungkinkan Anda untuk melakukan ini, tapi saya khawatir itu harus dilakukan berdasarkan file-per-file. Program-program ini juga tidak murah dan saya lebih suka tidak membelinya hanya supaya saya bisa menggunakan satu atau dua fitur.

Info latar belakang: Saya menggunakan CamScanner untuk mendigitalkan tanda terima dan faktur untuk masuk ke akun (FreeAgent). CamScanner pdf semuanya berukuran A4 dan multi-halaman sering melebihi batas lampiran 2MB.

Jawaban:


15

Saya menyarankan alat baris perintah di sini, yang dapat dengan mudah dikumpulkan dengan loop dalam bahasa skrip bawaan di Windows, Linux, OS X, dll.


ImageMagick mendukung PDF dan memiliki resizeopsi dengan alat konversi . Saya tidak pernah menggunakannya secara pribadi, tetapi Anda dapat mencoba untuk bermain-main dengan itu.

Anda juga dapat menggunakan compressopsi (ada contoh di sini ):

Putar PDF

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf

Ini mengasumsikan PDF yang didukung TIFF. Parameter kepadatan penting karena jika tidak ImageMagick down-sampel gambar (karena alasan tertentu). Menambahkan opsi kompresi membantu menjaga ukuran keseluruhan PDF lebih kecil, tanpa kehilangan kualitas.

Untuk PDF multi-halaman, Anda mungkin ingin menggunakan pdftk, lalu gunakan mogrifydari ImageMagick untuk mengonversi setiap halaman di tempatnya:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf


Untuk mengonversi file PDF dengan ImageMagick, Anda harus menginstal GhostScript .


ImageMagick dapat mengonversi PDF banyak halaman. Meskipun mogrifyakan dikonversi di tempat, saya sarankan Anda menggunakan convertsehingga Anda dapat menyimpan aslinya jika terjadi kecelakaan.


Saya telah melakukan beberapa pengujian pada sampel PDF yang Anda berikan. Ini bekerja dengan baik untuk saya:

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf

Standar kepadatan ke 72DPI. Dengan mengaturnya lebih tinggi kita bisa mendapatkan resolusi yang lebih tinggi dan kualitas yang dapat diterima. Itu terlihat baik-baik saja 150, dan sedikit lebih kecil, tetapi jika Anda ingin memenuhi berbagai PDF 200harus bekerja.

Kompresi JPEG harus baik auto memilih tingkat atau default 92pada skala 1untuk 100dengan 100menjadi yang terbaik. Dengan menyetelnya 20, tampilannya hampir sama bagusnya dengan yang asli (sedikit fuzzier dan teks kecil di bagian bawah agak sulit dibaca, tapi itu aslinya sih).

Opsi-opsi ini membawa sampel 1,7MB Anda ke 0,5MB , sambil tetap dibaca. Anda bisa bereksperimen sedikit.

Jika Anda menginginkan ukuran yang lebih kecil (baik file maupun gambar / PDF), Anda dapat menggunakan -resize #%, mis -resize 75%. Pada contoh Anda PDF, ini membuat cetakan kecil di bagian bawah cukup banyak terbaca.

Jika Anda masih kekurangan ruang, terutama untuk PDF multi-halaman, Anda dapat mengompres lebih lanjut dengan menambahkan file ke arsip ZIP (atau lainnya). Ini membawa ukuran file ke 0.43MB pada tes PDF itu (mengurangi kualitas kompresi JPEG memiliki efek yang jauh lebih drastis). Anda juga dapat membagi file PDF menjadi beberapa halaman dengan pdftk, seperti yang disarankan @glallen dalam editnya, atau membagi arsip dan menggabungkan kembali di ujung lainnya.

2MB juga batas lampiran agak kecil, Anda mungkin ingin melihat ke penyedia email lainnya. Dari memori, GMail menyediakan lebih dari 10MB per email.

Opsi-opsi ini, dan banyak lagi, sepenuhnya didokumentasikan di situs web mereka .


Itu tampak seperti pendekatan yang sangat baik, tetapi saya tidak berpikir pdf saya didukung TIFF. CamScanner pertama-tama mengambil foto JPEG dan kemudian mengonversinya ke PDF untuk diekspor. Memproses file PDF ini memang sepertinya downsample seperti yang ditunjukkan oleh postingan blog, tidak peduli kompresi. Mengubah dari PDF ke TIFF dan kemudian kembali ke PDF tampaknya mempertahankan kualitas tetapi mengembang ukuran file dan mengacaukan ukuran halaman dan kepadatan.
Stan

@ paganompu Seperti yang saya mengerti, Anda ingin mengurangi ukuran file. Bagaimana dengan mengompres JPEG? Bagaimana resizehasilnya? Apakah Anda memiliki file sampel (tidak sensitif) yang dapat kami mainkan? Apakah down-sampling dapat diterima?
Bob

JPEG akan baik-baik saja, tetapi saya perlu mengunggah dokumen multi-halaman dan saya hanya dapat memiliki satu lampiran per entri akun. Downsampling parah: dokumen uji ini tidak dapat dibaca setelah mengkonversi dengan kompresi lossless.
Stan

@ paganompu Saya telah bereksperimen sendiri sedikit, dan saya telah memperbarui jawabannya dengan perintah yang berfungsi. Lihat di sini untuk tes pada file Anda.
Bob

Perintah itu bekerja seperti mantra. Sepertinya "downsampling" saya adalah karena menghilangkan density... Saya bersumpah saya bisa membaca dan mengikuti instruksi! Agak malu sekarang: S Terima kasih telah meluangkan waktu untuk membantu saya Bob
Stan

19

Jadi convertdari ImageMagick akan menghasilkan rasterized PDF dan banyak orang akan tertarik untuk menjaga grafik vektor dan teks tidak tersentuh sehingga hanya gambar yang tertanam dikompres. Jadi alternatif yang baik untuk membuat kompresi menggunakan gsdari ghostscriptcontoh paket penggunaan:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

dalam parameter perintah di atas: -dPDFSETTINGS=/ebookpenting. Ini dapat memiliki 3 nilai:

-dPDFSETTINGS=/screen   (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook    (low quality, 150 dpi images)
-dPDFSETTINGS=/printer  (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default  (almost identical to /screen)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.