cakephp PDF wkhtmltopdf

https://wkhtmltopdf.org
https://github.com/FriendsOfCake/CakePdf

Pobrać plik instalacyjny silnika ze strony i zainstalować

# dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb

Podlinkować do domyślnej lokalizacji

# ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf

Zainstalować plugin

# composer require friendsofcake/cakepdf

Jako opcjonalny silnik można zainstalować mPdf

# composer require mpdf/mpdf

Zarejestrowanie rozszerzenia PDF w config/routes.php

$routes->extensions(['json', 'pdf']);

Załadowanie pluginu z konsoli

# bin/cake plugin load CakePdf -b

bootstrap.php – załadowanie i konfiguracja bezp.

Plugin::load('CakePdf', ['bootstrap' => true]);

bootstrap.php

Configure::write('CakePdf', [ 
    'engine' => 'CakePdf.WkHtmlToPdf', 
    // 'engine' => 'CakePdf.Mpdf',  
    'binary' => '/usr/local/bin/wkhtmltopdf', 
    'margin' => [ 
    'bottom' => 15, 
    'left' => 15, 
    'right' => 15, 
    'top' => 15 
  ], 
  'orientation' => 'portrait' 
]);

W kontrolerze SlidesController.php

$this->viewBuilder()->setOptions([
   'pdfConfig' => [
      'orientation' => 'portrait',
      'title'       => "Slajd nr ". $slide->nr,
       //'download'    => true,
       //'filename'    => 'Slajd nr '.$slide->nr
    ]
]);

Layout PDF

src/Template/Layout/pdf/default.ctp

Widok dla poszczególnych pozycji

src/Template/Slides/pdf/view.ctp

Dodaj komentarz