2020.04.07

TCPDFを利用してWordPressのページを動的にPDF出力してみよう⑤【ページ出力編】

こんにちは、webエンジニアのゾノ( @ozonosho )です。

さて、昨日のブログに続いて今回もTCPDFを利用してWordPressのページを動的にPDF出力する方法をご紹介いたします。全5回に分けて紹介していきますのでどうぞお付き合いください。

第5回目となる今回はWordPressのページを動的にPDF出力する方法をご紹介します!

まずは基本的なPDF出力コードをおさらい

TCPDFの機能を利用するためには、テーマ直下に置いた『print.php』ファイル内に下記のようなコードを貼りつけます。

このphpファイルを実際に実行してみると下記のサンプルPDFが開きます。

サンプルPDFはこちら

上記コードのとおり、「writeHTML」関数に出力したいHTMLを渡してあげればその内容をPDFに出力できるので、WordPressの関数「get_post」や「get_the_content」を利用してページのコンテンツを渡せばOKだと思ったのですが、、、

WordPressの関数を外部ファイルで利用するために必要な下記コードをprint.phpに読み込ませると、TCPDF側でPDFを出力するときにエラーが出ます。

(WordPressの設定を読み込もうとするとエラーが出る!)

そんなわけで、PDFに表示させたいページのデータはフォームを経由してPOSTやGETで渡してあげる必要があります。PDFの中身を丸っと渡すので、現実的にはPOST一択だと思います。

WordPressページ内にprint.phpにページデータを渡すフォームを用意する

僕が運営するサイト『未来地図』で現在実施している「不登校生の親の気持ちアンケート」のPDFダウンロードを例に見ていきましょう。

実装ページはこちら

ページを開いたら、下図の赤矢印の箇所にある「PDF版ダウンロード」ボタンをクリックしてみてください。

「PDF版ダウンロード」ボタンをクリックすると、ページの表示内容がPDFで出力されるのを確認できると思います。

この実装では、「PDF版ダウンロード」ボタン箇所をフォームで作っており、非表示にしたtextarea項目にページの情報を入れたうえでPOSTで送信しています。

ボタン部分のコードはこんな感じです。

inputタグをtype:hiddenで隠して送信するほうがスマートかなと思ったのですが、inputタグのvalueにaタグのダブルクオーテーションなどが入ると送信先でHTMLコードを正しく拾えなかったのでtextarea項目に入れて送信しています。

こんな感じで作れば、WordPressのページ内から好きな情報をprint.php(=TCPDFの出力用ファイル)に渡すことができます。

受け取ったデータを使ってTCPDFでPDF出力する

ここまで出来れば、あとはprint.php内でPOSTされたデータを受け取って出力すればOKです。

最終的には下記のようなコードになります。

PDF側ではサイトと同じCSSプロパティは使えないため、こっちはこっちで定義してあげてください。

また余白などを作るにはtableレイアウトにする必要があるので、実際には受け取ったPOSTデータを「str_replace」などでtableタグに置換してあげるとよりPDFのデザインを調整することができます。

先ほど例として挙げたサイトの実装コードをそのまま載せるとこんな感じです。

(メチャメチャ頑張ってサイトの表示に近づけました…!)

おわりに

以上、全5回に渡ってTCPDFを利用してWordPressのページを動的にPDF出力する方法をご紹介させていただきました。

この連載ブログは、しばらくしたら1つの記事にまとめてしまおうと考えています。

そのときには今回掲載しきれなかったヘッダーのカスタマイズ方法なんかも掲載する予定なので、興味ある方は是非またサイトを訪れていただけると嬉しいです(*´`)

当サイトではWordpressのカスタマイズ制作依頼を請け負っています。運営中のサイトで何かお困りのことがある方は、下記の記事を参照のうえ気軽にご相談ください。

どんな機能・要望でもOK!『Wordpressのカスタマイズ制作』はじめました。

こんにちは、webエンジニアのゾノ( @ozonosho )です。 このたびWordpressのカスタマイズ制作をはじめました。......

→この記事を読む
チャレンジを応援する無料オンラインコミュニティ運営中!

生きづらさを抱える人のチャレンジを応援する無料オンラインコミュニティ『Cree』をスタートしました。ただいま参加者100名突破!お互いの目標を共有したり、就労・就職のサポートするサービスを無料で提供しています。

オンラインコミュニティの詳細はこちら

ゾノについて

お仕事のご相談はこちら