tcpdf生成pdf文件->找不到文件头

时间:2018-06-27 17:14:27

标签: php pdf html-table html-email tcpdf

我正在尝试向SQL数据库生成用户输入数据表,以生成表,放入PDF文件并作为附件发送给电子邮件。

一切顺利,直到开放。该文件的内部只有1kb,只有HTML代码,当我尝试在http://www.pdf-online.com/osa/repair.aspx上对其进行测试时,它记录了此错误:

  

文件已损坏,无法修复,但可能已恢复   错误:

     

打开文件。 0x80410104-E-找不到文件头。

     

文件:data.pdf
  关闭文件。

     

3-Heights(TM)PDF修复工具,评估许可证有效,直到不受限制

能否请您看看我的代码并告诉我什么地方错了?我尝试了所有输出类型的设置(E,F,S,I等)。没有一个。

我的PDF生成功能:

function generate_pdf($ni, $na, $sur, $ma, $outp){
     if(isset($_POST["generate_pdf"])){
     require_once("tcpdf.php");
        $pdf_file = new TCPDF("P", PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-16', false);
        $pdf_file -> SetCreator(PDF_CREATOR);
        $pdf_file -> SetTitle("Data o uživateli - ".$ni);
        $pdf_file -> SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);
        $pdf_file -> SetHeaderFont('helvetica');
        $pdf_file -> SetFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
        $pdf_file -> SetDefaultMonospacedFont('helvetica');
        $pdf_file -> SetFooterMargin(PDF_MARGIN_FOOTER);
        $pdf_file -> SetMArgins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT);
        $pdf_file -> SetPrintHeader(false);
        $pdf_file -> SetPrintHeader(false);
        $pdf_file -> SetAutoPageBreak(True, 12);
        $pdf_file -> SetFont('helvetica', '', 12);
        $pdf_file -> addPage();
        $data_to_pdf ='
            <h1 style="text-align: center;">Data o uživateli - '.$ni.'</h1>
            <table border="1" border-collapse="collapse" border-spacing="0" style="text-align: center;"cellpadding="10">
                <tr style="background-color: #b9b9b9;">
                    <td width="20%"><b>Název dat</b></td>
                    <td width="80%"><b>Data</b></td>
                </tr>
            <tbody>
                <tr>
                    <td>Nick</td>
                    <td>'.$ni.'</td>
                </tr>
                <tr>
                    <td>Jméno</td>
                    <td>'.$na.'</td>
                </tr>
                <tr>
                    <td>Príjmení</td>
                    <td>'.$sur.'</td>
                </tr>
                <tr>
                    <td>email</td>
                    <td>'.$ma.'</td>
                </tr>
            </tbody>
        </table>';
        $pdf_file -> writeHTML($data_to_pdf);
        ob_clean();
        $pdf_file -> Output('data_user_'.$ni.'.pdf', $outp);
    }
}

调用该函数的函数(将E设置为输出类型=为电子邮件附件分块的base64编码)

$pdf_file_var = generate_pdf($ni, $na, $sur, $ma, 'E');

1 个答案:

答案 0 :(得分:0)

在包含正文/内容之前,尝试运行干净的PDF并检查输出。

$ pdf-> AddPage();

$ pdf-> Output('','S');