ThinkPHP5/PHP 使用TCPDF 生成PDF文件
由于公司业务需求,需要生成PDF文件。
网上找了一些解决方案,很多是使用composer插件解决问题的。由于同事的顾虑,建议。把网上找的TCPDF插件包,当作第三方组件来使用,放在extend 扩展文件夹中。
确认tcpdf 会用到的文件,都加上命名空间 namespace com\tcpdf\methods; 不然会找不到对应的类文件
(说明:我把library 文件夹改名成methods,因为引入上述方法类的时候关键词冲突。文件中使用一些配置常量的,需要引入配置文件)
这个控制文件也需要使用命名空间 namespace com\tcpdf;
//引入插件包中的方法类
use com\tcpdf\methods\tcpdf_font_data;
use com\tcpdf\methods\tcpdf_fonts;
use com\tcpdf\methods\tcpdf_colors;
use com\tcpdf\methods\tcpdf_images;
use com\tcpdf\methods\tcpdf_static;
//引入配置文件(我写的是model类,所以引入文件有点差异)
Config::load(EXTEND_PATH.'com/tcpdf/config/tcpdf_config.php');
Config::load(EXTEND_PATH.'com/tcpdf/tcpdf_autoconfig.php');
//初始化TCPDF类
$tcpdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);
//设置作者,标题,文件属性
$tcpdf->SetCreator('CREATOR');
$tcpdf->SetAuthor('zeng94731');
$tcpdf->SetTitle('TITLE');
$tcpdf->SetSubject('SUBJECT');
$tcpdf->SetKeywords('PDF, TCPDF');
// 设置页眉和页脚信息
$tcpdf->setHeaderData('', 30, 'zeng94731', 'zeng94731的博客', array(0,64,255), array(0,64,128));
$tcpdf->setFooterData(array(0,64,0), array(0,64,128));
// 设置页眉和页脚字体
$tcpdf->setHeaderFont(Array('stsongstdlight', '', '10'));
$tcpdf->setFooterFont(Array('helvetica', '', '8'));
//设置文档对齐,间距,字体,图片
$tcpdf->SetCreator(PDF_CREATOR);
$tcpdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$tcpdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
//设置页眉页脚 边距
$tcpdf->setHeaderMargin(PDF_MARGIN_HEADER);
$tcpdf->setFooterMargin(PDF_MARGIN_FOOTER);
//自动分页
$tcpdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$tcpdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$tcpdf->setFontSubsetting(true);
$tcpdf->setPageMark();
//设置正文字体,大小 (stsongstdlight,网上说这个字体支持的文字更全,支持中文不乱码)
$tcpdf->SetFont('stsongstdlight', '', 10);
//创建页面,渲染PDF
$tcpdf->AddPage();
$html = '<h1>test</h1>';
$tcpdf->writeHTML($html, true, false, true, true, '');
$tcpdf->lastPage();
//PDF输出 I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
$tcpdf->Output($filePath,'D');