博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

tcpdf 将网页生成pdf

Posted on 2015-09-02 14:42  jong  阅读(6195)  评论(0编辑  收藏  举报

需求:需要将HTML页面生成PDF文档

开发语言:PHP

使用TCPDF第三方类库进行生成,下载地址:http://sourceforge.net/projects/tcpdf/

核心代码:

 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存在的问题:

  问题:当页面中有表格的时候,有的时候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,'', 字体大小);即可