php使用tcpdf导出pdf文件

需求: 

    将页面中内容以pdf形式导出

准备:

TCPDF 地址: https://tcpdf.org/

使用 composer 安装即可,在 packagist 的地址是 :https://packagist.org/packages/tecnickcom/tcpdf

思路:

    前端获取到要导出页面的html传递给后端,后端通过tcpdf来进行导出操作。

前端代码如下:

 //......
 <form id="html_form" method="post" action="your action">
        <input hidden name="html" id="html_vaue"/>
  </form>
    
 <div>
     //要导出的内容
     <span id="pdf-content">
         //......
     </span>
     
     <button type="button" onclick="exPdf()" class="submission">导出pdf</button>
 </div>
  
 //......
 <script>
        function exPdf() {
            var html = document.getElementById("pdf-content").innerHTML;
            $("#html_vaue").val(html);
            $('#html_form').submit();
        }
  </script>

后端代码如下:

class PdfController
{
    public function getPage($html){
        $pageHtml = <<<EOF
        <!DOCTYPE html>
        <html>
        
        <head>
            <meta charset="UTF-8">
        </head>
        <body>
            <div>
                {$html}
            </div>
        </body>
        </html>
EOF;
        return $pageHtml;
    }
    /**
     * 生成pdf文件
     */
    public function createPdfAction(){
        //引入tcpdf
        $door = dirname( $this->container->get('kernel')->getRootDir() ). DIRECTORY_SEPARATOR;
        require_once implode('/', [$door, 'vendor/tecnickcom/tcpdf/tcpdf.php']);
        
        //生成pdf文件名以及对应内容
        $html = $this->getPage(self::$request->get("html",""));
        $file_name = self::$request->get("file_name","pdf".time()).'.pdf';
        
        //替换\n
        $html = str_replace("\n","",$html);
        
        //TCPDF使用
        $pdf = new \TCPDF();
        $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
        $pdf->setFontSubsetting(false);
        $pdf->SetFont('stsongstdlight', '', 10, '', false);
        $pdf->AddPage();
                
        //写入html  I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
        $pdf->writeHTML($html, true, false, true, false, '');
        $pdf->Output($file_name, 'D');
        
        exit();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值