我有这段代码可以将一些数据导出为pdf。而且我想从外部css文件添加css(在使用的html中未提及)
/*********************************** Export PDF ****************************************************/
if($request->query->get('exportPDF')!= null){
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('dashboard/user_table.html.twig', [
'users' => $users
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A3', 'landscape');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser (force download)
$dompdf->stream("exportUsers.pdf", [
"Attachment" => true
]);
}
user_table.html只是带有<table>
谁从另一个模板中加载的css文件中的某些类。这意味着对于DomPDF,包含css的文件是未知的,因此,我的pdf表中没有css。 我试图直接在我的html中添加样式表,但是导入都不能那样工作。但是我还是不想将它添加到html中,加载的CSS是更高级别的模板。
如何从此结构添加外部文件(如引导程序等)?我不知道这是否可能。感谢您的帮助;)
答案 0 :(得分:1)
css文件必须在您提供给DomPDF的HTML中引用。
如果您不想更改树枝模板,则可以使用以下解决方法:
$dompdf = new Dompdf();
$html = $this->renderView('dashboard/user_table.html.twig', [
'users' => $users
]);
$html .= '<link type="text/css" href="/absolute/path/to/pdf.css" rel="stylesheet" />';
$dompdf->loadHtml($html);
请注意,根据HTML规范,在正文中添加link
标签无效。在当前的Dompdf版本中,它可以工作,但在以后的版本中可能不工作。
答案 1 :(得分:0)
您始终可以使用类似Including a non-twig file from twig这样的解决方案,将外部文件内容直接读入template属性,因此css将被内联呈现并与mpdf兼容。