【问题标题】: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 样式。

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2013-06-15
      • 2015-10-17
      • 2012-01-31
      • 1970-01-01
      • 2016-02-19
      相关资源
      最近更新 更多