在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后没有错误。

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

请向我建议更改。php - Codeigniter DOMPDF显示空白屏幕,无错误,html生成正确,但pdf未生成-LMLPHP

最佳答案

您的代码有两个问题:

1.-一个很短的错别字:

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

2.-视图中所有人类可读的文本(不是HTML格式)都是使用Javascript生成的,这需要DomPDF不具备的浏览器呈现引擎(DomPDF呈现服务器端而非客户端),这一点很重要考虑)。

在浏览器中加载视图时,一切正常,是因为在这种情况下,浏览器可以正确处理document.write。但是,DomPDF并非如此(因为它不是真正的DOM / JS呈现引擎,它只是以适合给定纸张尺寸和方向的方式格式化纯HTML格式)。

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

关于php - Codeigniter DOMPDF显示空白屏幕,无错误,html生成正确,但pdf未生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57493615/

10-11 22:04