I am using DOMPDF
for creating PDF
documents in the Symfony framework.
/**
* @param string $html
* @param string $name
*
* @return string
*/
public function execute(string $html, string $name): ?string
{
$dompdf = new Dompdf();
$dompdf->setOptions($this->getPdfOptions());
$dompdf->loadHtml($html);
$dompdf->render();
$escapedName = \str_replace('/', '', $name);
$dompdf->stream($escapedName.".pdf");
return $dompdf->output();
}
/**
* @return Options
*/
private function getPdfOptions(): Options
{
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->setIsPhpEnabled(true);
$pdfOptions->setIsRemoteEnabled(true);
$pdfOptions->setIsJavascriptEnabled(true);
$pdfOptions->set(true);
return $pdfOptions;
}
I had enabled JavaScript but there is no output. I use chartJs library for displaying a bar chart.
HTML response is ok, but when HTML
(TWIG)
response is used for generated PDF
, results generated by JavaScript are not the same,
chart is not displayed.
I had a similar issue with CSS a while ago, it appears it wasn't possible to load the css directly inside the template, so the treatment went into the controller. This solution worked for me.
$dompdf = new Dompdf();
$html = $this->renderView('path/your_page.html.twig');
$html .= '<link type="text/css" href="/absolute/path/to/pdf.css" rel="stylesheet" />';
$dompdf->loadHtml($html);
I suspect it might be the same for your javascript.