将 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 文件中的一些 class。这意味着对于 DomPDF,包含 css 的文件是未知的,因此我的 pdf 中有一个 table 而没有 css。
我试图直接在我的 html 中添加样式表,但导入也不是那样工作的。但我不想将它添加到 html 中,加载的 css 是更高级别的模板。
如何从此结构添加外部文件(如 bootstrap 等)?我不知道这是否可能。感谢您的帮助 ;)
您始终可以使用这样的解决方案 Including a non-twig file from twig 将外部文件内容直接读入模板属性,因此 css 将内联呈现并与 mpdf 兼容。
必须在您提供给 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 版本,它可以工作,但在未来的版本中可能无法工作。
我有这段代码可以将一些数据导出为 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 文件中的一些 class。这意味着对于 DomPDF,包含 css 的文件是未知的,因此我的 pdf 中有一个 table 而没有 css。 我试图直接在我的 html 中添加样式表,但导入也不是那样工作的。但我不想将它添加到 html 中,加载的 css 是更高级别的模板。
如何从此结构添加外部文件(如 bootstrap 等)?我不知道这是否可能。感谢您的帮助 ;)
您始终可以使用这样的解决方案 Including a non-twig file from twig 将外部文件内容直接读入模板属性,因此 css 将内联呈现并与 mpdf 兼容。
必须在您提供给 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 版本,它可以工作,但在未来的版本中可能无法工作。