PDF dosyalarını toplu olarak yeniden boyutlandırın ve sıkıştırın


15

PDF dosyalarının yığınlarını küçültüp sıkıştırmak için bir yola ihtiyacım var. Bunu Windows'ta yapmayı tercih ederim, ancak daha pürüzsüz bir iş akışı anlamına geliyorsa Linux iyi olurdu.

NitroPDF ve Acrobat gibi bunu yapmanıza izin veren programlar olduğunu biliyorum, ancak korkarım dosyaya göre yapılması gerekecek. Bu programlar da ucuz değil ve sadece bir veya iki özellik kullanabilmem için satın almamayı tercih ederim.

Arka plan bilgisi: Hesaplara giriş için makbuzları ve faturaları dijitalleştirmek için CamScanner kullanıyorum (FreeAgent). CamScanner pdf'lerin tümü A4 boyutundadır ve çok sayfalı olanlar genellikle 2 MB'lık ek sınırını aşar.

Yanıtlar:


15

Burada, Windows, Linux, OS X, vb. İçindeki yerleşik komut dosyası dillerindeki döngülerle kolayca yığınlanabilen bir komut satırı aracı öneriyorum.


ImageMagick PDF'leri destekler ve dönüştürme aracıyla bir resizeseçeneği vardır . Hiç kişisel olarak kullanmadım, ama bununla oynamaya çalışabilirsiniz.

compressSeçeneği de kullanabilirsiniz (burada bir örnek var ):

PDF'yi döndürme

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

Bu, TIFF destekli bir PDF olduğunu varsayar. Yoğunluk parametresi önemlidir, aksi takdirde ImageMagick görüntüyü aşağı örnekler (bazı nedenlerden dolayı). Sıkıştırma seçeneğinin eklenmesi, PDF'nin toplam boyutunun daha küçük kalmasına yardımcı olur ve kalite kaybı olmaz.

Çok sayfalı PDF'ler için kullanmak pdftk, ardından mogrifyher sayfayı yerine dönüştürmek için ImageMagick'ten kullanmak isteyebilirsiniz :

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


PDF dosyalarını ImageMagick ile dönüştürmek için GhostScript'in yüklü olması gerekir.


ImageMagick çok sayfalı PDF'leri dönüştürebilir. mogrifyYerine dönüşecek olsa da convert, kaza durumunda orijinalleri saklayabilmeniz için kullanmanızı tavsiye ederim .


Sağladığınız örnek PDF üzerinde bazı testler yaptım. Bu benim için oldukça iyi çalıştı:

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

Yoğunluk varsayılan olarak 72DPI'dir. Daha yükseğe ayarlayarak daha yüksek çözünürlük ve dolayısıyla kabul edilebilir kalite elde edebiliriz. İyi baktı 150ve biraz daha küçüktü, ancak bir dizi PDF için yiyecek ve içecek sağlamak istiyorsanız 200çalışmalısınız.

JPEG sıkıştırma ya oto bir seviye veya varsayılan seçmeliyim 92bir ölçekte 1için 100birlikte 100iyi olmak. Dakikaya ayarlıyorum 20, bu (okumak için biraz zor biraz fuzzier ve altta küçük metin ama yine de aslen) neredeyse orijinal olarak iyi olarak görünüyor.

Bu seçenekler, 1.7MB örneğinizi okunabilir tutarken 0.5MB'ye indirir . Biraz deney yapabilirsiniz.

Daha küçük bir boyut istiyorsanız (hem dosyanın hem de resmin / PDF'nin) -resize #%, örneğin kullanabilirsiniz -resize 75%. Örnek PDF'nizde, bu, alttaki küçük baskıyı oldukça okunmaz hale getirir.

Alan, özellikle de çok sayfalı PDF'ler için hala darsanız, dosyaları ZIP (veya başka bir) arşivine ekleyerek daha da sıkıştırabilirsiniz. Bu, bu test PDF'sinde dosya boyutunu 0,43 MB'ye düşürdü (JPEG sıkıştırma kalitesini düşürmek çok daha ciddi bir etkiye sahiptir). Ayrıca sahip sayfalar halinde PDF dosyası bölünmüş olabilir pdftkgibi @glallen onun düzenleme önerilen veya diğer ucunda arşivi ve birleştir bölün.

2 MB ayrıca oldukça küçük bir ek sınırlamasıdır, diğer e-posta sağlayıcılarına bakmak isteyebilirsiniz. Bellekten, GMail e-posta başına 10 MB'den fazla sağlar.

Bu seçenekler ve daha fazlası, web sitelerinde tam olarak belgelenmiştir .


Bu mükemmel bir yaklaşım gibi gözüküyor, ancak pdf'lerimin TIFF destekli olduğunu düşünmüyorum. CamScanner önce JPEG fotoğraflar çeker ve ardından dışa aktarmak için PDF'ye dönüştürür. Bu PDF'lerin işlenmesi, sıkıştırma ne olursa olsun blog gönderisinin belirttiği gibi altörneklere benziyor. PDF'den TIFF'e ve sonra tekrar PDF'ye dönüştürmek kaliteyi koruyor gibi görünüyor, ancak dosya boyutunu şişiriyor ve sayfa boyutunu ve yoğunluğunu bozuyor.
Stan

@paganompu Anladığım kadarıyla dosya boyutunu küçültmek istiyorsunuz. Olarak sıkıştırmaya ne dersiniz JPEG? Nasıl ortaya resizeçıktı? Oynatabileceğimiz (hassas olmayan) bir örnek dosyanız var mı? Aşağı örnekleme kabul edilebilir mi?
Bob

JPEG iyi olurdu, ancak çok sayfalı belgeleri yüklemem gerekiyor ve her hesap girişi için yalnızca bir ekim olabilir. Aşağı örnekleme şiddetlidir: bu test belgesi kayıpsız sıkıştırma ile dönüştürüldükten sonra okunamaz .
Stan

@paganompu Biraz kendimi denedim ve cevabı çalışan bir komutla güncelledim. Dosyanızda bir test için buraya bakın .
Bob

Bu komut bir cazibe gibi çalışıyor. Görünüşe göre benim "aşağı örnekleme" ihmal nedeniyle oldu density... Yemin ederim ben talimatları okumak ve takip edebilirsiniz! Şimdi biraz utandım: S Bana yardım etmek için zaman ayırdığınız için teşekkür ederim Bob
Stan

19

Bu nedenle convertImageMagick rasterleştirilmiş PDF üretecek ve birçok insan vektör grafiği ve metni dokunmadan tutmak isteyecek, böylece sadece gömülü görüntüler sıkıştırılacak. Sıkıştırma yapmak için iyi bir alternatif gs, paket ghostscriptkullanım örneğinden kullanmaktır:

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

yukarıdaki komut parametresinde: -dPDFSETTINGS=/ebookönemlidir. 3 değeri olabilir:

-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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.