如何在 dompdf 中应用引导样式

Posted

技术标签:

【中文标题】如何在 dompdf 中应用引导样式【英文标题】:How to apply bootstrap style in dompdf 【发布时间】:2015-07-11 05:13:41 【问题描述】:

我正在使用引导网格来显示,我希望我的客户以 pdf 格式下载它,因此我使用的是 dompdf,但 dompdf 无法应用引导样式。我无法返回并将我的引导网格转换为基本的 html 表并使用不同的插件转换为 pdf 我发现它们既困难又费时(尤其是在安装作曲家然后更新我是新人时)有什么办法让我可以轻松地将引导样式应用于我的 pdf

   $pr_dt=$_POST['hid'];//div elements which i want ot convert them to pdf and also contain bootstap lib link
   include_once("../assets/converter/dompdf/dompdf_config.inc.php");
   $dompdf =  new DOMPDF();
   $dompdf->load_html($pr_dt);
   $dompdf->render();
   $dompdf->stream("MRA.pdf");

或者至少有任何在线转换器将引导网格转换为 html 表格

【问题讨论】:

dompdf 的 CSS 支持对于像 Bootstrap 这样复杂的东西来说还是有点欠缺。您可以使基本设计工作,但更复杂的设计不太可能产生预期的结果。如果您提供 HTML 示例,我们可以尝试调整 CSS 以获得更好的结果。 你可能想要的是一个无头浏览器,比如PhantomJS。它确实需要在服务器上安装,但由于它基于 webkit,它产生的结果与任何现代网络浏览器一样好。 对不起,我无法访问我的网络服务器进行安装,我只能在完成后上传我的文件 【参考方案1】:

您需要确保 dompdf 可以找到您的 CSS 文件。您可以使用set_base_path 执行此操作,例如:

$dompdf->set_base_path("/www/public/css/");

您还需要指定 CSS 文件,例如:

<html>
  <head>
    <link type="text/css" href="style.css" rel="stylesheet" />
  </head>
<body>
...

【讨论】:

现在我在 lin 346 上找不到字体类 fontmetrics_cls.php 确保您的 dompdf 设置正确。检查您的 setup.php,它应该会告诉您出了什么问题,例如:pxd.me/dompdf/www/setup.php DOMPDF_PDF_BACKEND 是 CPDF 我应该改变这个【参考方案2】:

将所有 CSS 代码放在同一页面中。不要不要将 CSS 引用到外部链接。

使用 marginpaddingtop 等内联标签。

【讨论】:

【参考方案3】:

我遇到了同样的挑战并通过以下方式解决了它: 在页面顶部的标记处添加 bootstrap.min.css 代码。 N.B bootstrap 3 效果最好。

【讨论】:

【参考方案4】:

在html代码之前包含:

        $html = '<link rel="stylesheet" href="/css/bootstrap.min.css" />';

【讨论】:

【参考方案5】:

'响应现在我在第 346 行找不到字体类 fontmetrics_cls.php'

发生这种情况是因为您需要将 Dompdf 添加到应用程序配置中以包含模块。在 zf2 的模块部分中的 application.config.php 我希望这会有所帮助,因为我花了几个小时在没有任何文档的情况下寻找它。

【讨论】:

【参考方案6】:

您可以使用Bootstrap v3.3.6,它与 DomPDF 一起使用, 我已经测试过了

【讨论】:

【参考方案7】:
$content .= '<style>
'.file_get_contents("./bootstrap.min.css").'
</style>';

将此添加到您的 html 代码中。它会将原始 css 打印到 html 代码中

【讨论】:

以上是关于如何在 dompdf 中应用引导样式的主要内容,如果未能解决你的问题,请参考以下文章

如何将样式仅应用于引导程序中的特定屏幕类型

如何在Drupal 8中使用Dompdf? [关闭]

如何在 DomPDF 中正确嵌入 Google 字体?打印时中断

如何在 django 项目中使用引导样式

在 React 中如何只导入需要的 Bootstrap 样式。引导 css 模块?

如何使用 dompdf 创建多个页面