I'm using Zend Framework and DOMPDF library. When I test it with inline css everything works perfectly. But when I tried to move css code to the external file rules are not applied to the html page.
Here is my code.
- Code of controller's action, which generate pdf
require_once("DomPdf/dompdf_config.inc.php");
$this->_helper->layout->disableLayout();
$html = $this->view->render('index/dom.phtml');
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$pdfContent = $dompdf->output();
file_put_contents('sample.pdf', $pdfContent);
die("test");
2.Code of corresponding view (index/dom.phtml)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link type="text/css" href="/themes/css/pdf.css" rel="stylesheet" media="screen"/>
</head>
<body>
<div>Tamara testing</div>
<table border="1">
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
<tr>
<td>Value 1</td>
<td>Value 2</td>
</tr>
</table>
</body>
</html>
3.And my css file:
div {color: red;}
How to make it works?
UPDATE:
To make it works I changed the following things:
1.In controller's action add base path for external files
$dompdf->set_base_path(APPLICATION_PATH."/../public/themes/css/");
2.In view change href attribute of the link tag. Make it relative to the base path set in step 1.
<link type="text/css" href="pdf.css" rel="stylesheet" />
@Jurian Sluiman is on the right track, though his answer did not help me, unfortunately.
I had to spend some time in order to find the solution that worked for me, which was using
DOMPDF::set_protocol()
:WWW_ROOT
here is a CakePHP constant pointing to the webroot folder of my application. Note that it has a trailing slash.The best part is that this seems like improper usage of
set_protocol()
. But I'm fine with that as long as it makes the CSS work.Hope this saves someone else few hours of time.
This has in fact nothing to do with Zend Framework, but you need to supply DomPDF the right path to load the "external" files from.
See also the manual of DomPDF for this feature.