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

tez616oj  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(110)

我试图从我的数据库中生成一个充满信息的报告,我可以用HTML和 Bootstrap 正确地显示它,但是当我试图呈现我的HTML文件时, Bootstrap 停止工作。

<?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预览,只是没有 Bootstrap 。
有什么我遗漏的选项吗?
我试着下载 Bootstrap ,我试着用另一个版本(4.3.1,5.0.2,5.3.0),我试着使用CDN,但没有任何工作。
我也尝试了this answer中的解决方案,但是将css放在同一个文件中不起作用,并且set_base_path方法已被弃用。

o7jaxewo

o7jaxewo1#

我找到了解决方案,感谢@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">

它就像一种魔力。

nc1teljy

nc1teljy2#

我可以让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>

相关问题