繁体   English   中英

将CSS添加到DomPDF

[英]Add CSS to DomPDF

我有这段代码可以将一些数据导出为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加载是一个更高级别的模板。

如何从此结构添加外部文件(如bootstrap等)? 我不知道这是否可能。 谢谢您的帮助 ;)

您给DomPDF的HTML中必须引用css文件。

如果您不想更改树枝模板,则可以使用以下解决方法:

$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版本中,它可以使用,但在以后的版本中可能无法使用。

您可以始终使用这样的解决方案, 包括从树枝中读取非树枝文件,将外部文件内容直接读入template属性,因此CSS将内联呈现并与mpdf兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM