web-dev-qa-db-ja.com

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

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

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

366
tamimym

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

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

142
v2r

次の 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=/prepress出力はAcrobat Distillerの「Prepress Optimized」設定に似ています(300 dpi
  • -dPDFSETTINGS=/printerは、Acrobat Distillerの「Print Optimized」設定に似た出力を選択します(300 dpi
  • -dPDFSETTINGS=/defaultは、さまざまな用途で役立つ出力を選択しますが、出力ファイルが大きくなる可能性があります
512
Michael D

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

ps2pdf input.pdf output.pdf

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

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

ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf 
155
don.joey

スキャンした画像(pdf)がある場合convertを使用してjpegでPDFを作成できます。 compression(どのPDFでもこの方法を使用できますが、すべてのテキスト情報が失われます)。

例えば:

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

密度(例:100x100)および品質を必要に応じて調整します。

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

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

127
someonr

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

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

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

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

41
mlitty

スクリプトはこちら スキャンされた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ファイル名に置き換えてターミナルでバングできます。

28
Oli

私は通常、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))
21
Javier Rivera
  1. LibreOffice Drawを使用してPDFを開きます。
  2. 次に、「pdfとしてエクスポート」
  3. 「jpeg圧縮品質」を50%に、「画像解像度」を150 dpiに設定します

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

16
Marius4674

私にとって最高だった

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

よろしく

9
oxidworks

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

5
user179584

圧縮品質を制御します。

#!/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}
4
user525719

pdfsizeoptを強くお勧めします。

以前のCLIおよびGUIソフトウェア(convertgspdftkなどを含む)よりもサイズの削減に関してはるかに効率的です。 pngoutを有効にすると、問題が発生しなくなります(画像のピクセル化や劣化が大幅に減少したり、ブックマークが失われたりすることはありません)。

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


nixの汎用インストール をお勧めします:

  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
3
iNyar

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

3
scoobydoo

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

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

convert -compress Zip input.pdf output.pdf
3
mbroshi

私は同じ問題に直面していて、このスレッドを見つけてうれしかったです。具体的には、スキャンした画像から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であることに注意してください。

2
Kalpit

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

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

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

1
ape

Djvuへの変換も大丈夫で、色が関係しない場合は、次を試してください。

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

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

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

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

次に、 scantailor を使用してtifを削除します。

最後の手順では、スキャンテーラーでディレクトリ(tifが配置されている場所)に移動し、そのディレクトリに djvubind を適用します。

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

文書に色がある場合は、少し複雑になります。 djvubind の代わりに didjv を使用でき、scantailorでは混合モードに変更し、場合によってはカラー画像を手動で選択する必要があります。

1
student

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

Ubuntuへのインストール:

Sudo add-apt-repository ppa:jfswitz/released

Sudo apt-get update

Sudo apt-get install pdf-compressor

Ghostscriptを使用します。

0
John

私にとっては、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を指定した場合、それは圧縮されませんでした。

0
Antonello

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

$ 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
SebMa