codeigniter DOMPDF 显示空白屏幕,没有错误,html 生成正确但 pdf 不生成

Posted

技术标签:

【中文标题】codeigniter DOMPDF 显示空白屏幕,没有错误,html 生成正确但 pdf 不生成【英文标题】:codeigniter DOMPDF showing blank screen, no errors, html generating properly but pdf not generating 【发布时间】:2019-12-20 22:44:04 【问题描述】:

在codeigniter中,

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() 函数的 echo 语句时.. 然后正确生成输出。但是当它传递给 pdf_create() 函数时,它显示空白屏幕,将 ini_reporting 设置为 1 后没有错误。

我附上了黑屏检查代码,为什么会这样显示?

请建议我进行更改。

【问题讨论】:

试试这些代码行:ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 也显示警告 我在 "require_once("dompdf/dompdf_config.inc.php");" 之后插入这些行声明虽然它没有显示任何警告..注意..错误 尝试返回输出return pdf_create($html, 'Invoice -'.$orderId); 虽然不工作 它看起来像您的主机将您重定向到一些“空白”页面...我怀疑您包含 dompdf 配置的方式是错误的...尝试类似if (file_exists('dompdf/dompdf_config.inc.php')) require_once("dompdf/dompdf_config.inc.php"); else echo 'dompdf config file missing'; die; 【参考方案1】:

解决了..感谢大家的帮助..这完全是布局问题..错误的colspan是视图文件中的数字

【讨论】:

【参考方案2】:

您的代码有两个问题:

1.- 一个很长的小错字:

您在此处 $dompdf->setPaper('A4', 'potrait'); 设置了 DomPDF 未知的纸张方向,您需要将其更改为 portrait 否则 DomPDF 可能无法真正理解您想要的内容并且无法呈现。

2.- 您视图中的所有人类可读文本(不是 HTML 格式)都是使用 Javascript 生成的,这需要 DomPDF 没有的浏览器渲染引擎(DomPDF 渲染服务器-端,而不是客户端,这很重要)。

在浏览器中加载视图时一切正常,因为在这种情况下,您的浏览器可以正确处理document.write。然而 DomPDF 没有(因为它不是真正的 DOM/JS 渲染引擎,它只是以适合给定纸张大小和方向的方式格式化纯 HTML)。

尝试使文本成为常规的非 JS HTML

【讨论】:

以上是关于codeigniter DOMPDF 显示空白屏幕,没有错误,html 生成正确但 pdf 不生成的主要内容,如果未能解决你的问题,请参考以下文章

DomPDF 显示除最后一页外的数据表

Dompdf 将画布转换为 pdf

Codeigniter 显示空白页而不是错误消息

Codeigniter 分页 create_link() 在视图页面上显示空白

如何解决codeigniter中函数调用的空白页

Codeigniter - mPDF 导出空白页