【问题标题】:Unable to stream pdf: headers already sent codeigniter无法流式传输 pdf:标头已发送 codeigniter
【发布时间】:2017-06-14 07:14:27
【问题描述】:

当我想将文件导出为 pdf 时出现此错误

无法流式传输 pdf:标头已发送

这是我在控制器中的 export_to_pdf 函数

function export_to_pdf() {
        $this->load->helper('warsito_pdf_helper');
        $this->load->model('gedung/gedung_model');
        $data['row'] = $this->gedung_model->laporan_perawatan_keseluruhan();
        $object = $this->load->view('manage/pdf_report_all', $data);
        $filename = 'Report.pdf';
        generate_pdf($object, $filename, true);
    }

我有一个名叫 warsito_pdf_helper 的助手

function generate_pdf($object, $filename, $direct_download = true) {
    require_once 'dompdf/dompdf_config.inc.php';
    $dompdf = new DOMPDF();
    $dompdf->load_html($object);
    $dompdf->render();
    if($direct_download == true) {
        $dompdf->stream($filename);
    } else {
        return $dompdf->output();
    }
}

最后是 pdf 的视图

pdf_report_all.php

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <!-- Favicons-->
        <link rel="apple-touch-icon-precomposed" href="<?php echo base_url();?>assets/home/assets/img/favicon/apple-touch-icon-152x152.png">
        <meta name="msapplication-TileColor" content="#FFFFFF">
        <meta name="msapplication-TileImage" content="<?php echo base_url();?>assets/home/assets/img/favicon/mstile-144x144.png">
        <link rel="icon" href="<?php echo base_url();?>assets/home/assets/img/favicon/favicon-32x32.png" sizes="32x32">
        <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
        <!-- Materialize core CSS -->
        <link href="<?php echo base_url();?>assets/home/materialize/css/materialize.css" rel="stylesheet" type="text/css">
        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="assets/js/html5shiv.js"></script>
            <script src="assets/js/respond.min.js"></script>
        <![endif]-->
        <link href="<?php echo base_url();?>assets/home/template.css" rel="stylesheet" type="text/css">
    </head>
<body>
    <center><b><h5>Laporan Pembayaran Keseluruhan</h5></b></center>
    <!--
    <div class="container">
        <div class="row">
        <div class="col s12 m12"> -->
            <table class="bordered" align="center">
            <tr>
                <th>No</th>
                <th>No Ref</th>
                <th>Jenis Perawatan</th>
                <th>Tanggal Pembayaran Tagihan</th>
                <th>Jumlah Pembayaran</th>
            </tr>
            <?php foreach($row as $row): $no = 1; $total_pembayaran = 0;?>
                <tr>
                    <td><?php echo $no++?></td>
                    <td><?php echo $row['NO_ID']?></td>
                    <td><?php echo $row['NAMA_PERAWATAN']?></td>
                    <td><?php echo $row['TANGGAL_PEMBAYARAN']?></td>
                    <td><?php echo "Rp. ".number_format($row['BIAYA'])?></td>
                </tr>
                <?php $total_pembayaran = $row['BIAYA'] + $total_pembayaran?>
            <?php endforeach;?>
            </table>
            <table style="display: inline-block;">
                <tr>
                    <td><b>Total Pembayaran Keseluruhan: </b></td>
                    <td><b><?php echo "Rp. ".number_format($total_pembayaran)?></b></td>
                </tr>
            </table>
        <!--
        </div>
        </div>
    </div> -->
    <script src="<?php echo base_url();?>assets/home/assets/js/jquery.min.js"></script>
    <script src="<?php echo base_url();?>assets/home/materialize/js/materialize.js"></script>
    <script src="<?php echo base_url();?>assets/home/index.js"></script>
</body>
</html>

我以前用谷歌搜索过我的问题,主要是说这个错误发生是因为我的文件中有多余的行我已经尝试了这个链接DOMPDF: Unable to stream pdf: headers already sent的解决方案 并在stream()之后添加如下代码;

$f;
$l;
if(headers_sent($f,$l))
{
    echo $f,'<br/>',$l,'<br/>';
    die('now detect line');
}

但是错误仍然发生,所以任何人都可以告诉我我的方法或代码有什么问题,谢谢

【问题讨论】:

    标签: php mysql codeigniter dompdf


    【解决方案1】:

    在您的控制器中将$object = $this->load->view('manage/pdf_report_all', $data); 更改为$object = $this-&gt;load-&gt;view('manage/pdf_report_all', $data, TRUE);

    并将您的视图更改为

    `

    <center><b><h5>Laporan Pembayaran Keseluruhan</h5></b></center>
    
                <table class="bordered" align="center">
                <tr>
                    <th>No</th>
                    <th>No Ref</th>
                    <th>Jenis Perawatan</th>
                    <th>Tanggal Pembayaran Tagihan</th>
                    <th>Jumlah Pembayaran</th>
                </tr>
                <?php foreach($row as $row): $no = 1; $total_pembayaran = 0;?>
                    <tr>
                        <td><?php echo $no++?></td>
                        <td><?php echo $row['NO_ID']?></td>
                        <td><?php echo $row['NAMA_PERAWATAN']?></td>
                        <td><?php echo $row['TANGGAL_PEMBAYARAN']?></td>
                        <td><?php echo "Rp. ".number_format($row['BIAYA'])?></td>
                    </tr>
                    <?php $total_pembayaran = $row['BIAYA'] + $total_pembayaran?>
                <?php endforeach;?>
                </table>
                <table style="display: inline-block;">
                    <tr>
                        <td><b>Total Pembayaran Keseluruhan: </b></td>
                        <td><b><?php echo "Rp. ".number_format($total_pembayaran)?></b></td>
                    </tr>
            </table>
    

    【讨论】:

    • 无法流式传输 pdf: 标头已发送 codeigniter 错误现在消失了,先生,但是当我将 $object 更改为 $object = $this->load->view('manage/pdf_report_all', $数据,真);先生,发生了另一个致命错误,例如“消息:在非对象上调用成员函数 get_cellmap()”
    • 那是你的 html 错误......让我检查你的观点。您可以在空白视图中尝试仅包含

      Hello World!

    • 感谢您的建议先生,我发现错误是因为我在我的桌子上使用了类,实际上是在我的第一个和第二个表标签中,当我从我的表中删除类和样式时,它工作正常.但是先生让我讨论这个问题,所以我不能从我的 css 中使用任何类到我的表,我将它加载到上面的 标记中,我为我的 css 使用物化框架,这就是为什么 dompdf 无法解析它,我不知道这是来自 dompdf 的错误,还是我错过了 dompdf 文档中的某些内容。无论如何感谢您的帮助先生
    • dompdf 的问题是它不支持每个 css,所以在包含它时要小心,不要包含 javascripts
    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多