PDF 圧縮の解説
「この PDF を圧縮」は一つの操作に聞こえますが、PDF は複数の独立した方法で圧縮できます。どれがどれかを知れば、圧縮ツールにできてできないことが分かり、ある PDF は劇的に縮むのに他はほとんど動かない理由も分かります。
基礎
非可逆 vs 可逆
可逆圧縮は情報を一切失わずにファイルサイズを削減します — 展開したデータは元とバイト単位で同一です。非可逆圧縮は、はるかに小さいサイズと引き換えに小さな視覚変化を受け入れます。写真は通常非可逆(JPEG)で圧縮され、テキストと線画は通常可逆(Flate)で圧縮されます。
優れた PDF 圧縮ツールは、品質トレードオフが許容できる場合にのみ、画像に非可逆圧縮を適用します。テキストとベクターグラフィックは常に正確に保持されるべきです。
画像
PDF 内の画像圧縮
PDF は複数のコーデックで画像を格納できます:
- JPEG — 非可逆、写真に適しています。画像中心の PDF でサイズの最も一般的な源。
- Flate(zlib) — 可逆、線画や色数の少ない画像に適しています。
- JBIG2 — 非可逆または可逆、2 値(白黒)のスキャンテキスト向けに設計。スキャンページを劇的に縮小できますが、サポートは一様ではありません。
- CCITT Group 4 — 可逆、2 値画像の古典的な FAX 圧縮。
画像を大きすぎる JPEG から小さいものへ再エンコードすることが、ほとんどの PDF で最も効果的なサイズ削減です。
フォント
フォントサブセット化
ファイルサイズガイドで扱った通り、埋め込みフォントは小さな PDF を支配できます。サブセット化は実際に使われるグリフだけを埋め込みます。250 KB のフォントを 1 つの見出しに使う文書は、見た目の変化なく 8 KB のサブセットに縮小できます。ほとんどの現代 PDF ライターはデフォルトでサブセット化しますが、古いものや特定のエクスポート経路ではそうしません。
構造
オブジェクトストリーム
PDF 1.5 はオブジェクトストリームを導入しました:多数の小さなオブジェクト(メタデータ・ページ記述・フォント記述子)を単一の圧縮ストリームに詰め込む方法です。古い PDF は各オブジェクトを別々に、それぞれオーバーヘッド付きで格納します。オブジェクトストリームで再保存すると、テキスト中心の文書から目に見えるコンテンツに触れずに有意な割合を削減できます。
これが常に安全な圧縮の部分です — 純粋に構造的で、可逆で、リーダーに不可視です。
限界
圧縮にできないこと
可逆圧縮パスは、すでに良くエンコードされた PDF を縮小しません。ファイルがすでにオブジェクトストリームを使い、フォントをサブセット化し、画像を合理的に圧縮した JPEG として格納していれば、削れる構造的な無駄はほとんど残っていません。すべてのファイルで劇的な削減を約束するツールは、通常非可逆の画像再エンコードを暗黙に適用しています — それは適切かもしれませんが、あなたが意識的に下すべき品質決定であり、無料の昼食ではありません。
暗号化も圧縮と直交します。PDF を暗号化するとわずかなオーバーヘッドが加わりますが、圧縮ストリームがバイトとして暗号化されるため、コンテンツの圧縮効率は実質的に変わりません。圧縮してから暗号化した PDF は、小さく保護されています。
実用上
圧縮ツールがすること
PDF をPDF 圧縮ツールにかけると、安全で可逆なステップは:オブジェクトストリームで再保存、未参照オブジェクトの削除、相互参照テーブルのコンパクト化です。これだけでも、古いエクスポートからの文書で 10〜40% のサイズ削減がよく得られます。それ以上の削減には画像の再エンコードが必要で、それは利用者が意識的に下すべき別の非可逆決定です。
関連記事
関連リソース
関連記事