Rapls PDF Image Creator|WordPress PDFサムネイル生成プラグイン

Rapls PDF Image Creator WordPress
この記事は約30分で読めます。
  1. きっかけは、使っていたプラグインがWordPress.orgから取り下げられたこと
  2. PDFが増えると、メディアライブラリは想像以上に探しにくくなる
  3. このプラグインでやっていること
  4. このプラグインが効きやすいサイト・効きにくいサイト
  5. このプラグインを入れなくてもよいケース
  6. 生成されたサムネイルの活用先
    1. アイキャッチ画像として使う
    2. 投稿内画像として挿入する
    3. 固定ページの資料一覧で並べる
    4. ショートコードで貼り付ける
  7. 動作要件と最初の確認
  8. インストール方法
    1. プラグイン追加画面を開く
    2. Rapls PDF Image Creatorを検索する
    3. インストールして有効化する
    4. PDFをアップロードして動作確認する
  9. 最初に見てほしいのは設定画面ではなく、ステータスタブ
  10. 設定タブの選び方
    1. 画像サイズ
    2. 品質
    3. 出力形式
    4. ページ番号の指定
    5. 生成画像を非表示にするか
  11. 用途別の設定の目安
  12. 実務で効いてくる場面
    1. 企業サイトの資料ダウンロード
    2. 不動産・物件情報
    3. 学校・教育機関
    4. 行政・自治会・地域団体
    5. 士業・コンサル系サイト
    6. 採用ページ・応募書類
    7. EC・サービスサイトの商品仕様書
    8. 大学・研究機関
  13. サムネイルが真っ黒になる、という事件
    1. pdfinfoで覗いてみたら、PDF/X-1:2001だった
  14. とりあえずの回避策:Illustratorの「準拠する規格」をなしにする
  15. でも、毎回Illustratorで設定し直してもらうのは現実的じゃない
  16. 既存PDFのサムネイルをまとめて生成する
  17. サムネイルが出ないときの確認順
  18. WordPress.org公開時に直したこと
  19. 開発者向けのカスタマイズ
    1. テンプレート関数で表示する
    2. ショートコードで貼り付ける
    3. フィルターフックでカスタマイズする
  20. 他のプラグインとの併用で気をつけたいこと
    1. 画像最適化プラグインとの併用
    2. キャッシュプラグインとの併用
    3. メディアライブラリ系プラグインとの併用
  21. ちょっとした疑問への補足
  22. まとめ:PDFを継続的に扱うサイトなら、サムネイル化の効果は大きい

この記事について

この記事は、WordPressにアップロードしたPDFから表紙サムネイルを自動生成するプラグイン「Rapls PDF Image Creator」を、開発者本人の運用目線でまとめた導入・設定・活用ガイドです。なぜこのプラグインを作ることになったのか、どういうサイトで効果が出やすいのか、設定で迷いやすいところはどこか、生成された画像をアイキャッチや投稿内でどう活かせばよいのか、印刷用PDFでサムネイルが真っ黒になったときに何を確認するのか。公式プラグインページにはあまり書かれていない、実際にハマった部分や運用のコツを中心に書いています。

この記事で解決できること

  • WordPressにアップロードしたPDFを、画像サムネイル付きで管理したい
  • PDFアイコンばかりで、メディアライブラリから目的の資料を探しにくい
  • PDFの表紙画像を、アイキャッチや資料一覧に使いたい
  • PDFサムネイルが真っ黒になる原因と確認方法を知りたい
  • ImageMagick / Imagick / policy.xml のどこを確認すればよいか知りたい

確認日:2026年5月2日 / 検証環境:WordPress 6.9.4 / PHP 8.3.21 / Rapls PDF Image Creator v1.0.9.2 / Cocoon 2.9.1.1 / Xserver スタンダードプラン / Illustrator 28.6
本記事は、WordPress.org公式ディレクトリ掲載版、実際の管理画面、PDF/X形式の変換検証、NPO法人サイトでの実運用をもとにした解説です。サーバー環境やPDFの作成方法によって挙動が変わる場合があります。

検証した範囲

  • 確認したPDF: 通常PDF、PDF/X-1:2001、CMYKの印刷用PDF
  • 確認した操作: 新規アップロード、一括生成、生成画像の非表示、アイキャッチ利用
  • 確認できていないこと: すべてのレンタルサーバーでの動作、すべてのPDF/X形式での再現性

WordPress.org:Rapls PDF Image Creator(無料 / GPLv2 / 日本語対応)

Rapls PDF Image Creator

きっかけは、使っていたプラグインがWordPress.orgから取り下げられたこと

このプラグインを作った直接のきっかけは、自分で使っていた「PDF Image Generator」がメンテナンスされなくなり、WordPress.orgのディレクトリから取り下げられてしまったことでした。

私は普段、あるNPO法人のサイトの保守を担当しています。そのサイトでは、議事録や案内資料、活動報告などのPDFを定期的に追加していて、メディアライブラリにPDFサムネイルが表示されていることが、運用上かなり重要でした。担当者が複数人いる関係で、ファイル名だけで「どれがどの資料か」を把握するのが難しかったからです。

PDF Image Generatorはその用途にちょうどよく、長く使っていました。ところが、ある日アップデートが止まり、最終的にWordPress.orgから消えてしまいました。代替を探しましたが、しっくりくるものが見つかりません。多機能なPDFビューアープラグインはあっても、「アップロードしたら表紙画像を1枚作ってくれる」という、ただそれだけのプラグインがなかなかないのです。

結局、自分で作ることにしました。それが Rapls PDF Image Creator です。

「PDF Image Generator取り下げ → 自作開発」のストーリー概念図

公式ページとの違い

公式プラグインページは、機能、インストール手順、ショートコード、フック、動作要件を確認する場所です。この記事では、実際にPDFを扱うサイト運営者が迷いやすい「設定の選び方」「使いどころ」「活用方法」「黒いサムネイル問題」「サーバー環境の見方」を中心に解説します。

PDFが増えると、メディアライブラリは想像以上に探しにくくなる

WordPressのメディアライブラリは、画像を扱うにはかなり便利です。写真や図ならサムネイルを見るだけで中身が分かります。

ところがPDFは違います。PDFが並ぶと、見えるのは同じようなアイコンばかりです。ファイル名を確認しないと中身が分かりません。数本なら問題ないのですが、資料が増えるほど、これが地味にストレスになります。

私が保守しているNPO法人サイトでも、議事録、案内チラシ、申込書、活動報告など、PDFは年々増えていきました。ファイル名は付けているものの、複数の担当者が関わると命名規則が揺れますし、「3年前の総会資料はどれだったか」を探すのに毎回ファイル名を読まないといけません。同じ悩みを持つサイトは、たぶん多いと思います。

WordPressの管理画面でPDFを扱う作業を分解すると、だいたいこんな流れになります。アップロードしたあと、ファイル名で目的のPDFを探し、必要に応じて投稿に挿入する、あるいはアイキャッチに設定する。このうち「ファイル名で探す」の部分が、PDFが増えるほど時間を食うようになります。サムネイルが見えるだけで、ここがほぼゼロ秒に近づきます。

メディアライブラリのBefore比較

Before:すべて同じPDFアイコン

メディアライブラリのAfter比較

After:表紙サムネイルが表示されている

このプラグインでやっていること

やっていることは、かなり単純です。WordPressのメディアライブラリにPDFがアップロードされたタイミングで、PDFの先頭ページ(または指定したページ)を画像に変換して、サムネイルとして登録します。

裏側ではImageMagick(正確にはPHPのImagick拡張)を使ってPDFを画像にしています。出力形式はJPEG、PNG、WebPから選べて、生成された画像はWordPressのメディアとして扱えるので、そのままアイキャッチや投稿内画像にも使えます。

機能はあえてここまでに絞っています。PDFビューアーでもなく、電子ブック表示でもなく、派手な管理ツールでもありません。「PDFをアップしたら表紙画像が自動で出る」という一点だけです。

あれこれ機能を載せると、設定項目が増え、競合も増え、使う側も迷います。逆に、目的を絞ったプラグインは、入れたあとにほぼ意識せず使えます。日々の運用では、ひとつの困りごとを静かに解決してくれるプラグインのほうが、結果的に長く使えると思っています。

プラグイン動作フロー図

このプラグインが効きやすいサイト・効きにくいサイト

すべてのWordPressサイトで効果が出るプラグインではありません。「PDFが頻繁に増えるかどうか」「PDFを管理画面側で見分ける必要があるかどうか」が、効果が出るかどうかを分ける一番の分岐点です。

たとえば、月に1〜2本だけPDFを置いている個人ブログでは、ファイル名管理で十分なので、このプラグインの恩恵は小さいです。逆に、毎月数本〜数十本のPDFが追加されるサイト、複数人で更新作業を分担しているサイト、過去のPDFを定期的に参照するサイトでは、入れた瞬間に効果が分かります。

サイトの種類で言うと、こんなところで効きやすいです。

  • 企業サイト(製品カタログ、会社案内、料金表、ホワイトペーパー)
  • 不動産サイト(間取り図、物件詳細、重要事項説明書)
  • 学校・塾・習い事教室(配布プリント、時間割、行事予定、申込書)
  • 自治会・NPO・地域団体(議事録、活動報告、案内チラシ)
  • 士業サイト(契約書テンプレート、申請書、サンプル文書)
  • 採用ページを持つサイト(応募書類、職場紹介資料)
  • EC・サービスサイト(商品仕様書、利用規約PDF、サポート資料)
  • 大学・研究機関(論文、資料配布、シラバス)

サイト種別と「PDFサムネイルが効く理由」

逆に、「PDFを置いているけれど、ほとんど更新しない」「PDFはダウンロード用にだけ使っていて、管理画面で並べる必要がない」というサイトでは、生成処理だけかかってメリットが少ないです。その場合は無理に入れる必要はありません。

このプラグインを入れなくてもよいケース

Rapls PDF Image Creatorは、すべてのWordPressサイトに必要なプラグインではありません。PDFを年に数回しかアップロードしないサイトや、PDFを管理画面で探す機会がほとんどないサイトでは、導入しても大きな差は出ません。

また、サーバー側でImageMagickのPDF変換が許可されていない場合は、プラグイン設定だけでは解決できません。その場合は、無理に使おうとするより、PDFの表紙画像を手動で作る、またはサーバー環境を見直すほうが現実的です。

このプラグインが向いているのは、PDFを継続的に追加し、管理画面や資料一覧で「見た目で探せること」に価値があるサイトです。逆に、PDFを置くだけで管理作業がほとんど発生しないサイトでは、入れない判断も十分ありです。

生成されたサムネイルの活用先

PDFサムネイルが生成されたあと、それをどう使うかには複数の選択肢があります。「生成して終わり」ではなく、いくつかの場面で活用できるようにプラグインを設計しています。

アイキャッチ画像として使う

WordPressの投稿でPDF資料を紹介する場合、その投稿のアイキャッチ画像として、PDFのサムネイルを設定できます。投稿一覧やカード型のレイアウトでは、アイキャッチが並んだ視覚的な印象がそのままサイトの印象になるので、PDFを扱う投稿が多いサイトでは、アイキャッチ問題は地味に大きいです。

「資料紹介の投稿を書こうとするたびに、毎回アイキャッチ用の画像を作らないといけない」というストレスがなくなります。生成された画像を選んで、アイキャッチに設定するだけで終わります。

PDFの表紙画像がアイキャッチとして並んでいる様子と、それをクリックすると個別ページに飛ぶフロー

投稿内画像として挿入する

投稿の本文中に「これがダウンロード用の資料です」とPDF表紙を貼っておくと、読者は中身をある程度想像してからダウンロードボタンを押せます。テキストでだけ「○○のPDFはこちらから」と書くより、表紙画像が見えるほうがクリック率が上がるはずです。

WordPressの投稿エディタから「メディアを追加」を選び、生成された画像を選ぶだけで貼れます。Classic Editorでもブロックエディタでも、通常の画像挿入と同じ手順です。

固定ページの資料一覧で並べる

「資料ダウンロード」「ホワイトペーパー一覧」のような固定ページで、表紙サムネイル付きの一覧を作ることもできます。テーマやページビルダーの機能で「画像とリンク」を組み合わせれば、表紙画像をクリックでPDFをダウンロードする一覧が作れます。

ショートコードを使えば、もう少し動的なリストも作れます(後述)。

ショートコードで貼り付ける

記事内や固定ページに、PDFサムネイルやダウンロードリンクをショートコードで貼り付けることもできます。詳しいコードは「開発者向けのカスタマイズ」セクションで触れます。

ショートコード使用例の対比図

動作要件と最初の確認

このプラグインは、サーバー側にPDFを画像に変換できる環境があることが前提になります。WordPress側だけで完結しているわけではないので、ここをクリアできていないと、どんなに設定をいじっても動きません。

必要な環境は次のとおりです。

  • WordPress 6.0 以降
  • PHP 7.4 以降(8.x推奨)
  • PHPのImagick拡張が有効になっていること
  • サーバー側にImageMagickがインストールされていること
  • ImageMagickのpolicy.xmlでPDFの読み込みが許可されていること

4層の依存関係を縦または横に並べた図

レンタルサーバーの多くは、ImageMagickもImagick拡張も標準で入っています。ただ、policy.xmlの設定だけはサーバーによって異なり、PDF読み込みが禁止されているケースが時々あります。これはセキュリティ上の理由で意図的に制限されている場合もあるので、必ずしも「サーバー側のミス」というわけではありません。

導入前に動作要件を満たしているかを確認したい場合は、プラグインを有効化したあとに「設定 > Rapls PDF Image Creator > ステータス」を開けば、まとめてチェックできます。詳しい見方は後述します。

インストール方法

インストールはWordPress管理画面から普通にできます。ZIPの手動アップロードは不要です。

プラグイン追加画面を開く

WordPress管理画面の左メニューから「プラグイン」→「新規プラグインを追加」を開きます。

管理画面の左メニュー「プラグイン」→「新規プラグインを追加」

Rapls PDF Image Creatorを検索する

検索欄に「Rapls PDF Image Creator」と入力します。似た名前のプラグインがいくつかあるので、作者名が「rapls」になっていることも一応確認してください。

検索欄に「Rapls PDF Image Creator」と入力した状態

インストールして有効化する

「今すぐインストール」をクリックし、完了したら「有効化」をクリックします。

「今すぐインストール」をクリック

有効化後、プラグイン一覧に追加された状態

PDFをアップロードして動作確認する

有効化したら「メディア」→「新しいメディアファイルを追加」からPDFをアップロードします。サーバー環境に問題がなければ、アップロード後に表紙画像が自動的にサムネイルとして表示されます。

PDFをアップロードした直後。表紙画像が自動的にサムネイルとして生成されている

ここでサムネイルが出ない場合は、プラグインの設定よりもサーバー環境を疑ったほうが早いです。次のセクションでステータスタブの見方を説明します。

最初に見てほしいのは設定画面ではなく、ステータスタブ

このプラグインは、PDFを画像に変換する処理をImageMagickに任せています。要するに、WordPress側で完結しているわけではなく、サーバー側にPDFを変換できる環境が必要、ということです。

そのため、設定タブをいじる前に、まずステータスタブを開いてください。

ステータスタブの確認画面

ステータスタブ。「ImageMagickが利用可能です」「PDF変換がサポートされています」が表示されていれば、基本的な変換環境は整っています。

「ImageMagickが利用可能です」「PDF変換がサポートされています」と両方表示されていれば、まずはそのまま使えます。あとはPDFをひとつアップロードして、サムネイルが出るかを確認すれば導入完了です。

問題なのは「PDF変換がサポートされていません」と出る場合で、これは多くの場合、サーバー側のImageMagick設定(policy.xml)でPDFの読み込みが禁止されている状態です。プラグイン側の設定をどう変えても解決しないので、レンタルサーバーのサポートに「ImagickでPDF変換を使いたい」と問い合わせるか、それが難しければサーバーを変えるしかありません。

ステータスタブには、ImageMagickのバージョン、対応している入出力フォーマット、メモリ上限なども表示されます。トラブル時にこの画面のスクリーンショットを取っておくと、サーバーサポートとのやり取りがスムーズになることが多いです。

設定タブの選び方

デフォルトのままでも動きますが、サイトの用途によって調整したほうが扱いやすくなります。

プラグイン設定画面(設定タブ)

画像サイズ

画像サイズは、ブログや企業サイトなら最大幅・最大高さを1024px前後にしておけば十分なことが多いです。表紙を大きく見せたい場合は2048pxにしてもいいのですが、そのぶんファイルサイズも変換負荷も増えます。

私が保守しているNPO法人サイトでは、最初は大きめの画像で生成していましたが、PDFが増えるにつれて管理画面の軽さを優先するようになりました。今は、一覧で見分ける用途なら1024px前後で十分だと感じています。表紙の細かい文字まで読ませるというより、「どの資料かを一瞬で判別する」ことが目的だからです。

WordPressのアイキャッチ画像として使う場合、テーマが想定している幅は1200px〜1600pxくらいが多いので、1024pxでも実用的です。表紙を本のように大きく扱うランディングページなどでは2048pxにする価値があります。

品質

品質はJPEGやWebPなら80〜85くらいが扱いやすいです。普通の資料サムネイルなら、これで十分きれいに見えます。印刷物の細かい文字をきれいに見せたい場合だけ、90以上を検討するくらいでいいと思います。

実際の運用では、品質を上げすぎるよりも、一覧表示で判別できることと、ページの表示速度を両立するほうが重要でした。特に資料一覧ページに複数のPDF表紙を並べる場合は、1枚だけを高画質にするより、ページ全体が重くならない設定にしたほうが使いやすいです。

逆に品質を70以下に下げると、ファイルサイズはかなり小さくなりますが、表紙の細かい文字が読めなくなることがあります。とくに会社案内や料金表のように、サムネイルから内容を匂わせたい場合は、品質を下げすぎないほうが結果的にクリック率が上がります。

出力形式

出力形式は、軽さ重視ならWebP、互換性重視ならJPEG、劣化を避けたいならPNGです。ただ、すべてのサイトでWebPがベストとは限りません。古めの画像処理プラグインや、サイト全体の運用ルールとの相性もあるので、そこは状況を見て選んでください。

私の運用では、管理画面での判別とページ表示の軽さを重視するサイトではWebP、他の画像最適化プラグインや古い運用ルールとの相性を優先するサイトではJPEGを選ぶことが多いです。PNGはきれいですが、PDFが増えるサイトではファイルサイズが大きくなりやすいので、必要な場面に絞ったほうが扱いやすいです。

具体的には、こんな目安です。

形式 特徴 向いているケース
WebP 同等画質でファイルサイズが小さい 表示速度を重視するサイト、PDFを大量に扱うサイト
JPEG 広く使える、互換性が高い 既存の画像処理プラグインと併用するサイト、社内ツール
PNG 劣化なし、文字や細線がくっきり デザイン重視サイト、印刷物プレビュー

ページ番号の指定

デフォルトでは1ページ目をサムネイルにします。ただ、PDFによっては1ページ目が表紙ではなく目次や注意書きになっていることがあります。その場合は、設定画面でページ番号を変更できます。

たとえば申込書のPDFで、1ページ目が説明、2ページ目が記入用紙になっているケース。ここでは2ページ目をサムネイルにしたほうが「これは記入用紙だな」とすぐ分かります。同じ要領で、3ページ目、4ページ目と任意のページを指定できます。

生成画像を非表示にするか

「生成画像をメディアライブラリに表示するか」も好みが分かれます。生成画像を直接アイキャッチや投稿内画像に使いたいなら表示しておくほうが便利ですが、PDFが多いサイトだと、生成画像まで一覧に並ぶとかえって見づらくなります。私はNPO法人サイトでは非表示にしています。

非表示にしても、PDF自体のサムネイル表示は変わりません。あくまで「生成された画像ファイル」をライブラリに見せるかどうかの設定です。

用途別の設定の目安

サイトの目的によって、適した設定はかなり違います。迷ったら、このあたりから始めるとよいと思います。

用途 おすすめ設定 理由
一般ブログ・企業サイト 1024px / 品質80〜85 / WebPまたはJPEG 画質と軽さのバランスがよく、通常の資料表示に向く
デザイン・印刷系サイト 2048px / 品質90以上 / PNGまたは高品質JPEG 細かい文字やデザインを見せたい場合に向く
PDF大量アップロード 800px / 品質70〜75 / WebP ファイルサイズと変換負荷を抑えやすい
資料ダウンロードページ 1024px / 品質85 / JPEGまたはWebP 一覧表示が見やすく、ページの表示速度も保ちやすい

同じPDFを異なる設定で生成した結果を比較

実務で効いてくる場面

このプラグインが効いてくるのは、PDFを「置いておくだけ」のサイトより、PDFを頻繁に追加・差し替えするサイトです。少し具体的に書いていきます。

企業サイトの資料ダウンロード

製品カタログや会社案内、ホワイトペーパー、料金表をPDFで配布している企業サイトでは、表紙サムネイルがあるかないかで資料一覧の印象が大きく変わります。ファイル名だけのリンクと、表紙画像付きのリストでは、訪問者の「クリックしやすさ」が違うはずです。

とくにB2B系のサイトでは、資料ダウンロードページがリード獲得の入口になっていることが多く、表紙画像があるだけで「この資料、ちょっと中見てみたい」と思わせる効果があります。複数の資料を並べたカード型レイアウトでも、サムネイルが揃っていることで一覧の見栄えが変わります。

不動産・物件情報

不動産サイトでは、間取り図をPDFで扱うことがあります。PDFアイコンだけでは物件ごとの違いが分かりませんが、間取り図そのものがサムネイルになっていれば、管理者も訪問者も直感的に確認できます。

物件管理画面でPDFをまとめて並べる場面では、間取り図のサムネイルが視認できるだけで、目的の物件をすぐ取り出せます。複数の担当者がPDFを差し替える運用でも、ファイル名のミスマッチを早めに気づけます。

学校・教育機関

学校、塾、習い事教室では、配布プリント、時間割、行事予定、申込書、お便りといった種類のPDFが並ぶことになります。年度をまたいでPDFが蓄積していくと、年末の総会や入学案内のように、過去の資料を引っ張り出す場面が定期的にやってきます。

こういうサイトでは、PDFサムネイルがあるだけで、保護者や生徒が目的の資料を探しやすくなります。管理者側でも「これは去年の運動会のお知らせだな」と表紙だけで判別できるので、差し替え作業が早くなります。

行政・自治会・地域団体

自治体、NPO、地域団体のサイトでも、PDF資料はよく使われます。私が保守しているNPO法人サイトもこの系統で、議事録や活動報告、案内チラシをずっとPDFで管理してきました。

議事録のように年度ごとに発行される資料や、定期的な活動報告のように似たフォーマットの資料が並ぶ場合、表紙の色やレイアウトの違いで「これは何年度の」が一発で分かるようになります。文書管理に詳しくない担当者が更新する場面でも、ファイル名を読まずに作業できるのは助かります。

士業・コンサル系サイト

司法書士、行政書士、社労士、税理士のように、契約書テンプレートや申請書サンプルをサイトで配布している事務所もあります。クライアント向けに「○○の申請書類サンプル」「××の契約書フォーマット」を並べる場面で、サムネイルがあると「あ、これは委任状か」「これは登記申請書だな」と表紙だけで判別できます。

採用ページ・応募書類

採用ページに応募書類のPDFを置いているサイトでも、サムネイルが効きます。「履歴書テンプレート」「職務経歴書テンプレート」のように複数のフォーマットを置いている場合、表紙が見えるだけで応募者が必要な書類を選びやすくなります。

EC・サービスサイトの商品仕様書

ECサイトで商品ページに仕様書PDFを添付している場合、商品一覧でPDFサムネイルが見えるだけで「製品の見た目」と「仕様の見た目」を同じ画面で確認できます。BtoBの工業製品のように、画像と仕様書がセットで重要な商材で効きます。

大学・研究機関

大学、研究室、学会のサイトでは、論文、資料配布、シラバス、報告書といったPDFが大量に蓄積していきます。研究室のサイトで「過去の発表資料」を並べる場合、表紙サムネイルがあると年度ごとの作業が見える化されて、サイトに研究の蓄積が感じられるようになります。

サムネイルが真っ黒になる、という事件

ここからは、開発中に実際にハマった話です。

NPO法人サイトの保守作業で、クライアントから「あるイベントのチラシPDFを掲載したい」という依頼がありました。普段どおり担当者がPDFをアップロードしたところ、サムネイルが真っ黒になりました。

最初は、PDFのカラーモードがCMYKだからだろうと思いました。印刷用に作ったPDFだったので、その線で間違いないだろうと。IllustratorでRGBに変換し直して、もう一度アップロードしてみました。

結果は、変わりませんでした。真っ黒のままでした。

この時点で、単純に「CMYKだから黒い」という話ではないと分かりました。試しに別のPDFを上げてみるとちゃんとサムネイルが出ます。当時使っていたPDF変換系のプラグインを別のものに差し替えてみても、やっぱり同じPDFは真っ黒になります。プラグインの問題というより、このPDFそのものに何かある、という感触になってきました。

PDF/X-1形式で保存したPDF(左:真っ黒)と、「準拠する規格:なし」で保存し直したPDF(右:正常)

PDF/X-1形式で保存したPDF(左:真っ黒)と、「準拠する規格:なし」で保存し直したPDF(右:正常)

pdfinfoで覗いてみたら、PDF/X-1:2001だった

原因を絞り込むため、ローカル環境でPDFの中身を見てみることにしました。pdfinfoというコマンドラインツールでPDFのメタ情報を表示できます。

そこに PDF subtype: PDF/X-1:2001 と書かれていました。

pdfinfoコマンドの実行結果。PDF subtype: PDF/X-1:2001が表示されている

pdfinfoの実行結果。「PDF subtype: PDF/X-1:2001」が原因特定の手がかりになりました。

PDF/X-1:2001は、印刷入稿用のPDF規格です。印刷データとしては正しい形式なのですが、Web上で画像に変換するときには相性が悪いことがあります。CMYKや特色を前提としたデータ構造になりやすく、変換処理の途中でカラースペースの扱いを間違えると、色がごっそり崩れることがあるのです。

具体的には、ImageMagickがCMYKの数値をsRGBへ変換する前にflatten(平坦化)処理を走らせてしまうと、その時点で色が壊れます。あとからsRGBへ変換しても、すでに壊れた色は戻りません。それで真っ黒に見えていた、というわけです。

とりあえずの回避策:Illustratorの「準拠する規格」をなしにする

原因が分かれば、Illustratorで書き出すPDFなら、その場で回避できます。Web掲載用のPDFについては、保存ダイアログの「準拠する規格」を「なし」に変えるだけです。

手順としては、Illustratorで「別名で保存」を選んで、Adobe PDFを選んで保存ダイアログを開き、「準拠する規格」がPDF/X-1aなどになっていたら「なし」に変更します。Web用ならついでに「最小ファイルサイズ」プリセットを選んでおくと軽くなります。

Illustratorの「準拠する規格」がPDF/X-1a:2001になっている状態

「準拠する規格」を「なし」に変更したIllustratorのダイアログ

Web掲載用なら「準拠する規格:なし」に変更すると、サムネイル生成時の色崩れを避けやすくなります。

もちろん、印刷所に入稿するPDFはPDF/X形式が指定されていることが多いので、その用途では従来どおりの設定で書き出します。Web掲載用と印刷入稿用を別ファイルに分けるのが、結局のところ一番安全です。

でも、毎回Illustratorで設定し直してもらうのは現実的じゃない

運用面でいうと、サイトの担当者にPDFを渡されるたびに「Illustratorで設定を変えて書き出し直してください」とお願いするのは、けっこう無理があります。クライアントが手元で印刷用PDFをそのままアップロードしてくることもあります。

そこで、プラグイン側で自動的にCMYKをsRGBへ変換するようにしました。これがv1.0.9での対応です。

実はそれ以前のバージョンでも、この問題自体には気づいていました。ただ、ImageMagickのtransformImageColorspaceでカラースペースを変換すればいい、というところに最初は辿り着けず、しばらくお手上げ状態でした。最終的には、似たような処理をしている他のプラグインのソースを読んだり、AIに相談しながらコードを追ったりして、解決策の形が見えてきました。

ポイントは、変換の順番でした。

CMYK→sRGB変換の順序対比図

CMYKのままflattenしてしまうと、その時点で色情報が壊れます。あとからsRGBに変換しても戻りません。正しい順序は、PDFを読み込み、カラースペースを確認し、CMYKならsRGBへ変換し、そのあとでflattenやリサイズを行う流れです。

ここから少しだけ技術的な話になります。サイト運営者の方は、「sRGB変換を先に行い、そのあとで平坦化する必要がある」とだけ押さえておけば大丈夫です。開発者の方は、以下の処理順を見ると原因が分かりやすいと思います。

v1.0.9をリリースしてから、自分でNPO法人サイトに入れて試してみました。あの真っ黒だったチラシPDFが、ちゃんと表紙サムネイルで表示されたときは、ようやく直ったかと安心したのを覚えています。

もし、過去にアップロードしたPDFのサムネイルが真っ黒になっている場合は、プラグインをv1.0.9以降に更新したうえで、後述の「一括生成」からまとめて作り直せます。

既存PDFのサムネイルをまとめて生成する

プラグイン導入前にアップロード済みのPDFについては、一括生成タブからまとめてサムネイルを作れます。

一括生成タブの実行画面

一括生成タブ。プラグイン導入前のPDFにもまとめてサムネイルを生成できます。

便利ですが、PDFが数百件あるサイトではサーバーに負荷がかかります。アクセスが少ない時間帯に走らせるのが安全です。

あと、一括生成はブラウザ上で進む処理なので、途中で画面を閉じると止まります。完了するまでは画面を開いたままにしておいてください。

一括生成は、サムネイル設定を変更したあとの「再生成」にも使えます。たとえば最初は1024px / JPEGで生成していたサムネイルを、あとから2048px / WebPに変えたい場合、設定を変えてから一括生成を走らせると、すべての既存PDFが新設定で生成し直されます。途中で設定方針を変えたときに地味に役立つ機能です。

サムネイルが出ないときの確認順

サムネイルが生成されないときは、いきなり設定をいじるよりも、外側から原因を絞り込んでいくほうが早いです。

トラブルシューティング判断フロー図

まずステータスタブで、ImageMagickとPDF変換サポートが利用可能になっているかを確認します。ここで利用不可になっているなら、プラグイン側ではなくサーバー側の問題です。レンタルサーバーのサポートに問い合わせるか、ローカル環境でImageMagickのインストール状態を確認してください。

次に、PDFがパスワード保護されていないかを見ます。閲覧パスワードや印刷制限がかかっているPDFは、変換に失敗することがあります。これは通常のPDFとは別ものとして扱ったほうが無難です。

PDFの容量とページサイズも疑います。数十MBあるPDFや極端に大きい用紙サイズのPDFは、変換時にメモリを多く使います。wp-config.phpでWordPressのメモリ上限を増やすと改善する場合があります。

一括生成が途中で止まる場合は、サーバーのタイムアウトを疑います。PDFの数を分割して試したり、負荷の低い時間帯に走らせたり、サーバー側のmax_execution_timeの制限を確認してみてください。

そして、サムネイルが「真っ黒になる」ケースだけは、別の角度から見ます。PDF/X形式かどうかを確認するのが手っ取り早いです。コマンドラインが使える環境なら、こんな感じです。

PDF/Xの表記が出てきたら、Illustrator側の保存設定を見直すか、プラグインをv1.0.9以降に更新してください。

WordPress.org公開時に直したこと

このプラグインも、WordPress.orgに掲載してもらう前にレビューチームの審査を通っています。Thanks Mail for Stripeのときと同じく、いくつか指摘を受けて修正しました。これからプラグインを公開する人の参考になりそうな部分なので、書いておきます。

WordPress.orgレビュー指摘4項目の図

  • プラグイン名の変更:もともと「PDF Image Creator」という名前で提出したのですが、「一般的すぎる」という理由で名前の変更を求められました。WordPress.orgでは、プラグイン名の独自性も審査対象になります。最終的にブランド名を頭に付けて「Rapls PDF Image Creator」にしました。
  • プレフィックスの統一(rapls_pic_):関数名・オプション名・テーブル名などに、4文字以上のユニークなプレフィックスを付けることが求められます。最初は他の文字列が混ざっていたので、すべてrapls_pic_に統一しました。
  • 名前空間を Rapls\PDFImageCreator に変更:クラス側の名前空間も独自性を持たせるよう指摘されました。これも上のプレフィックス対応と合わせて整理しました。
  • Ghostscriptをexecで呼ぶ実装をやめた:初期実装では、PDFを画像化する処理にGhostscriptをexec経由で呼び出していました。が、外部コマンドをexecなどで実行するのはセキュリティ上の懸念があるとして、規約上禁止されています。これはレビューで明確に指摘され、ImageMagick(Imagick拡張)を使う実装に書き直しました。

初回提出で全部一発OKになるプラグインは、たぶんあまりないと思います。指摘は具体的で、直し方もたいていレビューメッセージの中で示されるので、そのとおりに対応すれば通ります。むしろ、自分が普段あいまいにしていた部分(命名・外部コマンド・名前空間など)を強制的に整える機会になり、ありがたい仕組みだと感じました。

開発者向けのカスタマイズ

テーマや別のプラグインからPDFサムネイルを使いたい場合は、テンプレート関数とショートコードが用意されています。ここでは代表的な使い方をいくつか挙げておきます。

テンプレート関数で表示する

テーマのsingle.phpやカスタムテンプレートからPDFサムネイルを呼び出したい場合は、テンプレート関数が使えます。

サイズには WordPress標準のサイズ名(thumbnail / medium / large / full)が使えます。テーマで独自のサイズをadd_image_size()で登録している場合、そのサイズ名も指定できます。

ショートコードで貼り付ける

記事や固定ページの本文中に、サムネイルやダウンロードリンクを直接貼りたい場合はショートコードが手軽です。

ショートコードのパラメータには、id(添付ファイルのID)、size(画像サイズ)、text(リンクのアンカーテキスト)などが使えます。

固定ページの「資料ダウンロード一覧」ページで、複数のPDFをサムネイル付きで並べたい場合は、Cocoonのテーマであればカラム機能で2列または3列に分けて、各カラムに[rapls_pdf_thumbnail][rapls_pdf_download_link]を組み合わせて貼ると、それっぽい一覧ができあがります。

フィルターフックでカスタマイズする

もう少し細かい制御をしたい場合は、フィルターフックでサムネイル生成の前後に処理を挟めます。詳細はWordPress.org側のプラグインページに一覧がありますが、よく使うパターンとしては「特定の条件のPDFだけ別ページをサムネイルにする」「サムネイル生成をスキップする」といった用途で活躍します。

フィルターフックやアクションフックの一覧、より細かい仕様については、WordPress.org側のプラグインページを参照してください。この記事では使い方の全体像を中心にまとめています。

他のプラグインとの併用で気をつけたいこと

このプラグインはPDF→画像変換だけを担当しているので、ほとんどの他プラグインと共存できます。ただ、いくつか相性で気をつけたい場面があります。

画像最適化プラグインとの併用

EWWW Image Optimizer、ShortPixel、Imagify などの画像最適化プラグインを併用していると、生成されたサムネイル画像も最適化対象に入ります。これはふつうは問題ありません。むしろ、二重最適化でファイルサイズがさらに小さくなる場合もあります。

ただ、生成のタイミングが重なると、PDFアップロード直後に「変換 → 最適化」が連続して走るので、サーバー負荷がやや高くなります。大量のPDFを一気にアップロードする場面では、最適化プラグインを一時的に止めておくと安心です。

キャッシュプラグインとの併用

WP Rocket、W3 Total Cache、LiteSpeed Cache のようなキャッシュプラグインを使っている場合、生成されたサムネイル画像が表示されないように見えることが時々あります。これは、キャッシュが古い状態(PDFサムネイルがまだない状態)を保持しているためです。

新しくPDFをアップロードしたあとに表示が反映されない場合は、該当ページのキャッシュをクリアしてみてください。一括生成のあとは、サイト全体のキャッシュをクリアするのが手っ取り早いです。

メディアライブラリ系プラグインとの併用

FileBird、WP Media Folder のようなメディアライブラリ拡張プラグインとも、問題なく併用できます。生成されたサムネイル画像も、これらのプラグインのフォルダ機能で整理できます。

ただし、メディアライブラリのアップロード処理を大きく改変するプラグインを併用している場合、まれに変換処理が走らないことがあります。テスト環境で動作確認してから本番に入れることをおすすめします。

ちょっとした疑問への補足

使ってみると気になりやすいポイントを、いくつか補足しておきます。

「2ページ目をサムネイルにしたい」というのは時々あります。たとえば1ページ目が注意書きで、2ページ目に本来の表紙があるような資料です。これは設定画面でページ番号を変更できますし、フィルターフックでも制御できます。

「既存のPDFにもサムネイルを付けたい」場合は、前述の一括生成からまとめて作れます。設定変更後の再生成にも同じ機能が使えます。

「プラグインを削除したら生成画像はどうなるか」は設定次第です。デフォルトでは削除されますが、「アンインストール時に画像を保持」を有効にしておけば、生成済みの画像は残ります。一時的にプラグインを停止して動作確認したい場合などは、保持を有効にしておくと安心です。

「他のPDFビューアープラグインと併用できるか」については、結論からいうとできます。このプラグインはPDFビューアーではなく、サムネイル生成だけを担当しているからです。ただ、PDFアップロード処理やメディアライブラリを大きく書き換えるプラグインを併用している場合は、念のためテスト環境で確認してください。

「CMYKとRGBは何が違うのか」は、ざっくり言うと、RGBは画面表示の光の色で、値が大きいほど明るくなります。CMYKは印刷インクの量で、値が大きいほど暗くなります。Web表示用のサムネイルでは、CMYKを適切にsRGBへ変換する必要があり、その変換でつまずくと真っ黒になります。

「画像のalt属性は自動で付くのか」については、デフォルトでPDFのファイル名がベースになります。アクセシビリティを重視する場合は、生成後にメディアライブラリから個別に編集してください。

「複数言語サイト(WPMLやPolylang)と組み合わせられるか」は、PDFそのものを言語別に分けて管理する形であれば問題なく動きます。同じPDFを複数言語の投稿で使い回す場合は、メディアライブラリ単位での管理になるので、運用ルールを決めておくとスムーズです。

まとめ:PDFを継続的に扱うサイトなら、サムネイル化の効果は大きい

Rapls PDF Image Creatorは、PDFビューアーでも、電子ブック表示プラグインでもありません。WordPressにアップロードしたPDFから表紙画像を生成し、メディアライブラリや投稿内で扱いやすくするためのプラグインです。

PDFが少ないサイトでは、必要性は高くありません。しかし、議事録、案内資料、カタログ、申込書、仕様書、ホワイトペーパーなどを継続的に追加しているサイトでは、管理画面でPDFを見分けられるだけで作業がかなり楽になります。

私自身、NPO法人サイトの保守でPDF管理に困ったことが、このプラグインを作るきっかけでした。PDF/X-1:2001の黒サムネイル問題のように、実際に運用しないと気づきにくい問題もありました。この記事が、同じようにWordPressでPDF管理に困っている方の参考になればうれしいです。

導入判断の目安

  • PDFを毎月追加するサイトなら、導入する価値があります。
  • 複数人でPDFを管理するサイトなら、ファイル名確認の手間を減らせます。
  • PDF表紙を資料一覧やアイキャッチに使いたいサイトなら、見た目の統一に役立ちます。
  • PDFを年に数回しか使わないサイトなら、無理に入れる必要はありません。

コメント

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