次のコマンドラインを使用してpdftkを使用してpdfを圧縮します
pdftk file1.pdf output file2.pdf compress
ファイルの重みが減ったときに機能します。
圧縮を変更する[オプション]はありますか?
または、ファイルを圧縮する他のソリューションはありますか?一部のグラフィックにはポイントが多いため、重いです。たとえば、これらのグラフをjpgに変換して、圧縮を適応させる方法はありますか?
次のコマンドラインを使用してpdftkを使用してpdfを圧縮します
pdftk file1.pdf output file2.pdf compress
ファイルの重みが減ったときに機能します。
圧縮を変更する[オプション]はありますか?
または、ファイルを圧縮する他のソリューションはありますか?一部のグラフィックにはポイントが多いため、重いです。たとえば、これらのグラフをjpgに変換して、圧縮を適応させる方法はありますか?
私は同じ問題を抱えていて、2つの異なる解決策を見つけました(詳細については、このスレッドを参照してください)。どちらも私の非圧縮PDFのサイズを劇的に縮小しました。
ピクセル化(不可逆):
convert input.pdf -compress Zip output.pdf
ピクセル化されていない(ロスレスですが、表示が少し異なる場合があります):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
編集:厄介なgsコマンドを回避する別のオプション(可逆圧縮用)を発見しました。qpdfは、PDF(圧縮/解凍、暗号化/復号化)を変換する優れたツールであり、gsコマンドよりもはるかに高速です。
qpdf --linearize input.pdf output.pdf
400ppiのtiff、ほとんどが8ビット、いくつかの24ビットで作成したPDFを、tiff2pdf
Zip / Deflateで圧縮したものを使用して、PackBits圧縮で圧縮しようとしています。これらのメソッドすべてで私が抱えていた問題の1つは、上記のメソッドのいずれも、AcrobatProXで丹念に手動で作成したブックマークTOCを保持していなかったことebook
ですgs
。確かに、TOCをそのままにしてオリジナルのコピーを開いて実行することはできましたReplace pages
が、残念ながら、これらの方法はいずれも最初から満足のいく仕事をしませんでした。サイズを大幅に縮小して品質が許容できないほどピクセル化されたか、サイズをまったく縮小せず、場合によっては品質が低下したにもかかわらず実際にサイズを拡大したかのいずれかです。
pdftk compress
:
no change in size
bookmarks TOC are gone
gs screen
:
takes a ridiculously long time and 100% CPU
errors:
sfopen: gs_parse_file_name failed. ?
| ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->10.2MB hideously pixellated
bookmarks TOC are gone
gs printer
:
takes a ridiculously long time and 100% CPU
no errors
74.8MB-->66.1MB
light blue background on pages 1-4
bookmarks TOC are gone
gs ebook
:
errors:
sfopen: gs_parse_file_name failed.
./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic
| ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->32.2MB
badly pixellated
bookmarks TOC are gone
qpdf --linearize
:
very fast, a few seconds
no size change
bookmarks TOC are gone
pdf2ps
:
took very long time
output_pdf2ps.ps 74.8MB-->331.6MB
ps2pdf
:
pretty fast
74.8MB-->79MB
very slightly degraded with sl. bluish background
bookmarks TOC are gone
この手順はかなりうまくいきます
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での画像解像度を表します)。入力ファイルがグレースケールの場合は、 [色]を[灰色]に置き換えるか、上記のコマンドで両方のオプションを使用することも役立ちます。-dPDFSETTINGSオプションを/defaultまたは/printerに変更することで、さらに微調整することができます。可能なすべてのオプションの説明については、ps2pdfマニュアルを参照してください。
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つのステップの方がうまくいきました。また、標準の入出力およびパイプへのリダイレクトを使用して、1つに組み合わせることができます。
pdf2ps large.pdf-| ps2pdf-small.pdf
xsaneによって生成されたPDFを18Moから630koに削減しました!
リンクは失われますが、現在の例では、それは問題ではありません...そして望ましい結果を達成するための最も簡単な方法でした。
nullglobが提案したようにgpdfを試した後、cups-pdfプリンターを使用するだけで、同じ圧縮結果(〜900mbファイルから〜30mb)が得られることがわかりました。すでにドキュメントを表示していて、1つまたは2つのドキュメントのみを圧縮する必要がある場合は、これが簡単/推奨される場合があります。
Ubuntu 12.04では、これを次の方法でインストールできます。
sudo apt-get install cups-pdf
インストール後、必ず[システムツール] >[管理] >[印刷]をチェックインし、 [PDF]を右クリックして、[有効にする]に設定してください。
デフォルトでは、出力はホームディレクトリのPDFという名前のフォルダに保存されます。
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出力を取得しました。
Keynoteで作成した140MBのPDFを、OkularのPrinttoPDFを使用して2.8Mbに変換しました。テキストはラスターに変換され、ズームインするとピクセルがはっきりと表示されますが、画像はかなり鮮明に保たれ、メッセージングアプリで使用できます。
ここにリストされているすべての答えを試した後、グラフィックがたくさんあるpdfで得られた最良の結果は次のとおりです。
pdftocairo input.pdf output.pdf -pdf
これは、GnomeでEvinceを使用してPDFを開き、ファイルに印刷することで発見しました。これにより、私のpdfファイルの他のすべての回答と比較して、ファイル圧縮とファイル品質が向上しました。この方法でファイルに印刷する場合、バックグラウンドでcairoグラフィックが使用されているようです。結果のファイルでpdfinfoを実行すると、次のようになります。
プロデューサー:cairo 1.16.0(https://cairographics.org)
同じ問題が発生し、この関数を使用して個々のページを圧縮した結果、ファイルサイズが元のサイズの最大1/3に圧縮されました。
for (int i = 1; i <= theDoc.PageCount; i++)
{
theDoc.PageNumber = i;
theDoc.Flatten();
}
選択可能なテキストが多数含まれているPDFを圧縮する場合は、WindowsではNicePDFCompressorを使用できます。[Flate]オプションを選択してください。すべて(cpdf、pdftk、gs)を試した後、最終的に1360ページのPDFを500MBから10MBに圧縮するのに役立ちました。