PHP Nette - jak tisknout / exportovat do PDF (mPDF)

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

PHP Nette - jak tisknout / exportovat…

04.05.2019 napsal FirstTimeR

Vyřešeno ddd
Dobrý den, jaké řešení byste mně doporučili pro tisknutí (export) do PDF z Nette frameworku? Jde mi jen o prostý výstup výpisu, ideálně do nějaké latte šablony, nepotřebuji tam ani grafické prvky, stačí text.
Nejlépe hodnocení uživatelé
Hanz

Počet UP: 5081

React: 212

Rusty

Počet UP: 2343

React: 98

OL3G

Počet UP: 1637

React: 59

SYSTEM

Počet UP: 432

React: 23

Strosmajer

Počet UP: 489

React: 22

Oxytocin

Počet UP: 295

React: 16

Hyacint

Počet UP: 32

React: 11

RE: PHP Nette - jak tisknout /…

12.05.2019 odpověděl Strosmajer

Zkontrolováno

Dobrý den,

pro výstup (export, tisk) do PDF používám v Nette balíček mPDF. Pro zprovoznění mPDF v Nette je třeba toto:

1.) Instalace rozšíření mPDF přes composer:
composer require mpdf/mpdf


2.) V presenteru do hlavičky:

use Mpdf\Mpdf as mPDF;
use Nette\Application\UI\ITemplateFactory;

/** @var ITemplateFactory @inject */
public $templateFactory;


3.) Handle (action) na export do PDF

public function handleExportPdf($id)
{
  $zaznam = $this->database->table('table')->get($id);
  if (!$zaznam) {
    $this->error('Záznam nenalezen');
  }

  $this->template->zaznam = $zaznam;

  $t = $this->templateFactory->createTemplate();
  $t->setFile(__DIR__ . '/templates/Homepage/exportPdf.latte');
  $t->zaznam = $zaznam;

  $pdf = new mPDF();
  $pdf->ignore_invalid_utf8 = true;
  $pdf->WriteHTML(file_get_contents('__DIR__/../../www/css/bootstrap.min.css'), 1);
  $pdf->setFooter('Text do zápatí');
  $pdf->WriteHTML($t);
  $pdf->Output('Záznam id ' . $id, 'D');
  $this->redirect('this');
}


4.) Vytvořit klasickou latte šablonu exportPdf.latte jako předlohu pro výsledný soubor PDF a to je vše...
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace