我正在尝试生成一个包含来自数据库的信息的报告,并且我可以使用 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
已被弃用。
我找到了解决方案,感谢@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">
它就像一个魅力。
我能够使 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>