Konfiguracja środowiska PDF z silnikiem wkhtmltopdf
https://github.com/FriendsOfCake/CakePdf
Instalacja silnika na poziomie systemu. Pobrać plik .deb
# apt install ./wkhtmltox_0.12.5-1.stretch_amd64(3).deb /usr/local/bin/wkhtmltopdf
Instalacja pluginu w cakePHP
# cd /var/www/html/moj_projekt
# composer require friendsofcake/cakepdf
Dołączenie pluginu do application.php
# ./bin/cake plugin load CakePdf -b
Konfiguracja domyślna config/bootstrap.php
Configure::write('CakePdf', [ 'engine' => 'CakePdf.WkHtmlToPdf', 'binary' => '/usr/local/bin/wkhtmltopdf', 'margin' => [ 'bottom' => 15, 'left' => 15, 'right' => 15, 'top' => 15 ], 'orientation' => 'portrait' ]);
Szablon src/Template/Layout/pdf/default.ctp
<!DOCTYPE html> <html lang="pl"> <head> <?= $this->Html->charset() ?> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> <?= $this->fetch('title') ?> | <?= $cakeDescription ?>: </title> <?= $this->fetch('meta') ?> <?= $this->fetch('css') ?> </head> <body> <?= $this->fetch('content') ?> </body> </html>
Nadpisanie konfiguracji w kontrolerze
<?php class InvoicesController extends AppController { // Nadpisanie konfiguracji public function view($id = null) { $invoice = $this->Invoice->get($id); $this->viewBuilder()->options([ 'pdfConfig' => [ 'orientation' => 'portrait', 'filename' => 'Invoice_' . $id ] ]); $this->set('invoice', $invoice); } } ?>
Inne opcje:
pageSize - A4 orientation - portrait margin - [ bottom => 2, left => 2, right => 2, top => 2 ] title - delay - opóźnienie w ms przed renderowaniem windowStatus - wymagany status window zanim rozpocznie renderowanie encoding - UTF-8 download - false filename - nazwa pliku w przypadku pobierania