PDFのサムネイルが真っ白になる|古いGhostscriptがエラーを出さずに白紙を返していた

PDFのサムネイルが真っ白になる原因が古いGhostscriptにあることを示したイメージ図 ITライフハック
この記事は約6分で読めます。
当ページはプロモーションが含まれています

WordPress に PDF をアップロードすると、表紙のサムネイルが作られます。
ところが、それが真っ白になることがあります。
枠はある。大きさも正しい。中身だけが、何もない。
そして、エラーは出ません。
管理画面のどこにも、失敗したとは書かれていない。成功したように見えます。

原因が分かりました。サーバーに入っている Ghostscript が古いためです。

古いGhostscriptがエラーを出さずに白紙を返す流れを示した図

スポンサーリンク

何が起きているのか

PDFを絵にするのは、Ghostscript です

WordPress が直接やっているわけではありません。
PDFの1ページ目を画像にする処理は、Ghostscript というソフトに任されています。
サーバーに入っているもので、利用者からは見えません。

古い版には、描けないPDFがあります

透明の効果を含んだPDF。
PowerPoint や Illustrator から書き出すと、よくこの形になります。
Ghostscript 9.27 以前は、この種のPDFの描画に失敗します。

そして、失敗を報告しません

ここが、いちばん厄介なところです。
エラーを返すのではなく、正しい寸法の、真っ白なページを返します。
受け取った側から見れば、画像が返ってきたことになります。
だから、そのまま保存します。ファイルはできる。サイズもある。

利用者から見えるのは、こうです。
PDFはある。絵は出ない。理由はどこにも書いていない。

スポンサーリンク

実際に測りました

手元のサーバーで、同じPDFを使って確かめています。

サーバー       Xserver
ImageMagick   6.9.13-25
Ghostscript   9.27
PHP           8.3.33
対象のPDF      PowerPoint から書き出した約1.2MBのファイル
              (透明の効果と、画像を14個含む)

白紙かどうかは、数字で分かります

画像の全画素のばらつきを見ます。
絵が描かれていれば、明るい場所と暗い場所があるので、値がばらつきます。
真っ白なら、全部が同じ色。ばらつきはゼロになります。

結果

同じPDFから作られたサムネイルのファイルサイズを比較した図

WordPress 標準のプレビュー   16,910 バイト   ばらつき 0
Rapls PDF Image Creator     274,800 バイト   ばらつき 0.310

ばらつき0は、全画素が同じ1色という意味です。 真っ白でした。
それでも16,910バイトあります。ファイルとしては、できています。
だから、失敗したように見えません。
そして、この2つは同じアップロードの中で作られたものです。
時間差でも、別のサーバーでもありません。同じ処理の中で、片方が白紙を保存し、片方が絵を出しました。

WordPress のバグではありません

ここは、はっきり書いておきます。
WordPress は、Ghostscript が返したものを保存しています。
返ってきたのが白紙だったので、白紙を保存した。それだけです。
返ってきた画像を検査する設計になっていない、というだけで、壊れているわけではありません。

問題は、サーバーに入っている Ghostscript が古いことです。

新しい版なら、描けます

同じファイルを、Ghostscript 10.04 の環境で試しました。

Ghostscript 9.25    真っ白
Ghostscript 9.27    真っ白
Ghostscript 10.04   622,848 バイト・警告なしで描画

PDFは壊れていません。 中身も確認しましたが、構造に問題はありませんでした。
古い Ghostscript が描けないだけです。

回避する方法があります

Ghostscript には、透明の処理を使わずに描く指定があります。
それを付けて、同じPDFを描き直すと、こうなりました。

指定なし    11,018 バイト   白紙
指定あり   624,109 バイト   絵が出た

60倍近い差です。

ただし、常に使うわけにはいきません

透明の効果を正しく使っているPDFでは、この指定が見た目を変えてしまいます。
だから、最初から付けるのではなく、白紙が返ってきたときだけ付け直す形にしました。
まず普通に描く。結果を見て、白紙だったら、指定を付けてもう一度描く。

やっていることは、単純です

返ってきたものを見る。 それだけです。
作った画像が白紙かどうかを確かめて、白紙なら別の方法で描き直す。
難しい処理はしていません。
Rapls PDF Image Creator は、1.4.1 からこれをやっています。

Rapls PDF Image Creator – WordPress.org

自分のサーバーを確認する

プラグインを入れると、状態が見られます。

設定 → Rapls PDF Image Creator → Status

ここに「Ghostscript」の行が出ていれば、回避策が使われたサーバーです。
つまり、古い Ghostscript が入っているということになります。

根本的に直すなら

ホスティング事業者に、Ghostscript の更新を依頼するのが確実です。
回避策は、あくまで回避です。Ghostscript のバグを直したわけではありません。
新しい版が入れば、そもそも白紙になりません。

約束できないこと

正直に書いておきます。

「真っ白にならない」とは言えません

できるのは、白紙を保存しないことです。
回避策を試しても描けないPDFなら、絵は出ません。
ホスト側の問題が残っていれば、そこは変わりません。

Ghostscript を直したわけではありません

回避しているだけです。
透明を使わない描き方に切り替えているので、元のPDFと完全に同じ見た目とは限りません。

測ったのは、限られた範囲です

サーバー1台、PDF1本での結果です。
すべての環境で同じことが起きる、とは言えません。

思い当たる方へ

こういう状態なら、この件かもしれません。

・サムネイルはできているが、真っ白
・エラーは出ていない
・PowerPoint や Illustrator から書き出したPDF
・他のPDFでは、ちゃんと絵が出る

最後の1つが要点です。 全部が白紙なら、別の原因です。
特定のPDFだけが白紙なら、透明の効果を含んでいる可能性があります。

まとめ

  • PDFを絵にするのは、サーバーの Ghostscript
  • 9.27 以前は、透明の効果を含むPDFを描けない
  • そして、失敗を報告しない。 正しい寸法の真っ白なページを返す
  • だから、受け取ったものをそのまま保存する実装は、白紙を保存する
  • 実測:標準のプレビューは 16,910バイト・ばらつき0(真っ白)
  • 同じアップロードの中で、274,800バイト・ばらつき0.310 になったものもある
  • WordPress のバグではない。 返ってきたものを保存しているだけ
  • Ghostscript 10.04 なら、同じファイルを警告なしで描ける
  • 透明を使わない指定を付けると、11,018 → 624,109バイト
  • ただし常時は使えない。白紙だったときだけ描き直す
  • やっているのは、返ってきたものを見ることだけ
  • 確認は 設定 → Rapls PDF Image Creator → Status
  • 根本的には、ホスティング事業者に更新を依頼する

エラーが出ないのが、いちばん困るところでした。
失敗したと分かれば、調べようがあります。
成功したように見えると、どこを見ればいいのかも分かりません。

※本記事は2026年9月時点の実測です。サーバーの構成は変更されることがあります。

タイトルとURLをコピーしました