需求:須要將HTML頁面生成PDF文檔tcp
開發語言:PHP字體
使用TCPDF第三方類庫進行生成,下載地址:http://sourceforge.net/projects/tcpdf/編碼
核心代碼:spa
1 public static function writePdf($content) 2 { 3 $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 4 $pdf->SetCreator(PDF_CREATOR); 5 6 $pdf->SetHeaderData("logo.jpg", 70, 'wanglibao Agreement' . '', ''); 7 $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 8 $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); 9 $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 10 $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 11 $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 12 $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 13 $pdf->AddPage(); 14 $pdf->setPageMark(); 15 $pdf->SetFont('stsongstdlight', '', 13); 16 $title = <<<EOD 17 <h2>標題</h2> 18 EOD; 19 20 $pdf->writeHTML($content, true, false, false, false, ''); 21 // $pdf->writeHTML($content, true, 0, true, true); 22 // $pdf->writeHTMLCell(0, 0, '', '', $content, 0, 1, 0, true, 'C', true); 23 $pdf->lastPage(); 24 $pdf->Output(date('Y-m-d') . '.pdf', 'I'); 25 }
TCPDF存在的問題:.net
問題:當頁面中有表格的時候,有的時候TCPDF不將表格顯示出來,或者是一個黑色的區塊,致使不能正常的顯示。code
解決辦法:使用TCPDF中的樣式便可解決。blog
<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>
問題:漢字顯示??或者其餘亂碼,不能正常顯示。ci
解決辦法:開發
該問題分爲兩個,一個是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,'', 字體大小);便可