【问题标题】:TCPDF error:"Some data has already been output, can't send PDF file "TCPDF 错误:“部分数据已输出,无法发送 PDF 文件”
【发布时间】:2018-01-10 13:19:21
【问题描述】:

我正在使用 TCPDF 生成 pdf 文件。

<form method='post'>
    <input type='submit' name='create_pdf' class='gs-btn-3' value='Create PDF'/>
</form>
<?php 
    if (isset($_POST["create_pdf"]))
        {
            require_once("myPDF/TCPDF/tcpdf.php");
            $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
            $obj_pdf->SetCreator(PDF_CREATOR);
            $obj_pdf->SetTitle('Thisi is Serena first PDF example');
            $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);
            $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '',PDF_FONT_SIZE_MAIN));
            $obj_pdf->SetFooterFont(Array(PDF_FONT_NAME_DATA, '',PDF_FONT_SIZE_DATA));
            $obj_pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
            $obj_pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
            $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
            $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '5', PDF_MARGIN_RIGHT);
            $obj_pdf->SetPrintHeader(false);
            $obj_pdf->SetPrintFooter(false); //true
            $obj_pdf->SetAutoPageBreak(TRUE, 10);
            $obj_pdf->SetFont('dejavusans', '', 14);
            $obj_pdf->AddPage();

            $content = '
                        <h3 align="center"> Export HTML Table data to PDF using TCPDF in PHP</h3>
                        <table border="1" cellspacing="6" cellpadding="4">
                            <tr>
                                <th width="25%" align="center">Company Name</th>
                                <th width="25%">Contact</th>
                                <th width="10%">Address</th>
                                <th width="10%">Phone</th>
                                <th width="10%">Modify by</th>
                                <th width="10%">Modify on</th>  
                                <th width="10%">EDIT</th>                           
                            </tr>
                            if(isset($this->culist) && is_array($this->culist) && sizeOf($this->culist) > 0) {
                            foreach($this->culist as $key=>$value) {    
                            <tr>
                                <td style="width: 25%;">
                                    <?php echo $value->companyname; ?>                      
                                </td>
                                <td style="width: 25%;">
                                    <?php echo $value->firstname; ?>
                                </td>
                                <td style="width: 10%;">
                                    <?php echo $value->address; ?>
                                </td>
                                <td style="width: 10%;">
                                    <?php echo $value->phone; ?>
                                </td>
                                <td style="width: 10%;">
                                    <?php echo $value->modified_by; ?>
                                </td>   
                                <td style="width: 10%;">
                                    <?php echo $value->modified_on; ?>
                                </td>                               

                            </tr>
                            }
                        </table>
                            ';

                            $obj_pdf->WriteHTML($content, true, false, true, false, '');
                            ob_end_clean();

                            $obj_pdf->Output('sample.pdf', 'I');
                }

            ?>

有两个错误,

首先是“TCPD ERROR: Some data has been output, can't send PDF file”。我试过“ob_end_clean();” 之前 "$obj_pdf->Output('sample.pdf', 'I');",显示了很多不可读的代码。

其次是生成的表格不是来自上面显示的脚本,而是表格来自视图。

谁能帮帮我?提前致谢。

【问题讨论】:

  • 你一定是 serena williams :) 开个玩笑 .. BTW .. 你检查过这个线程 stackoverflow.com/questions/16011050/… 吗?
  • 谢谢,我已经看过了,但它不适合我的问题..
  • ok mam .. 只做一件事 .. 而不是发送表格的大 html 数据 .. 只需输入简单的文本并检查它是否工作。
  • 放简单的文字是个好主意!!但是生成的页面是视图中的表格。它似乎没有通过 TCPDF php 脚本。实际上,我使用的是 MVC 结构,并将这些脚本放在视图文件中。你知道我应该放在哪里吗?
  • 我告诉你放简单文本的原因只是为了调试目的,不管我们的 html 代码还是其他地方有错误。

标签: php html pdf-generation tcpdf


【解决方案1】:

我知道这是一个非常古老的问题。我确实有一个答案,至少在我的场景中。 即使使用 ob_end_clean() 并且没有输出,也会发生相同的错误。 奇怪的是,当我删除 ob_end_clean();它得到输出到pdf

【讨论】:

  • 这没有提供问题的答案。
猜你喜欢
  • 2015-03-12
  • 2013-12-07
  • 2017-01-05
  • 2020-05-15
  • 1970-01-01
  • 2013-04-07
  • 2017-09-28
  • 1970-01-01
相关资源
最近更新 更多