エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」

      2017/03/11

CakePHP 2.3で PDFを作成する方法

 

PDFを生成するライブラリを調査

 
CakePHPから PDFを出力する方法を調べてみましたので、そのレポートをお送りします。
 
CakePHPに限るわけではありませんが、CakePHP2.Xから PDF出力する方法は、「mpdf」「TCPDF」「FPDF」といったいくつかのライブラリがあるようでしたが、「http://cakephpmemo.blogspot.jp/2013/02/cakephppdf.html」この記事を読んで、TCPDFで実装をしてみることにしました。
 
とはいえ、上記のサイトでは初心者の私では何を言っているのかわからなかったため、実際に参考にしたサイトは、下記のサイトです。
 
http://prg.pro-mame.com/index.php?php%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%2FCakePHP2.X%2FTCPDF
 
 


 

TCPDFを利用して PDF出力を実装

 
このサイトを上から順番に確認してそのまま対応していくと、たぶん問題なく PDFの出力について理解できると思います。
フォントを変える方法なども解説されていますので、実運用に向けてもかなりの参考になるでしょう。
 
また、インスタンスを生成する(クラスに初期値を設定する)際に設定する各項目と、その値は下記の様になっているようです。
 
PDF_PAGE_ORIENTATION:用紙の向き[P=縦方向、L=横方向] デフォルトはP
PDF_UNIT:処理単位[pt=ポイント、mm=ミリメートル、
     cm=センチメートル、in=インチ] デフォルトはmm
PDF_PAGE_FORMAT :ページフォーマット ( デフォルトは A4 )
※上記は /tcpdf/config/tcpdf_config.php ファイルで定義されています。
 
 
また、最初の 2つのサンプルでは、PDFの情報として、「Cell」「text」でテキストの位置と情報を与えています。
いずれも、最初の数値が横軸の座標値を表し、2個目の数字が縦軸の座標を表しています。「Cell」「text」の違いは、「text」が座標の絶対値で設定されるのに対し、「Cell」は相対値(??)で設定されるようです....
 
————–

————–
 
————–

————–
 
 

HTMLを渡すことで PDFにすることも可能

 
また、PDFのページデザインに関しては、Cell、textといった方法ではなく、HTMLで情報を渡す方法もあります。
実際は、こちらの HTML形式で整形していく方法を取られるのだと思いますが、実際に PDF出力をさせるページを作るとなると、しっかりした HTML(css)のコーディングが必要になりますので、結構骨が折れるでしょうね。
 
 

mpdfで PDF出力するための参考サイト

 
mpdf
http://d.hatena.ne.jp/okinaka/20111103/1320287622
http://blog.syuhari.jp/archives/1992
 
また、mpdfで作成する場合は、上記のサイトが参考になるのではないかと思います。
 
また、TCPDF、FPDFに関しては、下記のページも参考になるかと思います。
http://bakery.cakephp-users.jp/2011/02/05/creating-pdf-files-with-cakephp-and-tcpdf/

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法

CakePHP3でtitleタグ、h1タグのテキストをデフォルトから変更する方法を解説。テンプレートファイルに「$this->assign()」でテキストを指定して「/Layout/defult.ctp」で受け取る。

CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説

CakePHP3でデータ保存処理のログを取得する方法。save()では true、falseの戻り値しか取得できないが、saveOrFail()と try…catch文を使いエラーログ、エンティティを取得し、不具合の解析を行う。

CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルのアップロード処理を自作・解説付き・その1

CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!

CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も

CakePHP3で Insert … On Duplicate Key Update構文(upsert)を実行する方法を解説。バルク処理の方法も用意されているため大量処理の場合も対応可能。

CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法

CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングをする方法を解説。インストール方法、読み込み方法。および、具体的なスクレイピングを実行するサンプルソースも。

CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順

CakePHP3で「1対多」の連携を中間テーブルを利用した「多対多」の連携に変更するときの手順のまとめ。中間テーブルの設定やModelの変更などを間違いやすい箇所を指摘しながらの解説。

CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法

CakePHP3でテーブルのアソシエーションしたデータの取得をコントローラー側でINNERかLEFTを指定する方法を解説。TableファイルにINNERで指定していてもController側で変更ができる。

VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する。
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する

VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ

CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。