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

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.

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