Cake PDF – WKHTMLTOPDF

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

Dodaj komentarz