我正在尝试向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');
答案 0 :(得分:0)
在包含正文/内容之前,尝试运行干净的PDF并检查输出。
$ pdf-> AddPage();
$ pdf-> Output('','S');