Cài đặt wkhtmltopdf : sử dụng Composer
composer require friendsofcake/cakepdf
Thêm code vào file config/bootstrap.php
// load CakePdf
Plugin::load(‘CakePdf’, [‘routes’=>true,’bootstrap’ => true]);
// cấu hình CakePdf (có thể thêm các yeu to khác trong link doc)
Configure::write(‘CakePdf’, [
‘engine’ => [
‘className’ => ‘CakePdf.WkHtmlToPdf’,
// Path trên server và server cần cái đặt wkhtmltopdf
//’binary’ => ‘/usr/local/bin/wkhtmltopdf’,
// Path trên window và cần cài thêm wkhtmltopdf.exe về máy tính theo link dưới
‘binary’ => ‘C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe’,
],
]);
Thêm code vào file config/routes.php
Router::extensions([‘pdf’]); // tạo môi trường pdf
Sử dụng : có 2 kiểu sử dụng là 1 . Render ra view môi trường pdf(có thể set download= true để tự động down,mặc định sẽ là render ra view)
– Tạo file PdfsController có :
public $components = array(‘RequestHandler’);
public function download($id) {
// config pdf để download
$this->viewBuilder()->options([
‘pdfConfig’ => [
‘orientation’ => ‘portrait’,
‘filename’ => ‘filename.pdf’, // file name download
‘download’ => true // nếu true sẽ tự động down, false sẽ render ra view
]]);
}
-Tạo file layout cho pdf src\Template\Layout\pdf\default.ctp
-Tạo file view cho pdf src\Template\Pdfs\pdf\download.ctp
Cuối cùng chạy link : /pdfs/download/29.pdf’ // 29 la id 2. Tạo ra file pdf lưu trên server – Tạo file PdfsController có :
public $components = array(‘RequestHandler’); public function createFile() {
$CakePdf = new \CakePdf\Pdf\CakePdf();
$CakePdf->template(‘create_file’, ‘default’);//run view pdf/create_file and layout pdf/default
$CakePdf->viewVars([‘dataPdf’ => 1]);// truyền biến ra view
// Get the PDF string returned
$pdf = $CakePdf->output();
$pdf = $CakePdf->write(WWW_ROOT . ‘files’ . DS . ‘pdf’ . DS . ‘ronaldo.pdf’); // tạo file pdf
}
-Tạo file layout cho pdf src\Template\Layout\pdf\default.ctp
-Tạo file view cho pdf src\Template\Pdf\create_file.ctp
Cuối cùng chạy link : /pdfs/createFile