スキャンしたPDFファイルのファイルサイズを縮小するにはどうすればよいですか?


372

500 KB未満に縮小する必要がある72.9 MBのPDFファイルがあります。

ファイルは、スキャンしてからPDFに変換したJPEG画像でした。


1
それはスペースを消費するものに依存します...より多くの情報が必要です。画像スペースを圧縮することは役立ちますが、大きなファイルヒープスプレーをしようとしている場合、それは機能しません。より多くの情報が真剣に必要です。
RobotHumans

1
DjVuに変換し、代わりに不可能なサイズのPDF(ソースによる)に縮小しようとしています
-zetah

ファイルは、スキャンしてからpdfに変換したjpegイメージでした。
タミミン

ファイルサイズを少しだけpdfopt改善するように思えますが、シンプルな構文を持ち、iPad時代の読み込みとページめくりの速度を改善します。:
アリB.フリードマン

1
PSへのPDFは、スキャンしたPDFファイルに有効ではないですが、私はPSファイルが、PSファイルに56メガバイトのPDFファイルを変換しようと1.3ギガバイトに変換し、再びps2pdfが45 MBのファイルに変換されます

回答:


145

aking1012が正しい。可能な埋め込み画像、ハイパーリンクなどに関する詳細情報があれば、この質問に答えるのがはるかに簡単になります!

スクリプトとコマンドラインのソリューションをいくつか紹介します。適切に使用してください。


15
ご提案いただきありがとうございます、ghostscriptシェルは驚異的な働きをし、それを460KBに縮小しました:)
タミミム

それは必ずしも真実ではありません。コンテンツが画像からテキストに変わった場合、それは実現不可能です。[それはテキストが正確に神聖であると仮定している]
僧ksたち

2
shrinkpdf.shスクリプトを使用することをお勧めします。必要なppi値(デフォルトでは72)を使用するようにコードをカスタマイズし、最低限の品質を犠牲にするために必要なファイルサイズに正確に到達できます。これにより、最大11 MBのスキャンされたドキュメントをアップロードできました。多くの品質を失うことなく3 MBのサイズ。
セベロラズ

4
shrinkpdfがうまく機能します!
AmanicA

2
OPがaskubuntu.com/questions/113544/…を参照しているghostscriptシェルはどこにありますか?
user13107

521

次のghostscriptコマンドを使用します。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screenより低い品質、より小さなサイズ。(72 dpi
  • -dPDFSETTINGS=/ebook品質は向上しますが、わずかに大きいPDF (150 dpi
  • -dPDFSETTINGS=/prepressAcrobat Distillerの「Prepress Optimized」設定に類似した出力(300 dpi
  • -dPDFSETTINGS=/printerAcrobat Distillerの「Print Optimized」設定に似た出力を選択します(300 dpi
  • -dPDFSETTINGS=/default さまざまな用途で役立つことを意図した出力を選択しますが、出力ファイルが大きくなる可能性があります

5
これは受け入れられた答えでなければなりません。ghostscriptは unices用 PDF、XPS、およびPS実装であり、基本的にすべてを実行して最高の品質を実現できます
...-dom0

7
@Sina:ノーチラススクリプトは、これはすべて、その品質レベルのオプションを指定して、コマンドをgsを利用し、簡単なzenityを使うベースのGUIで、実際にあります:launchpad.net/compress-pdf
サディ

36
これは、この質問に対する正しい答えです(主にビットマップデータであるpdfを圧縮する)。screen設定は低品質であることがわかりましたが、ebook33MbのスキャンベースのPDFを3.6Mbに削減し、非常に読みやすくして、うまく機能しました。オプションのその他のオプションは、milan.kupcevic.net-dPDFSETTINGS / ghostscript-ps-pdfにリストされています。この回答に含めることをお勧めします。
naught101 14

5
gs使用可能な構成パラメーター:ghostscript.com/doc/current/Ps2pdf.htm
Antonios Hadjigeorgalis 14

3
17.10で、42 mb pdfから127 mbになりました:(
YaSh Chaudhary

157

これを行うための私のお気に入りの方法は、pdfをpsに変換することです。ただし、常に機能するとは限りませんが、機能する場合、結果は素晴らしいものになります。

ps2pdf input.pdf output.pdf

これは、コメントで示唆されているように、pdfでも直接機能します。

一部のユーザーは、次のように電子書籍の設定を使用すると、より多くの成功を報告します。

ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf 

4
これは非常にシンプルで効果的な方法です。この方法でファイルがどれだけ圧縮されるかを見て驚いた。ありがとうございます!
ガブリエル

16
この1つのアプローチがpdfファイルを圧縮するための私のお気に入りのソリューションになったという事実にもかかわらず、ドキュメントが持つURLリンクを分割します(@Michael Dのアプローチでは発生しません)。それとは別に、このスニペットを実行することについて考えることができるのは素晴らしいだけです!(:
ルーベンス

1
@ルーベンス URLリンクが破損するという事実を知りませんでした。それを追加してくれてありがとう。
don.joey

3
これにより、パスワード保護がバイパスされます...言うだけです
ジョジョ

8
ps2pdfはpdfを入力として受け取るため、1ステップでこれを実行できますps2pdf intput.pdf output.pdf
。– frabjous

127

スキャンした画像を含むpdfがある場合は、を使用convertしてjpeg圧縮を使用してpdfを作成できます(この方法は任意のpdfで使用できますが、すべてのテキスト情報が失われます)。

例えば:

convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf

ニーズに合わせて密度(100x100など)と品質を調整します。

入力によっては、圧縮アーチファクトのため、jpeg 圧縮は最適な選択ではない場合があります。代替圧縮方法として、BZip、Fax、Group4、JPEG、JPEG2000、Lossless、LZW、RLE、またはZipを選択できます(一部の画像のみが許可されます)。詳細はこちらをご覧ください。

スキャン/写真撮影されたドキュメントの圧縮率を大きくすることができました(設定によって異なります)。ドキュメントソースによっては、色深度(-depth引数)を減らしたい場合があります。


3
画像ではなくテキストが興味の対象であり、深度を維持することは問題ではないスキャンされたドキュメントの場合、アーティファクトが非常に目立つ傾向があるため、jpeg圧縮は良いアイデアではありません。pdfimages input.pdf pagespbmファイルの抽出に使用する場合、次のようなことができます for page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf。OCRは失われるので、通常はそうしますpdfsandwich output.pdf。これにより、ファイルサイズがさらに小さくなります。
ブライアンZ

1
@BrianZは、jpeg圧縮が常に最良の選択であるとは限りませんが、私にとっては、混合タイプのドキュメントに最適なアプローチでした。他の圧縮方法に関する情報を回答に追加しました。
誰か

2
この方法は、最終的にgs舞台裏で使用します。
alfC

2
私は、コマンドを実行するためのオプションのダブルダッシュを使用していた--density --quality --compress-density -quality -compress
ロタレティ

1
画像の品質が最大の懸念事項ではない場合(そして送信するのに十分なほど小さいその電子メール添付ファイルを取得したい場合)-resize 50%、スキャン中に使用されたDPIの量に応じてパーセンテージを変更する場合があります
-chrki

41

ドキュメントのフルカラースキャンを含むPDFを縮小する必要がありました。ファイルに関する限り、各ページはフルカラー画像でした。テキストと画像を含むページの画像でしたが、画像にスキャンして作成されました。

以下のghostscriptコマンドと別のスレッドからのコマンドを組み合わせて使用​​しました。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf

これにより、画像の解像度が150dpiに低下し、ファイルサイズが半分になりました。ドキュメントを見ると、画像品質の顕著な低下はほとんどありませんでした。2012 Nexus7でもテキストは完全に判読可能です。


3
+1は画像をダウンサンプリングしますが、テキストをベクトルとして保持します。テキストをピクセル化せずに、大きな違いを作りました。
ジェイソンオニール14

これは私だけdPDFSETTINGS = \画面を使用してより良い結果を与えた- 1チューニングこのコマンドで解決できることをファンタスティック
為替

29

スキャンしたPDFを書き換えるためのスクリプト次に示します

#!/bin/sh

gs  -q -dNOPAUSE -dBATCH -dSAFER \
    -sDEVICE=pdfwrite \
    -dCompatibilityLevel=1.3 \
    -dPDFSETTINGS=/screen \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    -dColorImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageDownsampleType=/Bicubic \
    -dGrayImageResolution=72 \
    -dMonoImageDownsampleType=/Bicubic \
    -dMonoImageResolution=72 \
    -sOutputFile=out.pdf \
     $1

再利用しやすくするために少しカスタマイズすることもできますが、pdfが1つしかない場合$1は、pdfファイル名に置き換えて端末で使用することができます。


1
Oliに感謝します。あなたは、私がこれまで:-Dここに求めてきましたほとんどすべてに答えてきました
ロブ・カウエルを

これは良い答えですが、私の場合には、少なくともそれが取る多く(以上分より)やや大(> 10Mバイト)PDFファイルを変換するために、時間のを。
ガブリエル

何が起こるかはわかりませんが、30 MBのPDFでは68 MBのファイルになります。縮小する代わりに、拡大します。次の回答に記載されているように、ps2pdfを直接使用する場合と同じ出力。
エドヴィルガス

@EdVillegas私が考えることができる唯一のことは(その種の増加を説明するために)画像が生成されているもの(72dpi)よりも低い解像度であることです。または、何らかの方法でフォントを埋め込むと、すべてのフォントが吸い込まれます。
オリ

21

私は通常、ps2pdfを使用してこれを行います(より簡単な構文)。次のようなものです。

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

次のpythonスクリプトを使用して、運用サーバー(8.04)のdirにあるすべてのpdfファイルのサイズを縮小します。それで動作するはずです。

#!/usr/bin/python

import os

for fich in os.listdir('.'):
        if fich[-3:]=="pdf":
                os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))

代替ソリューションをありがとう。私はオリの最初のものを試してみたところ、必要な結果が得られましたが、今後の参考のためにこれを保持します。
ロブ・カウエル

1
-dPDFSETTINGS = / printerオプションは、50%のサイズ変更を行います。電子ブックは90%のサイズ変更を行います。
ネオウイグル

17
  1. LibreOffice Drawを使用してPDFを開きます。
  2. 次に、「pdfとしてエクスポート」
  3. 「jpeg圧縮品質」を50%に、「画像解像度」を150 dpiに設定します

これは良い結果になります。


問題の最悪の解決策!それは完全に私のファイルを台無しにしました!

9

私にとって最高だった

convert -compress Zip -density 150x150 input.pdf output.pdf

他の方法:

#### gs
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE

### pdf2ps && ps2pdf
pdf2ps input.pdf output.ps && ps2pdf output.ps output.pdf

### Webservice
http://compress.smallpdf.com/de

よろしく


素晴らしい解決策。覚えやすく、PDFを32 MBから3.5 MBに読みやすくしました。
イマニュエルヴァイ

2番目の方法が好きだった pdf2ps input.pdf temp.ps && ps2pdf14 temp.ps output.pdf && rm temp.ps
McPeppr

5

私は自分でこの問題に遭遇しました。シンプルスキャンを使用している場合、低解像度スキャン用にテキストモードを選択すると、コマンドラインのことを心配する必要はありません。ただ言って。


1
これは、このスレッドで私の問題を解決した唯一の答えです。私はSimplescanを軽視しましたが、無限の苦痛のように思えたXsaneと戦う代わりに、それは本当に私にとって答えでした。
versvs

4

圧縮品質を制御します。

#!/bin/sh
INPUT=$1; shift
OUTPUT=$1; shift
GS_BIN=/usr/bin/gs
QFACTOR="0.40"

# Image Compression Quality
#
# Quality HSamples VSamples QFactor
# Minimum [2 1 1 2] [2 1 1 2] 2.40
# Low     [2 1 1 2] [2 1 1 2] 1.30
# Medium  [2 1 1 2] [2 1 1 2] 0.76
# High    [1 1 1 1] [1 1 1 1] 0.40
# Maximum [1 1 1 1] [1 1 1 1] 0.15 

${GS_BIN} -dBATCH -dSAFER -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=${OUTPUT} -c "<< /ColorImageDict << /QFactor ${QFACTOR} /Blend 1 /HSample [1 1 1 1] /VSample [1 1 1 1] >> >> setdistillerparams" -f ${INPUT}

...だから、INPUTとOUTPUTの両方が同じ引数ですか?使用ガイドラインを追加することもできます。
mikewhatever

2
に注意してくださいshift。最初のパラメーターは入力ファイル、2番目は出力ファイルで、残りのパラメーターはそのまま渡さgsれます。
ミッコランタライネン

私は、あなたがしたいと思います/ HSample Sおよび/ VSample 、ない/ HSampleおよび/ VSample。たとえば、ps2pdfドキュメントまたはPostScript言語リファレンスマニュアルを参照してください。また、許可されるQFactorの範囲は0〜1,000,000であり、値が小さいほど品質が高くなることに注意してください。
ポン

3

Googleで検索したとき、このリンクは私にとって最初のものだったので、もう1つの可能性を追加すると思いました。上記のソリューションはいずれも、Inkscape(15 mb)からエクスポートされたpdfで機能していませんでしたが、GIMPで開き、再びpdfとしてエクスポートすることでようやく1 mbに縮小することができました。

近づいたもう1つのオプション(ただしテキストは少し曖昧でした)は、ImageMagickの変換ユーティリティです。

convert -compress Zip input.pdf output.pdf

これは「少しあいまい」という意味ですが、明確にするために、convert -compress Zipすべてのベクトルをラスタライズするように見えます。
Sparhawk

3

最後に、私はこれを解決するために、それが使用する私自身のbashスクリプトを書いたmogrifyconvertそしてgs、PNGなどのPDFページを抽出し、それらのサイズを変更し、1ビットのBMPに変換して、PDFファイルとしてそれらを再構築します。ファイルサイズの削減は90%を超えることがあります。http://www.timedicer.co.uk/programs/help/pdf-compress.sh.phpで入手できます


3

pdfsizeoptを強くお勧めします

それは私が試してみましたその前のCLIおよびGUIソフトウェアのいずれよりも小型化(含むの面ではるかに効率的であるconvertgspdftkもののおそらく遅くなると- 、など)pngoutアクティブ化- 、およびその問題のいくつか(無重くはありません。ピクセル化/劣化した画像、ブックマークの消失など)。

今、結果に関係なく特定のサイズを達成する必要がある場合(画像を読みにくくするなど)、それはあなたが必要とするツールではないかもしれませんが、不要な大きなサイズを減らすための常に機能する解決策として読みやすさ、情報、許容可能な画質を損なうことのないPDFでは、これが最良の選択肢だと思います。(注:Adobe Acrobatでベクトル化OCRを最初に実行した後に使用する傾向があります(以前は「CleanScan」と呼ばれていた機能です)。これは、スキャンされたテキスト文書に劇的なサイズの影響を与えます。)


一般的なUnixインストールをお勧めします。

  1. 必要なすべての依存関係をインストールします。

  2. 実行可能ファイルをダウンロードしてインストールします。

    curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
    cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
    

使用法:

pdfsizeopt original.pdf [compressed.pdf]

この投稿を見つけるMacユーザー(またはLinuxbrewユーザー)への注意:Homebrewのインストール式があります:

brew install --HEAD pts/utils/pdfsizeopt

2

私は同じ問題に直面していて、このスレッドを見つけてうれしかったです。具体的には、スキャンした画像からPDFを生成し、そのバイトサイズを6分の1に減らす必要がありました。

残念なことに、上記の解決策はいずれも機能しませんでした。ただし、pdfのサイズは

identify -verbose doc_orig.pdf | grep "Print size"
 Print size: 35.4167x48.7222

サイズ変更と圧縮の両方のステップを1つにまとめた「convert」コマンドで、最終的に目的の結果が得られました。

convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf

doc_origの密度は72x72 dpiであることに注意してください。


1

djvuへの変換も大丈夫で、色が関係しない場合は、次を試すことができます。

を使用してpdfファイルをjpgファイルに変換します pdfimages -j

代わりにpbmファイルを取得する場合は、中間ステップを実行する必要があります。

for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done

convertコマンドは、imagemagickパッケージからのものです。

次に、scantailorを使用してtifを作成します。

最後のステップでは、スキャンテーラーでディレクトリ(tifが存在する場所)に移動し、そのディレクトリにdjvubindを適用します。

これにより、テキストの品質が大幅に低下することなく、ファイルサイズが大幅に削減されます。ocr-backendをより細かく制御したい場合は、ocrodjvu djvubind --no-ocrを使用してocrレイヤーを後で追加してみてください。

文書に色が含まれていると、少し複雑になります。djvubindの代わりにdidjvuを使用できます。scantailorでは、混合モードに変更し、手動でカラーイメージを選択する必要があります。


1

イメージまたはPDFファイルをinkscapeにロードします。

inkscapeから:ベクター形式で(ネイティブ.svgとして)保存します。

ベクターファイルをScribusにインポートし、レイアウトを編集し、そこから.pdfとしてエクスポート/保存します


0

超シンプルなPDF圧縮ツール:GitHubページ。

Ubuntuへのインストール:

sudo add-apt-repository ppa:jfswitz/released

sudo apt-get update

sudo apt-get install pdf-compressor

ghostscriptを使用します。


0

これを試すことができます:

$ time pdftk myFile.pdf output myFile__SMALLER.pdf compress
GC Warning: Repeated allocation of very large block (appr. size 16764928):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 11837440):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 7254016):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 34041856):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.

real    0m23.677s
user    0m23.142s
sys     0m0.540s
$ du myFile*.pdf
108M    myFile.pdf
74M     myFile__SMALLER.pdf

gsこの場合、107.5MiB入力ファイルの場合よりも高速ですが、最大30%圧縮されます。


0

私にとっては、gs screenオプションはひどくて、ebook大きすぎました。

私の元の文書には、テキストがカラーおよび白黒の画像として含まれていました(ページによって異なります)。

私が思いついた最善の解決策は次のとおりです。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true -dDownsampleGrayImages=true -dDownsampleMonoImages=true -dColorImageResolution=130 -dGrayImageResolution=130 -dMonoImageResolution=130 -r130 -dNOPAUSE  -dBATCH -sOutputFile=output_lr.pdf input.pdf

圧縮レベルは線形ではないことに注意してください。135を指定した場合、それは圧縮されませんでした。


-1

以下のコマンドを使用しましたが、pdfファイルを実質的に圧縮しませんでした。圧縮後、一部の部分が黒くなることがありました。

  1. gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE

  2. "ps2pdf -dPDFSETTINGS=/ebook %s %s" % (input_file_path, out_file_path)

Webをさまよった後、適切な圧縮ライブラリが見つかりませんでした。私は出会ったpdfcompressor.com。これは素晴らしいウェブサイトです。PDFを95%(15Mbのファイル)圧縮します。そこで、セレンとTorを使用して圧縮を自動化しました。Githubリポジトリをチェックアウトします。[GITHUB](https://github.com/gugli28/PdfCompressor

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.