所以代码工作并显示PDF格式的DB数据,在PHP 7.1
升级到7.4,由于Dompdf库的名称更改而出现问题。
load_html() became loadHtml()
set_paper() became SetPaper()
一旦我将Dompdf更新到最新版本,错误停止,pdf正常下载,但内容现在只是一个空白页。
有人在将Dompdf代码升级到PHP 7.4时遇到这个问题吗?问题是什么?
我唯一能想到的是更新的DomPDF库,我刚从它的GitHub上得到了最新的,可能有一些我没有的依赖关系,但我不知道如何添加这些。在他们的GitHub页面上不清楚如何做到这一点。他们展示了Git的方式和Composer的方式,我真的不知道如何使用这些方式。他们展示了一种手动方式,似乎只是手动从他们的Git下载代码,这就是我所做的,我假设我有他们需要的所有库依赖项,我这样说对吗?
PHP日志没有错误谢谢你的帮助。
现在是生成空白PDF的代码。
<?php
require_once 'dompdf/autoload.inc.php';
$currentPage = $_SERVER["PHP_SELF"];
$sql = "SELECT * FROM `members` where `active` = 1 order by lastname asc ";
$results = $pdo->query($sql) or die(mysql_error());
$rows = $results->fetchAll();
// console_log($rows);
$count = $results->fetchColumn();
// use mysql dresults to generate html to convert.
$html = '<html><header>';
$html .= '<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Tangerine:bold">';
$html .= '<link href="css/pdf.css" rel="stylesheet" type="text/css">';
$html .= '<body>';
//echo $html;
// $html .= '<p>test</p>';
//start a loop
$html .= '<h1 Report</h1>';
$html .= '<h2>'.$count.' Members</h2>';
$html .= '<p>Report dated: '.date("F j, Y, g:i a").'</p>';
$html .= '<hr>';
foreach ($rows as $r2 ) {
$html .= '<span class="volunteers"><strong>'.$r2["lastname"].', '.$r2["firstname"]. '</strong>: '.$r2["address"].
', '.$r2["phone"]. ', '.$r2["email"].'.</span><br>';
} //end while
$html .='<h3>--------------------End of Report--------------------</h3>';
$html .='</body></html>';
//$dompdf = new DOMPDF();
use DompdfDompdf;
use DompdfOptions;
$options = new Options();
$options->set('defaultFont', 'Courier');
// instantiate and use the dompdf class
$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream("mvyc-all-active-members-report.pdf");
?>
问题似乎在呈现的html代码中。因为如果我将html生成部分替换为一个简单的:
$dompdf->loadHtml('<h1> The Report</h1>');
PDF不为空,包含html。因此,在某个地方,新升级的DomPDF不喜欢我在$ HTML变量中向它呈现HTML的方式。任何想法都很感激。也许
obs_clean;或者清除html?
似乎解决方案是:
我的HTML代码确实不是完美的HTML格式。旧版本的DomPDF库可以容忍我不完美的HTML,但最新版本不能。在仔细检查了我的html之后,我发现我打开了一个标签,但没有关闭标签,一旦我纠正了这个问题,PDF就按预期显示了数据。所以,是的,对于DOMPDF,空白的PDF意味着您的HTML不符合规范,您应该彻底检查它。😊🙏