PDFを小さくする方法
導入
デジタル情報の配信は「容量」がもたらす制約を無視できません。特にPDFは、文書全体を画像化することなく、テキスト・画像・フォントなどを含む高度な構造を持つため、ファイルサイズが膨らみやすいです。
しかし、メール添付に限らず、クラウド同期、Web配信、印刷コストまで影響を与える大きな問題です。
この記事では、画像圧縮とテキスト・構造の最適化に焦点を当て、実際にPDFを数十%~数割に圧縮する具体的手順とベストプラクティスを紹介します。
1. PDFサイズが大きくなる主因
| 項目 | 内容 | 典型的な重さ |
|---|---|---|
| 画像 | 元画像の解像度・色情域(RGB4Kなど) | 5 % – 80 % |
| フォント | 埋め込む全フォント、アウトライン化 | 1 % – 10 % |
| メタ情報 | 作成者・タグ付け・カスタム属性 | 0.1 % – 1 % |
| 添付ファイル | PDF内にバイナリ添付 | 5 % – 30 % |
| 未使用オブジェクト | 生成後削除されないレイヤーやトラッシュ | 0.5 % – 5 % |
画像ファイルの圧縮は最も効果的ですが、テキストやフォントに対しても軽量化の余地があります。
2. 画像圧縮の基本戦略
-
解像度の見直し
- 画面上で閲覧するだけなら 150 dpi、印刷なら 300 dpiが標準。
- 「画像を表示」レベルで低解像度の画像を埋め込むと、圧縮率が飛躍的に上がります。
-
カラーモードとフォーマット
- RGB → CMYK → グレースケールへの変換で色数を削減。
- 適切なフォーマット選択:
- 写真はJPEG(有損)またはWebP。
- ドローイングや図はPNG(可逆)あるいはJPEG2000。
-
画像の前処理
-
画像編集ソフトでの最適化
- Photoshop:
Image > Image Sizeで解像度を調整し、Save for Webで圧縮。 - GIMP:
File > Export As→JPEGで品質を45–70%に設定。
- Photoshop:
-
バッチ処理
- TinyPNG API、ImageMagick
convert -quality 60 file.png file.jpgなどを使い、複数ファイルを一斉圧縮。
- TinyPNG API、ImageMagick
-
画像編集ソフトでの最適化
-
画像重複の検出
- 同じ画像を複数ページで使用していないか、
pdfimagesやpdftkで抽出して確認。 - 重複画像は一度だけ埋め込み、リンクで再利用する方法(PDF 1.7 の
XObject)。
- 同じ画像を複数ページで使用していないか、
3. PDF作成時の画像処理フロー
| ステップ | ツール | コマンド例 |
|---|---|---|
| 1. 画像解像度調整 | ImageMagick | mogrify -resize 1500x -quality 70 -format jpg *.png |
| 2. PDF生成 | LaTeX / LibreOffice | pdflatex --shell-escape book.tex |
| 3. 画像埋め込み最適化 | Ghostscript | gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -sOutputFile=out.pdf in.pdf |
ポイント:Ghostscript の -dPDFSETTINGS は事前に画像を圧縮せず、内部で再圧縮する。/ebook は 150 dpi、/screen は 72 dpi の設定です。
4. フォント最適化
-
埋め込み最小化
-
TrueType/OpenType フォントは全グリフを埋め込まなくても大きいですが、LaTeX では
\usepackage{fontspec}[Path=../fonts/]の-subsetオプションで使用した文字だけを埋め込む。
-
TrueType/OpenType フォントは全グリフを埋め込まなくても大きいですが、LaTeX では
-
フォント結合
-
pdf_font_mergeコマンドで同一フォントの重複オブジェクトを統合。
-
-
フォント置換
- サンセリフ (Arial、Helvetica) とサンセリフ (Liberation Sans、Arial) は可読性を保ちつつ、軽量化に優れています。
5. テキストと構造の最適化
-
コンテンツストリームの再圧縮
-
qpdf --object-streams=disable --recompress-fonts --compress-streams on a.pdf b.pdf
-
-
不要なオブジェクト削除
- PDFのアノテーション、ブックマーク、添付ファイル、レイヤーの無意味な部分は
pdfcleanで除去。
- PDFのアノテーション、ブックマーク、添付ファイル、レイヤーの無意味な部分は
-
ページネタ
- 複数ページで同じレイアウトを使っている場合は、
pdfnupなどで再利用できる構造を作る。
- 複数ページで同じレイアウトを使っている場合は、
6. 実践で使えるツール・スクリプト
| ツール | 主な機能 | 使い方 |
|---|---|---|
| Ghostscript | PDF再圧縮、フォント埋め込み削減 | gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -o out.pdf in.pdf |
| qpdf | ストリーム圧縮、PDFクリーンアップ | qpdf --object-streams=disable --recompress-fonts --compress-streams on a.pdf b.pdf |
| pdftk | PDF結合・分割・オブジェクト削除 | pdftk in.pdf cat output stripped.pdf |
| pdfimages | 画像抽出・再圧縮 | pdfimages -j in.pdf prefix |
| ImageMagick | 画像編集・コマンドラインバッチ | mogrify -resize 1500x -quality 75 -format jpg *.png |
| Adobe Acrobat Pro | PDFオプティマイザー GUI | ファイル > プロパティ > PDFオプティマイザー |
| オンラインサービス | Smallpdf, ILovePDF, PDF Compressor | ウェブサイトからドラッグ&ドロップで圧縮 |
Tip:最適化前後のファイルサイズと表示品質を常に比較して、必要最低限の圧縮レベルを決めるのがベストです。
7. ワークフロー例:LaTeX で作成した PDF を 10分で圧縮
# 1. 画像を一括で 150dpi JPEG に変換
mogrify -resize 1500x -quality 70 -format jpg *.png
# 2. PDF を Ghostscript で圧縮
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.5 -dEmbedAllFonts=true -dSubsetFonts=true -sOutputFile=compressed.pdf document.pdf
# 3. テキストストリーム再圧縮&オブジェクト整理
qpdf --object-streams=disable --recompress-fonts --compress-streams on compressed.pdf final.pdf
このスクリプトは「画像の前処理+Ghostscript+qpdf」の3段階でほぼ 2 倍〜5 倍のサイズ削減を実現します。
8. よくある質問と対策
| 質問 | 回答 |
|---|---|
| 高解像度画像が必要な場合 | 画像を埋め込む前に圧縮用画像(低解像度)を作成し、拡大表示は「ズーム」で行うサイトにリンクする。 |
| 埋め込んだフォントが正しく表示されない | フォントサブセットをオフにして完全に埋め込むか、Web Open Font Format (WOFF2) で埋め込み。 |
| PDF/A 1b の互換性が必要 | gs -sDEVICE=pdfwrite -dPDFA=1 -dPDFACompatibilityPolicy=1 -o pdfa1b.pdf a.pdf |
| 添付ファイルも削除したい | pdfdetach -s ALL -o out.pdf in.pdf で全添付ファイルを取り除く。 |
| オンラインツールだけで十分? | 簡易圧縮は OK ですが、機密情報が含まれる場合はローカルで処理するほうが安全です。 |
9. 失敗しやすいポイントと防止策
-
画像を過度に圧縮 → 色や線がぼやける。
- 画像品質は20% のノイズ追加で確認。
-
フォントサブセット解除 → フォントサイズが増える。
-
--subsetオプションを使いながら--recompress-fontsで圧縮。
-
-
非表示オブジェクト削除忘れ → ファイルサイズが 5% も増える。
-
qpdf --filterで無効領域を除外。
-
10. まとめ
- 画像が最大の占有率 → 解像度・カラーモード・フォーマットを見直す。
- フォントや構造を精査 → サブセット化と不要オブジェクト削除。
- 圧縮ツールを組み合わせる → Ghostscript の PDFSETTINGS, qpdf, pdftk で再圧縮。
- 品質とサイズのバランスを検証 → 可視化ツールで差分確認。
PDF は「見た目を保つための万能パッケージ」ですが、適切に最適化すれば、数十MB だったものを 1–3 MB 程度に短縮できます。
これでメールでの送信、クラウド共有、Web掲載どこでも、ファイルサイズの壁をしのいでスムーズに配布が可能です。ぜひ今回紹介したフローを試し、高速で軽量なPDFを実現してください!


コメント