IllustratorのPDFでサムネイルが真っ黒になる原因は、RGBにしていないからではなく、PDF/X形式で保存しているからです。「準拠する規格」を「なし」に変えるだけで解決します。
自作プラグイン「Rapls PDF Image Creator」でイベントチラシのPDFをWordPressにアップロードしたところ、自動生成されたサムネイルが完全な真っ黒。ファイルサイズはあるので画像自体は生成されているけど、中身が真っ黒。一方、別のPDF(cairoライブラリで出力したもの)は正常に変換できている。サーバー環境やプラグインではなく、PDF自体に原因があると考えて調査を始めました。
PDF/X-1形式で保存したPDF(左)と、「準拠する規格:なし」で保存し直したPDF(右)
最初に疑ったCMYKは犯人ではなかった
RGBに変換して保存し直しても真っ黒のまま。「カラーモードが原因」という思い込みが、原因究明を遅らせました。
PDFの画像変換で真っ黒になる原因として真っ先に思い浮かぶのがCMYKカラーモードです。ImageMagickはデフォルトでRGBを想定しているので、CMYKデータをそのまま処理すると色がおかしくなったり真っ黒になったりする。これは事実です。
そこでIllustratorの「ファイル」→「ドキュメントのカラーモード」→「RGBカラー」に変更してPDFを保存し直しました。
結果は同じ。相変わらず真っ黒。RGBに変えたのに直らないのはなぜか——ここからPDFの内部構造を直接調べることにしました。
pdfinfoで見つけた真犯人:PDF/X-1:2001
pdfinfoコマンドでPDFのメタデータを確認したところ、「PDF subtype: PDF/X-1:2001」という記述が見つかりました。これが真犯人です。
pdfinfoの実行結果。「PDF subtype: PDF/X-1:2001」が原因の決め手
正常に変換できたPDFと、真っ黒になるPDFのpdfinfo結果を比較しました。
正常なPDF:
|
1 2 |
Producer: cairo 1.17.6 PDF version: 1.7 |
真っ黒になるPDF:
|
1 2 3 4 |
Creator: Adobe Illustrator 28.6 (Windows) Producer: Adobe PDF library 17.00 PDF version: 1.3 PDF subtype: PDF/X-1:2001 |
決定的な違いは「PDF subtype: PDF/X-1:2001」です。
PDF/X-1:2001は印刷業界の国際規格(ISO 15930-1)で、印刷入稿用PDFが必要な要件を満たしていることを保証するためのものです。この規格には「CMYKまたはグレースケール、特色のみ使用可能(RGBは使用不可)」という制約があります。
つまり、Illustrator上でドキュメントをRGBモードに変更しても、PDF/X-1形式で保存すると規格の要件を満たすために内部的にCMYKが使われます。さらにDeviceN(特色)やIndexed Colorなど複雑なカラースペースが混在し、ImageMagickが正しく処理できない状態になっていたのです。
実際にPDFの内部カラースペースを確認すると、CMYKとRGBが混在していました。
|
1 2 3 |
[/Indexed/DeviceCMYK 122 34 0 R] [/DeviceN[/Magenta/Yellow]/DeviceCMYK 38 0 R 39 0 R] [/Indexed/DeviceRGB 199 120 0 R] |
解決策:「準拠する規格」を「なし」にする
Illustratorの「別名で保存」→「Adobe PDFを保存」ダイアログで、「準拠する規格」を「なし」に変更するだけです。
「準拠する規格」を「なし」に変更する。Web用途ならこれだけで解決
- Illustratorでファイルを開く
- 「ファイル」→「別名で保存」→ ファイル形式「Adobe PDF (pdf)」で保存
- 「Adobe PDFを保存」ダイアログで以下を確認:
- Adobe PDFプリセット:「最小ファイルサイズ」または「高品質印刷」
- 準拠する規格:「なし」(これが最重要)
- 「PDFを保存」をクリック
「準拠する規格」で「PDF/X-1a:2001」「PDF/X-3:2002」「PDF/X-4:2008」のいずれかが選ばれていると印刷用の制約が適用されます。Web用途やWordPressで使うPDFなら「なし」で問題ありません。
Web用なら「最小ファイルサイズ」プリセットを選ぶのが手軽です。このプリセットは自動的に「準拠する規格:なし」になり、RGBカラーで出力されます。
他の解決策
直接画像として書き出す:サムネイル用の画像が欲しいだけなら、PDFを経由せずIllustratorから直接PNGやJPGで書き出せば、カラーモードの問題を完全に回避できます。「ファイル」→「書き出し」→「Web用に保存(従来)」。
pdftoppm(Poppler)を使う(開発者向け):サーバー側で対処する場合、pdftoppm -png -r 150 input.pdf outputでCMYKからRGBへの変換を自動で行えます。PDF/X-1形式でも正しく変換できますが、サーバーにPopplerのインストールが必要です。なお、WordPressプラグインからpdftoppmを呼ぶにはexec()を使うことになりますが、プラグイン審査ではexec()の使用がセキュリティ上の問題として指摘されます。この問題への対処法は「WordPressプラグイン審査に通るまでの実体験」で詳しくまとめています。
なぜこの問題にハマりやすいのか
「RGBにすれば直る」という常識が通用しないのがPDF/X形式の落とし穴です。見た目では判別できず、pdfinfoで内部構造を見て初めて気づきます。
Illustratorは元々印刷物のデザインに特化したソフトウェアなので、PDF保存設定もデフォルトで印刷入稿を意識したものになりがちです。過去に印刷用データを作成したことがあると、その設定が「最後に使用した設定」として残っていることもあります。
カラーモード(RGB/CMYK)については多くの人が知っていますが、PDF/X規格の存在はあまり知られていません。さらに、PDF/X形式で保存されたPDFもAcrobatやプレビューでは普通に表示できるので、ImageMagickで変換するまで問題に気づきません。
手元のPDFを確認する方法
pdfinfoコマンドで「PDF subtype」にPDF/Xの表記があれば、それが原因です。
コマンドラインで確認(最も確実)
|
1 |
pdfinfo ファイル名.pdf | grep -i "subtype\|PDF version" |
出力にPDF subtype: PDF/X-1:2001のような行があれば、PDF/X形式です。
Adobe Acrobatで確認
PDFを開いて「ファイル」→「プロパティ」→「概要」タブの「詳細情報」。「PDF/X」という表記があればPDF/X形式。
macOSのプレビューで確認
「ツール」→「インスペクタを表示」→「一般情報」パネル。ただしPDF/X規格の詳細が表示されないことがあるので、確実に知りたい場合はpdfinfoを使ってください。
Web用PDFのチェックリスト
今後同じ問題を防ぐための確認項目です。
Illustratorの場合:
- ドキュメントのカラーモードがRGBになっているか
- PDF保存時の「準拠する規格」が「なし」になっているか
- プリセットは「最小ファイルサイズ」または「高品質印刷」か
その他のアプリの場合:
- 印刷用プリセット(PDF/X、Press Qualityなど)を避けているか
- Web用または画面表示用のプリセットを選択しているか
関連記事
Rapls PDF Image Creatorの開発に関連する記事です。
まとめ
PDFのサムネイルが真っ黒になる原因は「RGBにしていない」ではなく「PDF/X形式で保存している」です。Illustratorの保存ダイアログで「準拠する規格:なし」に変えるだけで解決します。
RGBに変更しても直らないのは、PDF/X-1規格がRGBの使用を禁止しているため。ドキュメントをRGBモードにしても、PDF/X形式で保存すると内部的にCMYKが使われます。pdfinfoコマンドで「PDF subtype」を確認すれば一発で原因を特定できるので、同じ症状に遭遇したらまずそこを見てください。










コメント