cakephpでPDF出力を行いたい

要約

・wkhtmltopdf + ceeram/CakePdfが一番良い気がする。
・参考になりました。ありがとうございました。株式会社ベーシック エンジニアブログ さん

 

環境
Amazon Linux AMI 64bit(t2.micro)
cakePHP2.7.0

手順

1.wkhtmltopdfインストール

$wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
※ワシは64bit版を使ってたから
32bit版の人はこれ
(参考)
$wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2

$tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
$mv wkhtmltopdf-amd64 /usr/bin/wkhtmltopdf
$chmod +x /usr/local/bin/wkhtmltopdf

2.日本語フォントインストール

$yum search ipa
->一覧の中にIPAフォントがある
$yum install ipa-gothic-fonts
$yum install ipa-mincho-fonts

3.CakePdfインストール(composer利用)
ざっくり
“require”: {
“friendsofcake/cakepdf”: “*”,

#composer update

4.cakePHP設定

Config/bootstrap.phpに以下を追加

//cakePDF
CakePlugin::load(‘Users’, array(‘routes’ => true));

Configure::write(‘CakePdf’, array(
‘engine’ => ‘CakePdf.WkHtmlToPdf’, // 使用するPDFエンジン
‘binary’ => ‘/usr/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 // 表示のみかダウンロードか
));

AppController.phpに以下を追加

var $components = array(‘RequestHandler’);

5.pdf用のctp作成
PDFとして表示させたいviewの下に「pdf」というディレクトリを作成
その下に表示させたいviewのctpをそのままコピーして放り込む
※ここらへん、違ってるかもしれません。上記ベーシックエンジニアブログさんのところでは
記述がないのですが、それだとmissing viewになってしまった。

2016/04/14追記

環境を移動するついでに最新版のwkhtmltopdf0.12系にすると動かない。
そこで古いのを入れました。

$cd /usr/local/bin
$wget http://download.gna.org/wkhtmltopdf/obsolete/linux/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
$bzip2 -dc wkhtmltopdf-0.9.9-static-amd64.tar.bz2 | tar xvf –
$ln -s wkhtmltopdf-amd64 wkhtmltopdf

バージョン確認
$wkhtmltopdf –version

Leave a Comment

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