php - codeigniter DOMPDF 显示空白屏幕,没有错误,html 生成正确但 pdf 不生成
问题描述
在代码点火器中,
DOMPDF显示空白屏幕..
没有错误(在开发模式下)..
html生成正确..
但是没有生成pdf ..只有空白屏幕
我的代码片段:
function pdf_create($html, $filename='', $stream=TRUE)
{
require_once("dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_option('isHtml5ParserEnabled', true);
$dompdf->setPaper('A4', 'potrait');
$dompdf->render();
if ($stream) {
$dompdf->stream($filename.".pdf", array("Attachment" => 0));
} else {
return $dompdf->output();
}
}
function invoicepdf()
{
$orderId = base64_decode($this->uri->segment('3'));
$this->load->helper(array('dompdf', 'file'));
$query = "SELECT * FROM `ci_booking` WHERE id='".$orderId."'";
$this->data['order_details'] = $this->home->customQuery($query);
$html = $this->load->view('reports/printinvoice', $this->data, true);
//echo $html; die;
$this->pdf_create($html, 'Invoice -'.$orderId);
}
当我取消注释 invoicepdf() 函数的回显语句时..然后正确生成输出。但是当它传递给 pdf_create() 函数时,它显示空白屏幕,将 ini_reporting 设置为 1 后没有错误。
我附上了空白屏幕检查代码,为什么它会这样显示?
解决方案
您的代码有两个问题:
1.- 一个很长的小错字:
您正在设置 DomPDF 未知的纸张方向,$dompdf->setPaper('A4', 'potrait');
您需要将其更改为,portrait
否则 DomPDF 可能无法真正理解您想要的内容并且无法呈现。
2.- 您视图中的所有人类可读文本(不是 HTML 格式)都是使用 Javascript 生成的,这需要 DomPDF 没有的浏览器渲染引擎(DomPDF 渲染服务器端,而不是客户端,这很重要考虑)。
在浏览器中加载视图时一切正常的事实是因为在这种情况下您的浏览器可以document.write
正确处理。然而,DomPDF 没有(因为它不是真正的 DOM/JS 渲染引擎,它只是以适合给定纸张大小和方向的方式格式化纯 HTML)。
尝试使文本成为常规的非 JS HTML
推荐阅读
- javascript - 如何从数组创建对象并计算新对象中的值?
- javascript - Azure Application Insight 会显示 JavaScript 错误吗?
- python - 从 Python 中的 API 结果中捕获字符串
- java - 我应该如何在 Apache Ignite (GridGain) 中执行缓存配置迁移?
- javascript - 道具更改时更新列表
- arrays - 如何检查组合框中的值是否是组成组合框的行源的成员?
- asp.net-core - ASP.NET Core MVC:混合可空路由值和查询字符串参数时,UrlHelper.Action 无法解析
- angular - angular rxjs 正确使用分享/分享回复
- javascript - make_date() 不能在表单中工作,获取错误的日期
- sas - %CEM Macro for SAS: how to invoke this macro