Blogger Information
Blog 19
fans 0
comment 2
visits 31227
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP生成PDF
会飞的码蚁的博客
Original
1799 people have browsed it

由于本人使用TCPDF将HTML生成的PDF未达到预想的结果,则更改使用Mpdf

一、PHP使用TCPDF生成PDF文件

首先通过composer安装TCPDF

安装命令:
composer require tecnickcom/tcpdf

使用TCPDF

require_once 引入 TCPDF里的 tcpdf.php文件
在公用文件里封装好pdf方法随时调用,需要传递HTML代码和文件名

function pdf($html='<h1 style="color:red">这里可以随便写一句话~</h1>',$file_name='TestFile.pdf'){

    require_once (ROOT_PATH.'vendor/tecnick.com/tcpdf/tcpdf.php');
    $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    // 设置打印模式
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('DaZe');
    $pdf->SetTitle('TCPDF Example 001');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    // 是否显示页眉
    $pdf->setPrintHeader(false);
    // 设置页眉显示的内容
    $pdf->SetHeaderData('http://www.baidu.com', 60, 'cainiao.cn', '神梦一刀', array(0,64,255), array(0,64,128));
    // 设置页眉字体
    $pdf->setHeaderFont(Array('dejavusans', '', '12'));
    // 页眉距离顶部的距离
    $pdf->SetHeaderMargin('5');
    // 是否显示页脚
    $pdf->setPrintFooter(true);
    // 设置页脚显示的内容
    $pdf->setFooterData(array(0,64,0), array(0,64,128));
    // 设置页脚的字体
    $pdf->setFooterFont(Array('dejavusans', '', '10'));
    // 设置页脚距离底部的距离
    $pdf->SetFooterMargin('10');
    // 设置默认等宽字体
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    // 设置行高
    $pdf->setCellHeightRatio(1);
    // 设置左、上、右的间距
    $pdf->SetMargins('10', '10', '10');
    // 设置是否自动分页  距离底部多少距离时分页
    $pdf->SetAutoPageBreak(TRUE, '15');
    // 设置图像比例因子
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
        require_once(dirname(__FILE__).'/lang/eng.php');
        $pdf->setLanguageArray($l);
    }
    $pdf->setFontSubsetting(true);
    $pdf->AddPage();
    // 设置字体
    $pdf->SetFont('stsongstdlight', '', 10, '', true);
    // $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
    $pdf->writeHTML($html);
    $pdf->Output($file_name, 'D');

Output($file_name,‘D’)代表的是要直接下载生成的PDF文件,也可以设为 I 保存到服务器

参考转载自:耳东_晨 - PHP生成PDF文件,详情查看请转到原博主


html可以参考:PHP根据URL获取网页源码

由于本人使用TCPDF将HTML生成的PDF为达到预想的结果,则更改使用 Mpdf


二、使用Mpdf

1、安装mpdf:使用composer安装

composer require mpdf/mpdf

2、写demo的php文件:(php文件要和vendor文件夹同级)

<?php
 
/**
 * @param $html // HTML内容
 * @param string $fileName 文件名称
 * @param string $dest // 其中I 是预览 D是下载 F 生成后保存到服务器 S 返回字符串(此模式下$filename会被忽视)
 * @throws \Mpdf\MpdfException
 */
public function mPdf($html,$fileName='test',$dest="D")
{
    require_once APP_PATH . '/vendor/vendor/autoload.php';
    $mpdf = new \Mpdf\Mpdf();
    $mpdf->SetDisplayMode('fullpage');
    $mpdf->autoScriptToLang = true;
    $mpdf->autoLangToFont = true;

    // 水印设置
    //追加盖章图片,貌似可以获取远程的,非必要请使用服务器本地的,以前tcpdf就是无法获取远程的,mpdf未测试远程图片
    // $file = 'images/seal/150.png';
    // $mpdf->Image($file, 140, 200);
    // //文字水印
    // $mpdf->SetWatermarkText(‘xxx’,0.5);//参数一是文字,参数二是透明度
    // $mpdf->showWatermarkText = true;
    // $mpdf->SetWatermarkImage(图片路径,0.5);//参数一是图片的位置,参数二是透明度
    // $mpdf->showWatermarkImage = true;

    $mpdf->WriteHTML($html);
    $mpdf->Output($fileName.".pdf", $dest);
    // 输出pdf文件(必须写exit结束,否则会出现下载正常,预览全部乱码问题)
    exit();
}
 
?>

参考转载自:不想当小白 - mpdf使用踩坑总结,详情查看请转到原博主

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post