web-dev-qa-db-ja.com

バッチサイズ変更と圧縮PDFファイル

PDFファイルのバッチをサイズ縮小および圧縮する方法が必要です。Windowsでこれを実行したいのですが、Linuxがスムーズなワークフローを意味するのであれば問題ありません。

これを可能にするNitroPDFやAcrobatなどのプログラムがあることは知っていますが、ファイルごとに実行する必要があると思います。これらのプログラムも安くはなく、1つまたは2つの機能を使用できるようにするためだけに購入したくないのです。

背景情報:私はCamScannerを使用して、アカウント(FreeAgent)へのエントリの領収書と請求書をデジタル化します。 CamScannerのPDFはすべてA4サイズで、複数ページのPDFは添付ファイルの制限である2MBを超えることがよくあります。

15
Stan

ここでは、Windows、Linux、OS Xなどの組み込みスクリプト言語のループで簡単にバッチ処理できるコマンドラインツールを提案しています


ImageMagick PDFをサポートし、 resize オプションとその convert ツールがあります。個人的に使ったことはありませんが、いじってみてください。

compress オプションを使用することもできます(例があります here ):

PDFを回転する

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

これは、TIFFベースのPDFを想定しています。それ以外の場合はImageMagickが(何らかの理由で)画像をダウンサンプリングするため、密度パラメーターは重要です。圧縮オプションを追加すると、PDFの全体的なサイズが小さくなり、品質が低下することはありません。

複数ページのPDFの場合、 pdftk を使用し、次にImageMagickの mogrify を使用して、各ページを所定の位置に変換します。

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

PDF ImageMagickでファイルを変換するには、 GhostScript をインストールする必要があります。


ImageMagickは複数ページのPDFを変換できます。 mogrifyはそのまま変換されますが、convertを使用して、万が一の場合に元のファイルを保持しておくことをお勧めします。


提供されたサンプルPDFでいくつかのテストを行いました。これは私にとって非常にうまくいきました:

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

密度のデフォルトは72 DPIです。これを高く設定すると、解像度が高くなり、許容できる品質になります。 150で問題なく表示され、少し小さめでしたが、さまざまなPDFに対応したい場合は200で十分です。

JPEG圧縮は、レベルを自動的に選択するか、デフォルトで92から1のスケールで100に設定する必要があります。100が最適です。 20に設定すると、オリジナルとほぼ同じように見えます(少しあいまいで、下部にある小さなテキストは少し読みにくいですが、とにかく元々ありました)。

これらのオプションは、1.7MBサンプルを0.5MBに下げながら、それは読みやすいです。少し実験できます。

小さいサイズ(ファイルと画像/ PDFの両方)が必要な場合は、-resize #%を使用できます。 -resize 75%。ただし、PDFの例では、これにより、下部の小さな印刷物はほとんど判読できなくなります。

それでもスペースが不足している場合、特に複数ページのPDFの場合は、ファイルをZip(またはその他の)アーカイブに追加することでさらに圧縮できます。これにより、そのテストでファイルサイズが0.43MBに下がりましたPDF(JPEG圧縮品質を下げると、はるかに劇的な効果があります。)PDF = pdftk を使用してページにファイルします @ glallen が編集で提案したようにするか、アーカイブを分割してもう一方の端で再結合します。

2MBは添付ファイルの制限もかなり小さいため、他のメールプロバイダーを確認することをお勧めします。メモリから、GMailはメールごとに10MB以上を提供します。

これらのオプションなどは完全に文書化されています 彼らのウェブサイトに

15
Bob

したがって、ImageMagickのconvertは、ラスタライズされたPDFを生成し、埋め込まれた画像のみが圧縮されるようにベクターグラフィックとテキストをそのままにしておくことに関心があります。 gsパッケージからghostscript使用例:

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

上記のコマンドパラメータ:-dPDFSETTINGS=/ebook は重要。 3つの値を持つことができます。

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