最新消息:文章中包含代码时,请遵守代码高亮规范!

php使用tcpdf导出pdf文件

PHP user 79浏览 0评论

需求: 

    将页面中内容以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();
    }
}

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25393.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我

发表我的评论
取消评论

表情