dev-master
9999999-devResult class for rendering a PDF using Dompdf
MIT
The Requires
by Tim Neutkens
Result class for rendering a PDF using Dompdf
Result class for rendering a PDF using Dompdf, (*1)
composer require weprovide/magento2-module-dompdf
bin/magento setup:upgrade
<?php namespace YourNameSpace\YourModule\Controller\Download; use Magento\Framework\App\Action\Context; use WeProvide\Dompdf\Controller\Result\DompdfFactory; use WeProvide\Dompdf\Controller\Result\Dompdf; class Pdf extends \Magento\Framework\App\Action\Action { protected $dompdfFactory; protected $layoutFactory; /** * Constructor * * @param Context $context * @param DompdfFactory $dompdfFactory * */ public function __construct( Context $context, DompdfFactory $dompdfFactory ) { $this->dompdfFactory = $dompdfFactory; parent::__construct($context); } public function getHtmlForPdf() { return ' <html> <body> <h1>Hello world</h1> </body> </html>'; } /** * Execute view action * * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { /** @var Dompdf $response */ $response = $this->dompdfFactory->create(); $response->setData($this->getHtmlForPdf()); return $response; } }
Create controller, (*2)
<?php namespace YourNameSpace\YourModule\Controller\Download; use Magento\Framework\App\Action\Context; use Magento\Framework\View\LayoutFactory; use WeProvide\Dompdf\Controller\Result\Dompdf; use WeProvide\Dompdf\Controller\Result\DompdfFactory; class Pdf extends \Magento\Framework\App\Action\Action { protected $dompdfFactory; protected $layoutFactory; /** * Constructor * * @param Context $context * @param DompdfFactory $dompdfFactory * */ public function __construct( Context $context, DompdfFactory $dompdfFactory, LayoutFactory $layoutFactory ) { $this->dompdfFactory = $dompdfFactory; $this->layoutFactory = $layoutFactory; parent::__construct($context); } public function getHtmlForPdf() { /** @var \Magento\Framework\View\Element\Template $block */ $block = $this->layoutFactory->create()->createBlock('Magento\Framework\View\Element\Template'); $block->setTemplate('YourNameSpace_YourModule::pdf.phtml'); $data = [ 'foo' => 'bar' ]; $block->setData($data); return $block->toHtml(); } /** * Execute view action * * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { /** @var Dompdf $response */ $response = $this->dompdfFactory->create(); $response->setData($this->getHtmlForPdf()); return $response; } }
Create template file in YourNameSpace/YourModule/view/frontend/template
, (*3)
All public methods are listed below:, (*4)
public $pdf
=> Dompdf instance. Useful for setting custom options like orientation and paper size. List of all options can be found here., (*5)
public function setData($html)
=> Equal to $dompdf->loadHtml($html)
., (*6)
public function setFileName($fileName)
=> Set output fileName., (*7)
public function setAttachment($mode)
=> Mode can either be attachment
(download) or inline
(no download)., (*8)
public function renderOutput()
=> Equal to running $dompdf->render()
& $dompdf->output()
. Will cache the output since Dompdf doesn't support rendering twice, (*9)
For reference also check the code, (*10)
Result class for rendering a PDF using Dompdf
MIT