pdftkを使用して、次のコマンドラインを使用してpdfを圧縮します。
pdftk file1.pdf output file2.pdf compress
私のファイルの重量が減るにつれて機能します。
圧縮を変更する[オプション]はありますか?
または、ファイルを圧縮するための他のソリューションですか?一部のグラフィックには多くのポイントがあるため、重いです。たとえば、これらのグラフをjpgに変換して圧縮を適応させる方法はありますか?
私は同じ問題を抱えていて、2つの異なる解決策を見つけました(詳細については、この thread を参照してください)。どちらも私の非圧縮PDFのサイズを劇的に縮小しました。
ピクセル化(損失あり):
convert input.pdf -compress Zip output.pdf
ピクセル化されていません(ロスレスですが、表示が少し異なる場合があります):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
Edit:厄介なgsコマンドを回避する別のオプション(ロスレス圧縮用)を発見しました。 qpdf は、PDF(圧縮/解凍、暗号化/復号化)を変換するきちんとしたツールであり、gsコマンドよりもはるかに高速です。
qpdf --linearize input.pdf output.pdf
この手順はかなりうまくいきます
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
試してみる。
ファイルサイズがまだ大きすぎる場合は、ps2pdfを使用して、生成されたpdfファイルの解像度を縮小することができます。
pdf2ps input.pdf tmp.ps
ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf
-dColorImageResolutionオプションの値を調整して、ニーズに合った結果を達成します(値はDPIの画像解像度を表します)。入力ファイルがグレースケールの場合、ColorをGrayに置き換えるか、上記のコマンドで両方のオプションを使用することも役立ちます。 -dPDFSETTINGSオプションを/ defaultまたは/ printer。可能なすべてのオプションの説明については、 ps2pdfマニュアル を参照してください。
nullglob のようにgpdfを試してみたところ、cups-pdfプリンターを使用するだけで同じ圧縮結果(〜900mbから〜30mbまで)が得られることがわかりました。すでにドキュメントを表示していて、1つまたは2つのドキュメントのみを圧縮する必要がある場合、これはより簡単/優先される場合があります。
Ubuntu 12.04では、これをインストールできます
Sudo apt-get install cups-pdf
インストール後、System Tools>Administration>印刷>「PDF」を右クリックし、「有効」に設定します
デフォルトでは、出力はホームディレクトリのPDFという名前のフォルダーに保存されます。
pdf2ps large.pdf small.pdf
で十分です。2ステップではありません
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
ただし、ps2pdf large.pdf small.pdf
の方が適しています。
ps2pdf
ははるかに高速ですpdf2ps
は大きなファイルを作成する場合があります。1行のpdf2psオプション(Leeによる)は、実際にpdfサイズを増やしました。ただし、2つのステップの方がうまくいきました。そして、標準の入出力とパイプからのリダイレクトを使用して、単一のものに結合できます。
pdf2ps large.pdf-| ps2pdf-small.pdf
xsaneによって生成されたPDFを18 Moから630 koに削減しました!
リンクは失われますが、現在の例では、それは問題ではありません...そして、望ましい結果を達成する最も簡単な方法でした。
Qpdfを使用した場合、ファイルサイズの大幅な削減は見られませんでした。私が見つけた最良の方法は、pdftkが完了した後、ghostscriptを使用してpdfをpostscriptに変換してからpdfに戻すことです。 PHPでは、execを使用します。
$ps = $save_path.'/psfile.ps';
exec('ps2ps2 ' . $pdf . ' ' . $ps);
unlink($pdf);
exec('ps2pdf ' .$ps . ' ' . $pdf);
unlink($ps);
数分前にこれを使用して、490kから71kのpdftk出力を取得しました。