ASCII码 ASCII码

PHP生成PDF

发布于:2022-07-04 10:30:32  栏目:技术文档

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

一、PHP使用TCPDF生成PDF文件

首先通过composer安装TCPDF

安装命令:
composerrequiretecnickcom/tcpdf

使用TCPDF

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

functionpdf($html='<h1style="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('TCPDFExample001');
$pdf->SetSubject('TCPDFTutorial');
$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安装

composerrequirempdf/mpdf

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

<?php

/**
*@param$html//HTML内容
*@paramstring$fileName文件名称
*@paramstring$dest//其中I是预览D是下载F生成后保存到服务器S返回字符串(此模式下$filename会被忽视)
*@throws\Mpdf\MpdfException
*/
publicfunctionmPdf($html,$fileName='test',$dest="D")
{
require_onceAPP_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使用踩坑总结,详情查看请转到原博主

相关推荐
阅读 +