php - 将 CSS 添加到 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 文件。

如果你不想改变你的 Twig 模板,你可以使用这样的解决方法:

$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 版本,它可以工作,但在未来的版本中可能无法工作。

https://stackoverflow.com/questions/54653906/

相关文章:

reactjs - 覆盖 Material UI 扩展面板摘要

reactjs - 当 URL 包含多个路径时 React Router 不工作

kubernetes - 在 Kubernetes (GKE) 中的一个节点上组合多个本地 SSD

google-photos-api - 如何使用 Google Photos API 的 baseU

ag-grid - 使用 forEachNode 的行选择非常慢

angular - 如何使用 typescript 修复 Angular 5 中的 ‘debounc

amazon-web-services - 是否可以在控制台中编辑 AWS Lambda 层代码?

r - R中大数据的轮廓计算

reactjs - React.HTMLProps 破坏 de

unicode - 为什么 unicode 代码点的 UTF-8 编码不能放入 3 个字节