Zprovozneni mpdf na nette

Taps
Člen | 168
+
0
-

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 | 11
+
0
-

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 | 465
+
+1
-

https://componette.org/…ributte/pdf/

Použil jsem několikrát a bez problému, je to jen wrapper nad MDPF pro Nette.

Taps
Člen | 168
+
0
-

@Kcko : super, diky moc. Jeste premyslim jak do te latte sablony, ktera slouzi pro pdf nalinkovat css soubor.

Marek Bartoš
Nette Blogger | 1177
+
+1
-

Nelinkovat, do pdf chceš všechno dávat inline. Styly, skripty, fonty, obrázky.

Marek Bartoš
Nette Blogger | 1177
+
0
-

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 | 465
+
0
-

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)