超絶簡単にCakePHPのViewをPDFに変換する

HTMLをPDFに上手いこと変換してくれるwkhtmltopdfを日本語で使う ここで紹介したようにHTMLをPDFに変換するベストな選択肢はwkhtmltopdfですよと。そんでもって、それをCakePHPのViewに使いたいというわけで、便利なプラグインが会ったので紹介。

その名もceeram/CakePdf。使い方も簡単。いくつかのPDFエンジンに対応している。

対応PDFエンジン

  • DomPdf
  • Mpdf
  • Tcpdf
  • WkHtmlToPdf

もちろんオススメはWkHtmlToPdf。ただし、ライセンスの問題か、WkHtmlToPdfは内包していないので、別途手に入れる必要がある。まぁ、大した問題ではない。

逆に、DomPdfなどは最初からあるけど、使わないなら削除しちゃってもいいかも。ファイルサイズ大きいから。

URLに「.pdf」と付けるだけで、ViewをPDFにしてくれる

つまり、そういうことです。普段CakePHPで見ているページを、URLに「.pdf」とつけてアクセスするだけでPDFとしてダウンロードできちゃうわけです。

設定方法

GitHubに書かれているように、プラグインファイル本体をapp/Pluginディレクトリに配置する。

Config/routes.phpに


Router::parseExtensions('pdf');

と書いて拡張子PDFを有効にする。

Config/bootstrap.phpあたりに


CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => true));

と記述する

同様にbootstrap.phpもしくは使用するコントローラに下記の設定を追記する。


Configure::write('CakePdf', array(
	'engine' => 'CakePdf.WkHtmlToPdf', // 使用するPDFエンジン
	'binary' => '/usr/local/bin/wkhtmltox/bin/wkhtmltopdf', // WkHtmlToPdfバイナリファイルのパス
	'options' => array(
		'print-media-type' => false,
		'outline' => true,
		'dpi' => 96
	),
	'margin' => array(
		'bottom' => 5,
		'left' => 5,
		'right' => 5,
		'top' => 5
	),
	'orientation' => 'portrait', // landscape(横)指定もできる
	'download' => true // 表示のみかダウンロードか
));

ダウンロードのファイル名を都度変更したい場合は


$this->pdfConfig = array(
	'filename' => 'ご請求書_' . $id
);

こんな感じで指定できる。

あとは、PDFにしたいURLの一番最後に「.pdf」と付ければ数秒でPDFがダウンロードされるはず。

Feed

最新記事

開発フローを独自進化させ続けている開発チームの話

こんにちは CTO の [@zaru](https://twitter.com/zaru) です。 スクラム開発をしている開発チームが、開発フローを独自進化させていて、それが良い取り組みだったので紹介しようと思います。 #...

235650?v=4
zaru
2017年11月20日

退職者を招いたLTイベントを開催した

こんにちは、ベーシック CTO [@zaru](https://twitter.com/zaru) です。 ベーシック開発部では毎月月末の金曜日にTGIFと称して、 ~~飲み会 + アナログゲームなイベント~~ 技術 LT 大会...

235650?v=4
zaru
2017年10月12日

山形ラボ、TGIFはじめました

こんにちは。株式会社ベーシック山形ラボの長谷川です。 いろんなところで書いたりなんだりしてますが、弊社には山形に「山形ラボ」というリモート拠点がありまして、そこで4人のエンジニアが働いております。 今回は その山形ラボで、...

10917612?v=4
roki1801
2017年10月10日