PHP Nette - jak tisknout / exportovat do PDF (mPDF)
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.
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:
2.) V presenteru do hlavičky:
3.) Handle (action) na export do PDF
4.) Vytvořit klasickou latte šablonu exportPdf.latte jako předlohu pro výsledný soubor PDF a to je vše...
ODPOVĚĎ
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...
řeším tisk z php nette, kdy potřebuji v latte šabloně nějak ošetřit to, že chci skrýt element s id #element když se dá tisk. Jedná se o klasické html a já tedy ten #element nechci v tisku ukazovat.
Jinak řečeno, chci na vytisknuté stránce #element skrýt, ale v prohlížeči aby byl vidět :-)
Díky