Zprovozneni mpdf na nette
- Taps
- Člen | 169
Zdravim, dle navodu https://doc.nette.org/cs/quickstart jsem si vytvoril nette projekt a nasledne pak vytvoril webovou aplikaci. Potreboval bych vsak jeste zprovoznit generovani pdf dokumentu. Pomoci composeru jsem nainstaloval knihovnu mpdf, ale ted nevim jak dal postupovat a zaclenit mpdf do nette. Nette project i mpdf mam v samostatnych slozka na urovni rootu ftp( nevim jestli to je dobre, nebo mpdf musi byt v ramci nejake slozky primo v nette)
Mohl by mi prosim nekdo poradit? Dekuji
- Kalfi
- Člen | 14
Ahoj, zkus něco odtud https://componette.org/search/?… . Conrtibutte/pdf jsem zkoušel a bez problémů. Je to i návodem.
Editoval Kalfi (4. 8. 2023 8:03)
- Kcko
- Člen | 470
https://componette.org/…ributte/pdf/
Použil jsem několikrát a bez problému, je to jen wrapper nad MDPF pro Nette.
- Marek Bartoš
- Nette Blogger | 1280
Nelinkovat, do pdf chceš všechno dávat inline. Styly, skripty, fonty, obrázky.
- Marek Bartoš
- Nette Blogger | 1280
Jestli chceš, aby tvoje pdf vypadala (skoro) stejně jako v prohlížeči, tak se vykašli na mpdf a použij headless chrome přes puppeteer. A abys neměl práci s nastavováním a nodejs appkou, tak za pár dolarů ročně můžeš použít browserless, který puppeteer integruje s api https://www.browserless.io/docs/pdf
- Kcko
- Člen | 470
Lze.
Tady máš základní skelet jak jsme to dělali my (appka už je cca 4–5
let stará), dneska už to řešíme podobně jak píše
@MarekBartoš
Ale bude to stačit.
<?php
// PDF TEMPLATE
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/../templates/PdfGenerator/product-list.latte');
// fetch data
$template->xxx = $xxx;
$pdf = new PdfResponse($template);
//$pdf->setPageOrientation($pdf::ORIENTATION_LANDSCAPE);
$pdf->setPageFormat('A4');
$pdf->setPageMargins('12,12,25,10,2,8');
$css = file_get_contents(INDEX_DIR . '/assets/css/pdf.css');
$pdf->styles = $css;
$pdf->displayZoom = 'fullpage';
$mpdf = $pdf->getMpdf();
$mpdf->dpi = 72; //72 * 4,167 / 453x450
$mpdf->img_dpi = 72; //72 * 4,167 / 453x450
//$mpdf->useOnlyCoreFonts = true;
$pdf->setDocumentAuthor('...');
$pdf->setDocumentTitle('...');
// HEADER
$templateHeader = $this->createTemplate();
$templateHeader->pdfSettings = $pdfSettings;
$templateHeader->setFile(__DIR__ . '/../templates/PdfGenerator/pdf-header.latte');
$mpdf->SetHTMLHeader((string) $templateHeader);
// FOOTER
$templateFooter = $this->createTemplate();
$templateFooter->pdfSettings = $pdfSettings;
$templateFooter->setFile(__DIR__ . '/../templates/PdfGenerator/pdf-footer.latte');
$mpdf->SetHTMLFooter((string) $templateFooter);
//$pdf->setSaveMode(Andweb\Application\Responses\PdfResponse::DOWNLOAD); //default behavior
$pdf->setSaveMode(PdfResponse::DOWNLOAD);
$this->sendResponse($pdf);
$this->terminate();
?>
Editoval Kcko (4. 8. 2023 12:51)