2026年7月24日
2026年7月24日
Ninja FormsでPDF出力が失敗するときの原因と対処法
Ninja Formsの送信内容をPDFにできない、PDFが白紙や文字化けになる、メールにPDFが添付されないといった問題は、多くの場合「PDFを作るPHP側の環境」「日本語フォント」「メール送信」のどこかで止まっています。この記事では、症状ごとにどこを確認すればよいかを整理し、エラーログを手がかりに原因を特定する手順を説明します。
Ninja Forms本体にはPDF出力の機能が無く、公式の有料アドオン(PDF Form Submissions)や、E2Pdf などの外部プラグインで実現するのが一般的です。アドオンの設定項目や対応状況はバージョンによって変わるため、以下は(2026年10月現在)の一般的な構成を前提にしています。
症状から「どこで止まっているか」を見分ける
PDFまわりの不具合は、同じ「出力できない」でも原因がまったく違います。まず次のどれに当てはまるかを確認してください。
- PDFのダウンロードを押すと真っ白な画面やエラーになる:PHPのエラー、メモリ不足、必要なPHP拡張の不足が疑われます。
- PDFは開けるが日本語が「?」や四角(豆腐)になる:フォントに日本語の文字が含まれていないことが原因です。
- PDFは作れるがロゴや画像が表示されない:画像の読み込み方法(外部URLの扱い)や画像処理の拡張が原因のことがあります。
- 管理画面からは出力できるが、通知メールに添付されない:メールアクションの設定か、メール送信そのものの問題です。
最後のケースはPDFの問題ではなくメールの問題であることが多いので、添付なしの通知メールが届いているかを先に確認すると切り分けが早くなります。
エラーログでPHPの問題を確認する
白い画面やエラーになる場合は、推測で設定を変える前にエラーログを見ます。wp-config.php の「編集が必要なのはここまでです」という行より上に、次の設定を一時的に追加します。編集前に wp-config.php のコピーを取っておいてください。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
この状態でPDF出力をもう一度試すと、wp-content/debug.log にエラーが記録されます。WP_DEBUG_DISPLAY を false にしているのは、訪問者の画面にエラーを表示させないためです。確認が終わったら、追加した設定は元に戻します。
ログによく出る内容と、その意味は次のとおりです。
- Allowed memory size ... exhausted:PHPのメモリ不足です。項目数の多いフォームや画像入りのPDFで起きやすくなります。サーバーのPHP設定で memory_limit を引き上げるか、wp-config.php の
WP_MEMORY_LIMITを見直します。 - Maximum execution time ... exceeded:処理時間の上限に達しています。PDFの生成に時間がかかっている状態で、画像の数や大きさを減らすと改善することがあります。
- Class ... not found / Call to undefined function:必要なPHP拡張が無いか、ライブラリの読み込みに失敗しています。
- Cannot redeclare class:別のプラグインが同じPDFライブラリの別バージョンを読み込んでいて衝突しています。
最後の衝突は見落とされやすい原因です。WordPressのPDF系プラグインの多くは Dompdf や mPDF といったPHPライブラリを内部に同梱しているため、PDF機能を持つ別のプラグイン(請求書、見積書、他のフォームプラグイン用のPDFアドオンなど)と同時に有効化すると、読み込み順によってエラーになることがあります。
PHPの拡張とサーバー設定を確認する
PDF生成ライブラリは、文字コード処理やHTMLの解析、画像処理にPHPの拡張機能を使います。管理画面の「ツール」→「サイトヘルス」を開き、推奨モジュールが不足しているという警告が出ていないかを確認してください。「情報」タブでは、PHPのバージョンやメモリ上限、画像処理(GD・Imagick)の状況も見られます。
特に関係が深いのは mbstring(マルチバイト文字の処理)、DOM・XML系(HTMLの解析)、GD または Imagick(画像の処理)です。足りない拡張はレンタルサーバーの管理パネルで有効化できる場合が多く、できない場合はサーバー会社に確認します。
もう1つ確認したいのが、アップロードフォルダの書き込み権限です。PDFを一時ファイルとして wp-content/uploads 配下に書き出す仕組みのプラグインでは、フォルダに書き込めないと生成に失敗します。メディアライブラリに画像をアップロードできるかどうかが、簡単な確認方法になります。
日本語が文字化けする場合
PDFで日本語が「?」や四角になるのは、PDFに埋め込まれるフォントに日本語の字形が含まれていないためです。Dompdfなどのライブラリが標準で持っているフォントは欧文中心なので、日本語を出すには日本語フォントを使う設定が必要です。
対処方法はプラグインによって異なります。アドオンの設定画面でフォントを選べる場合は、日本語対応のフォント(Noto Sans JP、IPAexゴシックなど)が選択肢にあるかを確認します。テンプレートのCSSでフォントを指定する方式なら、日本語フォントを読み込む指定に書き換えます。どちらもできない場合は、日本語フォントの扱いを明記しているプラグインへの切り替えも選択肢になります。
なお、日本語フォントはファイルサイズが大きいため、埋め込むとPDFの生成に時間とメモリを多く使います。文字化けが直った代わりにメモリ不足が出る、という流れもよくあるので、前の章のログ確認とあわせて見てください。
画像が表示されない場合
ロゴや送信された画像がPDFに出ない場合は、画像の指定方法を確認します。PDFライブラリは、セキュリティ上の理由から外部URLの画像読み込みを既定で制限していることがあります。テンプレート内の画像を、サイト内に置いた画像に変える、プラグインの設定で画像の読み込み方法を変更する、といった方法で解決する場合があります。
また、サイト全体に Basic 認証をかけているステージング環境では、サーバー自身が画像URLを取得できずに失敗することがあります。本番では問題なく、テスト環境でだけ画像が出ないときはこの点を疑ってください。
メールに添付されない場合
管理画面からはPDFを作れるのに通知メールに付かない場合は、Ninja Formsのフォーム編集画面で「Emails & Actions」を開き、該当するメールアクションでPDFの添付が有効になっているかを確認します。アドオンによって設定の場所や名称は異なります。
添付の設定が正しいのにメールが届かない場合は、WordPressのメール送信そのものが不安定な可能性があります。サーバーの標準送信ではなく、WP Mail SMTP などのプラグインでSMTP経由の送信に切り替えると改善することが多いです。添付ファイルのサイズがメールサーバーの上限を超えていないかもあわせて確認してください。
プラグインの競合を切り分ける
ここまで確認しても原因が分からない場合は、プラグインの競合を疑います。本番サイトでいきなりプラグインを止めるのではなく、バックアップを取ったうえでステージング環境で試すか、Health Check & Troubleshooting プラグインのトラブルシューティングモードを使うと、訪問者に影響を与えずに確認できます。Ninja Forms本体とPDFアドオンだけを有効にした状態でPDFが作れるなら、他のプラグインとの競合が原因です。
まとめ
Ninja FormsのPDF出力が失敗するときは、次の順で確認すると原因を絞り込めます。
- 症状が「生成エラー」「文字化け」「画像が出ない」「添付されない」のどれかを見分ける
- WP_DEBUG_LOG でエラーログを取り、メモリ不足・拡張不足・ライブラリ衝突を確認する
- サイトヘルスでPHP拡張の不足やメモリ上限を確認する
- 日本語が化ける場合は日本語フォントの設定を見直す
- 添付されない場合はメールアクションとメール送信の設定を確認する
- 最後に、影響の出ない方法でプラグインの競合を切り分ける