需求:需要将HTML页面生成PDF文档
开发语言:PHP
使用TCPDF第三方类库进行生成,下载地址:http://sourceforge.net/projects/tcpdf/
核心代码:
public static function writePdf($content)
{
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR); $pdf->SetHeaderData("logo.jpg", 70, 'wanglibao Agreement' . '', '');
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->AddPage();
$pdf->setPageMark();
$pdf->SetFont('stsongstdlight', '', 13);
$title = <<<EOD
<h2>标题</h2>
EOD; $pdf->writeHTML($content, true, false, false, false, '');
// $pdf->writeHTML($content, true, 0, true, true);
// $pdf->writeHTMLCell(0, 0, '', '', $content, 0, 1, 0, true, 'C', true);
$pdf->lastPage();
$pdf->Output(date('Y-m-d') . '.pdf', 'I');
}
TCPDF存在的问题:
问题:当页面中有表格的时候,有的时候TCPDF不将表格显示出来,或者是一个黑色的区块,导致不能正常的显示。
解决办法:使用TCPDF中的样式即可解决。
<table cellpadding="1" cellspacing="1" border="1" style="text-align:center;">
<tr>
<td>C</td>
<td>2C</td>
<td>3C</td>
<td>4F</td>
</tr>
<tr>
<td>1C</td>
<td>2C</td>
<td>3C</td>
<td>4F</td>
</tr>
</table>
问题:汉字显示??或者其他乱码,不能正常显示。
解决办法:
该问题分为两个,一个是PDF标题中汉字出现乱码。方案是设置$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN,'',PDF_FONT_SIZE_MAIN); 其中PDF_FONT_NAME_MAIN就是设置头部的字体编码。将PDF_FONT_NAME_MAIN设置为msungstdlight即可。
另一个是页面中出现乱码。同样是设置编码。在$pdf->writeHtml();或者$pdf->Cell();等之前设置$pdf->SetFont(msungstdlight,'', 字体大小);即可