WordPressでPDFを扱っていると、こんな悩みに直面しませんか?
- メディアライブラリがPDFアイコンだらけで、どれがどのファイルか分からない
- PDFを投稿に挿入するとき、味気ないリンクテキストしか選べない
- 「PDF Embedder」など高機能なプラグインは、やりたいことに対して重すぎる
私自身、クライアントのWordPressサイト保守で同じ問題を抱えていました。以前は別のプラグインで解決していたのですが、開発停止でWordPress.orgから削除されてしまい、代替を探すことに。
しかし見つかるのは、機能過多で設定が複雑なものばかり。「PDFをアップしたら表紙画像を自動生成する」——ただそれだけのシンプルなプラグインがない。
だから自分で作りました。
この記事では、開発者である私が「なぜこの設計にしたか」「実務でどう使うか」「ハマりやすいポイント」まで、WordPress.orgのreadmeには書ききれない部分を解説します。
このプラグインが解決する問題
Before:PDFアイコン地獄
WordPressのメディアライブラリにPDFをアップロードすると、すべて同じアイコンで表示されます。10個、20個と増えていくと「どれがどのPDFか」まったく分かりません。
ファイル名で判断するしかないのですが、クライアントから受け取ったPDFは「資料.pdf」「最終版.pdf」「修正2.pdf」といった名前がついていることも多く、管理が破綻します。
After:表紙が見える
このプラグインを入れると、PDFをアップロードした瞬間に表紙(1ページ目)が画像として生成され、メディアライブラリに表示されます。
「あの赤い表紙のやつ」「グラフが載ってるPDF」——視覚的に探せるようになります。
なぜ「サムネイル自動生成」にこだわったか
類似プラグインを探したとき、多くは「PDFビューアー」や「埋め込み表示」がメイン機能でした。でも私が欲しかったのは違いました。
私が必要だった機能
- アップロードしたら勝手にサムネイルができる(手動作業ゼロ)
- 生成した画像をアイキャッチや投稿に使える(WordPress標準の画像として扱える)
- 余計な機能がない(ビューアーは別プラグインでいい)
だから削ぎ落とした機能
- PDFビューアー機能 → 不要(必要なら専用プラグインを使えばいい)
- 複数ページのサムネイル生成 → 不要(表紙1枚で十分なケースが大半)
- 外部サービス連携 → 不要(サーバー内で完結させたい)
結果、インストールして有効化するだけで動くシンプルなプラグインになりました。
動く環境・動かない環境(サーバー別の注意点)
このプラグインはImageMagick(Imagick PHP拡張)を使ってPDFを画像に変換します。WordPress.orgのreadmeには「ImageMagickが必要」としか書いていませんが、実際にはサーバーによって状況が異なります。
主要レンタルサーバーの対応状況(2024年時点)
| サーバー | ImageMagick | PDF変換 | 備考 |
|---|---|---|---|
| Xserver | ✅ 利用可 | ✅ 対応 | 標準で動作 |
| ConoHa WING | ✅ 利用可 | ✅ 対応 | 標準で動作 |
| さくらのレンタルサーバ | ✅ 利用可 | ✅ 対応 | 標準で動作 |
| ロリポップ | ✅ 利用可 | ⚠️ 要確認 | プランにより異なる |
| mixhost | ✅ 利用可 | ✅ 対応 | 標準で動作 |
| wpX Speed | ✅ 利用可 | ✅ 対応 | 標準で動作 |
確認方法
プラグインを有効化後、「設定」→「Rapls PDF Image Creator」→「ステータス」タブを確認してください。
|
1 2 3 |
✓ ImageMagick (Imagick) が利用可能です ✓ PDF変換がサポートされています |
この2つが表示されていればOKです。
動かない場合
「PDF変換がサポートされていません」と表示される場合、サーバーのImageMagickポリシーでPDFが禁止されている可能性があります。共用サーバーでは変更できないことが多いので、ホスティング会社に問い合わせてください。
おすすめ設定(用途別)
デフォルト設定でも動きますが、用途によって調整すると効率的です。
一般的なブログ・コーポレートサイト
| 最大幅/高さ | 1024px |
| 品質 | 80〜85 |
| フォーマット | WebP(軽量)またはJPEG(互換性重視) |
| 生成画像を非表示 | ON(メディアライブラリの肥大化防止) |
デザイン・印刷系(高画質が必要)
| 最大幅/高さ | 2048px |
| 品質 | 95 |
| フォーマット | PNG(劣化なし) |
PDF大量アップロード(サーバー負荷を抑えたい)
| 最大幅/高さ | 800px |
| 品質 | 70〜75 |
| フォーマット | WebP |
実務での活用パターン
パターン1:資料ダウンロードページ
企業サイトでホワイトペーパーやカタログを配布する場合、PDFの表紙サムネイルがあると「どんな資料か」が一目で分かります。
ショートコードを使えば、簡単にサムネイル付きダウンロードリンクを設置できます:
|
1 2 |
[rapls_pdf_download_link id="123" size="medium" text="資料をダウンロード"] |
パターン2:不動産・物件情報
間取り図PDFをアップロードすると、自動で間取り画像がサムネイルになります。物件一覧ページで「画像として」表示できるので、ユーザーがクリック前に内容を確認できます。
パターン3:学校・教育機関
配布プリントや時間割PDFの管理に。教員がPDFをアップロードするだけで、保護者向けページに表紙付きで一覧表示できます。
よくあるトラブルと解決策
🔴 サムネイルが生成されない
原因1:ImageMagickが無効
→ 「設定」→「ステータス」タブで確認。「利用不可」なら、サーバー側の問題です。
原因2:PDFが暗号化されている
→ パスワード保護されたPDFは変換できません。保護を解除してから再アップロードしてください。
原因3:PHPメモリ不足
→ 大きなPDF(数十MB)だと、PHPのメモリ制限に引っかかることがあります。wp-config.phpで以下を追加:
|
1 2 |
define( 'WP_MEMORY_LIMIT', '256M' ); |
🔴 サムネイルが真っ黒になる
原因:PDFのカラースペースがCMYK(印刷用PDF)
この問題は、Adobe IllustratorやInDesignで作成した印刷用PDFで発生しやすいです。
なぜ真っ黒になるのか?
コンピュータの画面と印刷物では、色の表現方法が異なります。
- RGB(画面用):赤・緑・青の光を混ぜて色を表現。3色を最大にすると「白」になる
- CMYK(印刷用):シアン・マゼンタ・イエロー・黒のインクを重ねて色を表現。4色を重ねると「黒」になる
ImageMagickはデフォルトでRGBを想定しているため、CMYKのデータをそのまま処理すると色の解釈が狂い、真っ黒になってしまいます。
特に注意が必要なケース:PDF/X形式
Illustratorで「別名で保存」→「Adobe PDF」を選んだとき、「準拠する規格」が以下のいずれかになっていると、ドキュメントがRGBモードでも内部的にCMYKに変換されます。
- PDF/X-1a:2001
- PDF/X-1a:2003
- PDF/X-3:2002
- PDF/X-4:2008
これらは印刷入稿用の国際規格で、RGBが使用禁止という制約があるためです。
✅ バージョン1.0.9で自動対応
バージョン1.0.9以降、プラグインはPDFのカラースペースを自動検出し、CMYKの場合はsRGB(画面表示用の標準的なRGB)に変換してからサムネイルを生成します。
|
1 2 3 4 5 6 |
// 内部処理(自動で実行されます) $colorspace = $imagick->getImageColorspace(); if ($colorspace === COLORSPACE_CMYK) { $imagick->transformImageColorspace(COLORSPACE_SRGB); } |
これにより、PDF/X-1:2001形式などの印刷用PDFでも正しい色でサムネイルが生成されるようになりました。
それでも真っ黒になる場合
まれに、特殊なカラープロファイルを使用したPDFでは変換がうまくいかないことがあります。その場合は、PDF作成時に以下を試してください:
- IllustratorでPDFを保存する際、「準拠する規格」を「なし」に設定
- プリセットは「最小ファイルサイズ」または「高品質印刷」を選択
- ドキュメントのカラーモードをRGBに変更してから保存
詳しくは別記事で解説しています:
🔴 一括生成が途中で止まる
原因:サーバーのタイムアウト
→ 大量のPDFを一度に処理すると、PHPの実行時間制限に引っかかります。
対策:
- 深夜など負荷の低い時間帯に実行
- 一度に処理する件数を減らす(プラグインは内部で分割処理していますが、サーバーによっては厳しい場合も)
- ブラウザを閉じない(Ajax処理なので、閉じると中断されます)
FAQ(よくある質問)
Q. 2ページ目をサムネイルにできますか?
A. はい。設定画面の「ページ番号」を変更するか、フィルターフックで制御できます。ページ番号は0始まりなので、2ページ目は「1」です。
|
1 2 3 4 5 |
// 常に2ページ目をサムネイルにする add_filter( 'rapls_pdf_image_creator_thumbnail_page', function( $page, $pdf_id ) { return 1; }, 10, 2 ); |
Q. 既存のPDFにもサムネイルを付けられますか?
A. はい。「設定」→「一括生成」タブから、プラグイン導入前にアップロードしたPDFにも一括でサムネイルを生成できます。
Q. プラグインを削除したら、生成した画像はどうなりますか?
A. デフォルトでは削除されます。「アンインストール時に画像を保持」をONにしておけば、通常の画像として残ります。
Q. PDFを削除したら、サムネイル画像も消えますか?
A. はい。PDFとサムネイルは紐付いているので、PDFを削除すると自動的にサムネイルも削除されます。
Q. 他のPDFプラグイン(PDF Embedderなど)と併用できますか?
A. はい。このプラグインは「サムネイル生成」に特化しているので、ビューアー系プラグインとは競合しません。役割が違うので、併用して問題ありません。
Q. マルチサイトで使えますか?
A. はい。各サイトで個別に有効化して使用できます。
開発者向けリファレンス
テーマやプラグインからPDFサムネイルを制御したい場合は、以下のAPIを使用できます。
テンプレート関数
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// サムネイルがあるか確認 if ( rapls_pic_has_thumbnail( $pdf_id ) ) { // サムネイル画像のHTMLを取得 echo rapls_pic_get_thumbnail_image( $pdf_id, 'medium', array( 'class' => 'pdf-thumb' ) ); } // サムネイルURLを取得 $url = rapls_pic_get_thumbnail_url( $pdf_id, 'large' ); // サムネイルの添付ファイルIDを取得 $thumbnail_id = rapls_pic_get_thumbnail_id( $pdf_id ); // サムネイルを手動生成(第2引数trueで強制再生成) $thumbnail_id = rapls_pic_generate_thumbnail( $pdf_id, true ); |
ショートコード
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// サムネイル画像を表示 [rapls_pdf_thumbnail id="123" size="medium" class="my-class"] // サムネイルURLのみ出力 [rapls_pdf_thumbnail_url id="123" size="medium"] // クリックでPDFを開くサムネイル [rapls_pdf_clickable_thumbnail id="123" size="medium" target="_blank"] // ダウンロードリンク(サムネイル+テキスト) [rapls_pdf_download_link id="123" size="thumbnail" text="ダウンロード"] |
フィルターフック
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// サムネイルに使用するページを変更 add_filter( 'rapls_pdf_image_creator_thumbnail_page', function( $page, $pdf_id ) { return 0; // 0始まり }, 10, 2 ); // 最大幅を変更 add_filter( 'rapls_pdf_image_creator_thumbnail_max_width', function( $width, $pdf_id ) { return 2048; }, 10, 2 ); // 品質を変更 add_filter( 'rapls_pdf_image_creator_thumbnail_quality', function( $quality, $pdf_id ) { return 95; }, 10, 2 ); // フォーマットを変更(jpeg / png / webp) add_filter( 'rapls_pdf_image_creator_thumbnail_format', function( $format, $pdf_id ) { return 'webp'; }, 10, 2 ); // 背景色を変更(white / black / transparent) add_filter( 'rapls_pdf_image_creator_thumbnail_bgcolor', function( $color, $pdf_id ) { return 'transparent'; }, 10, 2 ); |
アクションフック
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// サムネイル生成前 add_action( 'rapls_pdf_image_creator_before_generate', function( $pdf_id ) { // 処理 } ); // サムネイル生成後 add_action( 'rapls_pdf_image_creator_after_generate', function( $pdf_id, $thumbnail_id ) { // 処理 }, 10, 2 ); // サムネイル生成失敗時 add_action( 'rapls_pdf_image_creator_generation_failed', function( $pdf_id, $error ) { // エラーログなど }, 10, 2 ); |
【2026/01/30追記】PDF/X形式でサムネイルが真っ黒になる問題を解決しました。技術的な背景についてはこちらの記事『【続編】PDF/X形式の真っ黒問題——ユーザーに頼らず、プラグイン側で解決した話』で解説しています。」
更新履歴と開発方針
開発方針
このプラグインは「PDFサムネイル自動生成」という一つの機能に集中して開発しています。
- 機能追加より安定性を優先
- WordPress本体・PHPのアップデートへの追従
- セキュリティ対応は最優先で実施
「あったら便利」な機能は慎重に検討し、複雑化を避けています。
更新履歴
1.0.9.1
- 公式ドキュメントURLを変更
1.0.9
- 修正: PDF/X-1:2001 形式の PDF でサムネイルが真っ黒になる問題を解決
- 印刷用 PDF (CMYK カラースペース) を sRGB に自動変換する機能を追加
1.0.8
- 修正: PDF の添付ファイル詳細でサムネイル URL ではなく PDF の URL を表示
- 修正: 生成されたサムネイルの詳細画面で元の PDF の URL を表示
- 修正:「URL をクリップボードにコピー」で PDF とサムネイル両方とも PDF の URL をコピー
1.0.7.1
- 公式ドキュメントURLを変更
1.0.7
- WordPress 6.5対応:非推奨の
load_plugin_textdomain()を削除 - 日本語翻訳をWordPress翻訳スタイルガイドに準拠
1.0.6
- ステータスタブにサポートリンクを追加
- PHP 7.4互換性を修正(
readonlyプロパティとmatch式を削除) - セキュリティ改善:
error_log()をWP_DEBUG有効時のみに制限 - カスタムHTML出力に
wp_kses_post()サニタイズを追加
1.0.5
- GhostScriptエンジンのサポートを削除(WordPress.orgセキュリティ要件への対応)
- PDF変換エンジンをImageMagickに一本化
なぜGhostScriptを削除したか:WordPress.orgのプラグインガイドラインで、exec()やshell_exec()を使った外部コマンド実行が禁止されているためです。GhostScriptはコマンドライン経由でしか使えないため、泣く泣く対応を削除しました。
1.0.4
- ネームスペースを
Rapls\PDFImageCreatorに変更 - 全プレフィックスを
rapls_pic_に統一(WordPress.orgガイドライン準拠)
1.0.0
- 初回リリース
サポート
バグ報告や機能リクエストは、WordPress.orgのサポートフォーラムからお願いします。
このプラグインが役に立った場合は、☕ Buy me a coffee で開発をサポートしていただけると励みになります。




コメント