如何在带有 dompdf 的 PDF 中使用 bootstrap?

问题描述 投票:0回答:2

我正在尝试生成一个包含来自数据库的信息的报告,并且我可以使用 HTML 和 boostrap 正确显示它,但是当我尝试渲染我的 html 文件时,引导程序停止工作。

<?php 
//this is my html:
ob_start(); 
?>

<!-- All my file goes here, including the <link></link> to the boostrap -->


<?php $html = ob_get_clean() ?>

然后,在另一个文件(我用来创建 PDF)中我这样做了:

<?php


require_once 'route/to/dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();

include "firstFileWithHtml.php";
$options = $dompdf->getOptions();
$options->set(array('isRemoteEnabled' => true));
$dompdf->setOptions($options);

$dompdf->loadHtml($html);
$dompdf->setPaper("letter");

$dompdf->render();

$dompdf->stream("file_pdf", array("Attachment" =>false));


?>

它会生成 PDF 预览,只是没有 boostrap。

我缺少一个选项吗?

我尝试下载 bootstrap,尝试使用其他版本(4.3.1、5.0.2、5.3.0),我尝试使用 CDN,但没有任何效果。

我也尝试了这个答案中的解决方案,但是将CSS放在同一个文件中不起作用,并且方法

set_base_path
已被弃用。

php bootstrap-4 bootstrap-5 dompdf
2个回答
1
投票

我找到了解决方案,感谢@ceejayoz 的提示。

如果我这样放置 href:

<link rel="stylesheet" href=""../user/bootstrap-5.0.2-dist/css/bootstrap.min.css">

没成功。 但如果我用这个代替:

<link rel="stylesheet" href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/PROJECT/user/bootstrap-5.0.2-dist/css/bootstrap.min.css">

它就像一个魅力。


0
投票

我能够使 bootstrap 5 工作。我正在做一个 Laravel 项目,需要 dompdf。

首先,获取Bootstrap 5缩小版的内容

$bootstrap5 = file_get_contents(public_path() . '/css/bootstrap.min.css');

然后将“$bootstrap5”传递到$data变量中

$data = [
'professions' => $professions,
'logo' => $imageLogo,
'css' => $bootstrap5,
];

然后用$data加载PDF

$pdf = Pdf::setPaper('letter', 'portrait')->setOptions(['dpi' => 100, 
'defaultFont' => 'Nunito, sans-serif', 'isHtml5ParserEnabled' => true, 
'isRemoteEnabled' => true, 'isJavascriptEnabled' => true])
->loadView('reports.staffing-report', $data);

在我的staffing-report.php中,我在内部添加了一个样式标签,并从$data中呼应了“css”:

<style> {{ $css }} </style>
© www.soinside.com 2019 - 2024. All rights reserved.