【问题标题】:External css not working while using dompdf in codeigniter在codeigniter中使用dompdf时外部css不起作用
【发布时间】:2020-04-14 18:11:16
【问题描述】:
$this->dompdf->setBasePath(realpath(FCPATH . '/assets/plugins/bootstrap/css/bootstrap.css'));
我在使用 DOMPdf 时无法调用外部 css。我正在使用 DOMPdf 库将 html 页面转换为 pdf。该文件正在成功转换,但我无法调用外部 css 或图像。我该如何解决这个问题?
【问题讨论】:
标签:
php
html
css
codeigniter
dompdf
【解决方案1】:
DomPDF 要求您包含的任何内容都使用绝对路径。
因此,您需要使用$_SERVER['DOCUMENT_ROOT'] 变量并将其与指向该文件的服务器路径的其余部分一起跟踪,例如$_SERVER['DOCUMENT_ROOT'].'assets/plugins/bootstrap/css/bootstrap.css';
警告词:
DomPDF 的性能在嵌入诸如 bootstrap 之类的大型 CSS 文件时会急剧下降(即使您不使用大量格式,您也会花费几秒钟来生成一个简单的 2-3 页 PDF 文件)。我的建议是在视图中内联您需要的特定样式,而不是链接完整的引导库以允许更快的 dompdf 渲染。
在我做了很多研究之后,我前段时间遇到了这个问题并在这里发布了一个问题(和答案),希望它可以在未来对其他人有所帮助。我推荐阅读Slow PDF generation with PHP+DomPDF
【解决方案2】:
您可以在创建 DomPdf 对象时使用 isRemoteEnabled = false 属性
$dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]);
您可以在 DomPdf github 中阅读有关此选项的 Options.php 文件。如果 isRemoteEnabled 设置为 true,则 DOMPDF 将根据需要访问远程站点以获取图像和 CSS 文件。
另一种选择是使用标签在视图中包含您的 css 样式。