GNU/Linux >> Znalost Linux >  >> Linux

Dávková změna velikosti a komprimace souborů PDF

Takže convert z ImageMagick vytvoří rastrované PDF a mnoho lidí by mělo zájem zachovat vektorovou grafiku a text nedotčené, takže komprimovány jsou pouze vložené obrázky. Dobrou alternativou ke kompresi je použití gs z balíčku ghostscript příklad použití:

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

ve výše uvedeném parametru příkazu:-dPDFSETTINGS=/ebook je důležité. Může mít 3 hodnoty:

-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)

Navrhuji zde nástroj příkazového řádku, který lze snadno dávkovat pomocí smyček ve vestavěných skriptovacích jazycích ve Windows, Linux, OS X atd.

ImageMagick podporuje PDF a má resize možnost pomocí nástroje pro převod. Osobně jsem to nikdy nepoužil, ale můžete si s tím zkusit pohrát.

Můžete také použít compress možnost (zde je příklad):

Otočit PDF

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

To předpokládá PDF se zálohou TIFF. Parametr hustoty je důležitý, protože jinak ImageMagick převzorkuje obrázek dolů (z nějakého důvodu). Přidání možnosti komprese pomáhá udržet celkovou velikost PDF menší, bez ztráty kvality.

Pro vícestránkové PDF můžete použít pdftk a poté použijte mogrify z ImageMagick převést každou stránku na místo:

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

Chcete-li převádět soubory PDF pomocí ImageMagick, musíte mít nainstalovaný GhostScript.

ImageMagick umí převádět vícestránkové PDF. Zatímco mogrify převede na místě, doporučuji vám použít convert takže si můžete originály ponechat pro případ nehody.

Provedl jsem nějaké testování na vámi poskytnutém ukázkovém PDF. Tohle pro mě fungovalo docela dobře:

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

Výchozí hustota je 72 DPI. Nastavením vyšší můžeme získat vyšší rozlišení a tedy přijatelnou kvalitu. Vypadalo to v pořádku na 150 a byl o něco menší, ale pokud chcete pokrýt řadu souborů PDF, 200 by mělo fungovat.

Komprese JPEG by měla buď automaticky vybrat úroveň, nebo by měla být výchozí 92 na stupnici 1 na 100 s 100 být nejlepší. Nastavení na 20 , vypadá to skoro stejně dobře jako originál (trochu nejasnější a malý text dole je trochu špatně čitelný, ale stejně to bylo původně).

Tyto možnosti vám přinesou 1,7 MB vzorek až na 0,5 MB , při zachování čitelnosti. Můžete trochu experimentovat.

Pokud chcete menší velikost (souboru i obrázku/PDF), můžete použít -resize #% , např. -resize 75% . Na vašem příkladu PDF je však malé písmo ve spodní části do značné míry nečitelné.

Pokud máte stále málo místa, zejména u vícestránkových souborů PDF, můžete soubory dále komprimovat přidáním souborů do archivu ZIP (nebo jiného). Tím se velikost souboru v tomto testovacím PDF snížila na 0,43 MB (snížení kvality komprese JPEG má mnohem drastičtější účinek). Soubor PDF můžete také rozdělit na stránky pomocí pdftk , jak ve své úpravě navrhl @glallen, nebo archiv rozdělit a na druhém konci znovu zkombinovat.

2 MB je také poměrně malý limit pro přílohy, možná se budete chtít podívat na jiné poskytovatele e-mailu. Z paměti poskytuje GMail přes 10 MB na e-mail.

Tyto a další možnosti jsou plně zdokumentovány na jejich webových stránkách.


Linux
  1. 16 příkazů Tar pro kompresi a extrahování souborů v Linuxu

  2. Tar Command v Linuxu (komprimovat a dekomprimovat soubory)

  3. Jak archivovat a komprimovat soubory na Linuxu

  1. Přejmenovat soubory v adresáři?

  2. Sloučit / převést více souborů PDF do jednoho PDF

  3. Dávkové přejmenování souborů v příkazovém řádku a Xargs

  1. Jak komprimovat a dekomprimovat soubory v Linuxu

  2. Komprimujte soubory PDF na Linuxu pomocí Densify

  3. Dávkový převod kódování v souborech