インストールする方法ありますが、今回は別のライブラリを選択することにしました。(CakePHP3もそのままでは動きませんし。。) 試したのはライブラリは下記。
TCPDFはちょっとレンダリングに辛さあったので。。
検証した結果、mPDFはposition周りが非サポートで要素を重ねた表現が難しかったのと 既存のcssがほぼそのまま利用可能だった Dompdf 0.7を採用しました。 (バッジつけたかったのです)
app/Venderフォルダでドキュメントのままインストール php-font-libなどの必要なモジュールもそのままインストール。
cd app/Vender
git clone https://github.com/dompdf/dompdf.git
cd dompdf
git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib
cd lib/php-font-lib
git checkout 0.4
cd ..
git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
日本語フォントもインストールもしたいのでload_font.phpも格納。 フォントはIPAフォントから取得。
下記のコマンドで、dompdf/libs/にttfファイルとutfファイルが格納されます。
php dompdf/load_font.php ipagothic /path/to/ipag.ttf
下記ざっくりと。
app/Controller/PagesController.php
App::uses('AppController', 'Controller');
class PagesController extends AppController {
public $layout = 'dompdf';
public function pdf(){
}
}
ページを分割させたい場合は高さで調整させるしかなさそうです。。
app/View/Pages/pdf.ctp
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<style>
body {
font-family: ipagothic , sans-serif; /* インストールしたフォント名で指定 */
}
</style>
</head>
<body >
<header>ヘッダー</header>
<article>ほげほげ</article>
</body>
app/View/Layouts/dompdf.ctp
<?php
require_once(APP . 'Vendor' . DS . 'dompdf' . DS . 'autoload.inc.php');
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->set_option( 'enable_font_subsetting' , true ); //フォントまるごと入れるとファイルがでかいので
$dompdf->set_option('isHtml5ParserEnabled', true); //HTML5タグを含む場合
$dompdf->loadHtml($content_for_layout);
$dompdf->setPaper('A4');
$this->response->type('pdf'); // PDFとして表示用
echo $dompdf->output(); //今回はブラウザで表示させました。
下記アドレスにアクセスするとpdf表示されるはず。
http://ドメイン/pages/pdf