cake3とpdfで検索するとFriendsOfCakeのCakePdfってのがヒットするが、こいつが見事にCake3だと動いてくれない。どうも対応してないようだ。
ということでふつーにTCPDFでやることにした。
まず、composer.jsonに以下追加。
composer.json
"tecnick.com/tcpdf": "*"
更新かける
sudo composer update
続いてPdfController.phpをつくって
src/controller/PdfController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
/**
* Pdf Controller
*
*/
class PdfController extends AppController
{
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
}
/**
* index method
*
* @return void
*/
public function index()
{
$this->layout = false;
$this->RequestHandler->respondAs('pdf', [
// Force download
//'attachment' => true,
'charset' => 'UTF-8'
]);
}
}
あとビューも作る。
src/Template/Pdf/index.ctp
<?php
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8');
$pdf->SetFont('kozgopromedium');
$pdf->AddPage();
$html = <<< EOF
<div>日本語テスト</div>
EOF;
$pdf->writeHTML($html, false, false, false, false, 'L');
$pdf->Output('sample.pdf', 'I');
とりあえずこれで十分だ。