我有代码为我生成PDF。我正在使用FPDF生成PDF。有时候它会放弃,但有时它表现得很奇怪,它会创建格式错误的pdf,因此它不会在任何pdf阅读器中打开。
此外,当它给我糟糕的格式时,pdf的大小会急剧增加..
任何人都可以提出特殊情况会出现什么问题。?
这是代码..
$pdf_Str = "<table border='1'>
<tr bgcolor=\"#666666\">
<td>Name</td>
<td>Number</td>
<td>Adjusted Amount</td>
<td>Invoice Date</td>
<td>Transaction Date</td>
<td>Amount</td>
<td>Balance</td>
<td>Record Type</td>
<td>Session</td>
<td>Course</td>
</tr>";
foreach($data as $row){
$pdf_Str .="<tr>
<td>".$row['student_name']."</td>
<td>".$row['invoiceNumber']."</td>
<td>".$row['invoiceAdjustedAmount']."</td>
<td>".($row['invoiceDate']!=''?$row['invoiceDate']:' ')."</td>
<td>".($row['TransactionDate']!=''?$row['TransactionDate']:' ')."</td>
<td>".($row['invoiceAmount']!=''?$row['invoiceAmount']:' ')."</td>
<td>".($row['invoiceBalance']!=''?$row['invoiceAmount']:' ')."</td>
<td>".($row['recordType']!=''?$row['recordType']:' ')."</td>
<td>".$row['sessionName']."</td>
<td>".($row['catalogName']!=''?$row['catalogName']:' ')."</td>
</tr>";
}
$pdf_Str .='</table>';
$p = new PDFTable();
$p->setfont('times','',12);
$p->htmltable($pdf_Str);//
$p->output("student_info.pdf",'I');
答案 0 :(得分:2)
您无法在PHP中创建表。你必须使用fpdf内置函数来做到这一点。
参考: create table in pdf with wrap data using fpdf in php
并且检查一下它可能对你有帮助。
http://www.elated.com/articles/create-nice-looking-pdfs-php-fpdf/
答案 1 :(得分:1)
据我所知,FPDF不允许转换html-&gt; pdf。您需要使用自己的函数(Cell(),MultyCell()等)。但你可以使用库mPDF 它真的很棒,非常容易使用。它可以转换html + css(!) - &gt; pdf。它处理这项工作很棒。我推荐这个库。
我希望它会有所帮助。
答案 2 :(得分:0)
您可以尝试http://code.google.com/p/dompdf/有大量的HTML到PDF库可用,我使用FPDF创建具有复杂表格的发票,只要css不是太复杂,它通常可以很好地呈现。 / p>
我仍然发现使用FPDF库本身会产生更好的结果,比如打印就绪PDF,你需要付出努力并坐在那里输出文件内联点击刷新同时轻推元素。
对于上述内容,您应该可以使用
创建一些不错的代码 $string = 'Name';
$border = 1;
$padding = 0;
$ln = 0;
$align = 'L';
$pdf->Cell($pdf->GetStringWidth($string)+$padding,3,0,'$align');
将您的标题和数据放入数组并循环通过在每行末尾将$ ln交换为2,将边框保留为0,直到您对输出等满意为止。