I'm starting a new project, and I am also fairly new to Zend Framework 2. What are your suggestions to generate a pdf from an html code that you want to pass as a variable ($html)? I was reading the web that DOMPDF is pretty good, but I'm not sure how to use it, looking at documentation. What would be the easiest way for a beginner?
Your selection of DOMPDF is right. It's the most easiest to use in Zend Framework 2. Just add a simple module(DOMPDFModule) and you are ready to go. As you are a newbie to Zend Framework 2; here is how to use it.
Add "dino/dompdf-module": "dev-master" to the require section in composer.json file
Example:
composer.json
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.2.*",
"dino/dompdf-module": "dev-master"
}
Now install or update the dependencies using composer. Composer will automatically include the dependencies which we would otherwise include using include("dompdf.php")
Example:
php composer.phar install
Next we have to add DOMPDFModule to the modules section in config/application.config.php
Example:
application.config.php
'modules' => array(
'Application',
'DOMPDFModule',
),
And we are ready to use it in our project.
Open up the controller in which we are going to generate the PDF and add
use DOMPDFModule\View\Model\PdfModel;
to the top; after the namespace.
Example:
IndexController.php
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use DOMPDFModule\View\Model\PdfModel;
Next we have to place the necessary PDF generation code to the required action.
Example:
I'm assuming; to download pdf we are using the following route.
example.com/generatepdf
For that create a generatepdfAction() method in which we will place the PDF generation logic as follows.
IndexController.php
public function generatepdfAction()
{
$pdf = new PdfModel();
return $pdf;
}
As most Action in Zend Framework 2; this action will also have a corresponding view file generatepdf.phtml where we actually place the HTML which is to be converted to PDF.
Example:
generatepdf.phtml
<html>
<body>
<h1>My Name is Blah</h1>
</body>
</html>
Now if we go to the route we created; a PDF will be shown in the same window if the browser supports viewing PDF.
It can be done in generatepdfAction() by using the setVariables() method of PdfModel()
Example:
IndexController.php
public function generatepdfAction()
{
$pdf = new PdfModel();
$pdf->setVariables(array(
'name' => 'John Doe',
));
return $pdf;
}
generatepdf.phtml
<html>
<body>
<h1>My Name is <?php echo $this->name; ?></h1>
</body>
</html>
Setting filename will trigger auto download of the PDF file. A filename can be set using the setOption() method of PdfModel().
Example:
IndexController.php
public function generatepdfAction()
{
$pdf = new PdfModel();
$pdf->setOption("filename", "my-file");
return $pdf;
}
File extension(.pdf) will be added automatically.
Paper size and paper orientation can be set by the paperSize and paperOrientation options
Example:
IndexController.php
public function generatepdfAction()
{
$pdf = new PdfModel();
$pdf->setOption("paperSize", "a4"); //Defaults to 8x11
$pdf->setOption("paperOrientation", "landscape"); //Defaults to portrait
return $pdf;
}
Hope this helps.
Take a look at: http://www.mpdf1.com/mpdf/index.php
It generates pdf from html. If you are alerady familiar with css and html that library is quite easy to start. Also it has good documentation and rich features.
Getting started borrowed from their documentation:
include('../mpdf.php');
// Create an instance of the class:
$mpdf=new mPDF();
// Write some HTML code:
$mpdf->WriteHTML('<p>Hello World</p>');
// Output a PDF file:
$mpdf->Output();
exit;
Manual
Generated files examples page
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With