从PHP 7.1升级到7.4后,Dompdf代码显示空白PDF



所以代码工作并显示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>:&nbsp;&nbsp;  '.$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不符合规范,您应该彻底检查它。😊🙏

相关内容

  • 没有找到相关文章

最新更新