1,引入TCPDF:
在tcpdf官网下载整包
或在官网git地址里拉取composer安装。(tcpdf的composer也是找的好苦)
2,整包文件里有examples 例子文件夹 和 fonts 按需使用删除
3,tp5 vendor 文件夹下面建立文件夹Tcpdf
4,导入tcpdf
5,在TP里找到自己需要调用的地方,贴上代码~
//Define
$realname = $userInfo['real_name'];//作者名称
$title = $request->param('title');//标题
$content = $request->param('content');//内容
$content = htmlspecialchars($content);
$domain = $request->domain();//当前域名
$FontStyle = 'stsongstdlight';//字体
//引入扩展
vendor('Tcpdf.tcpdf');
//初始化tcpdf className = Tcpdf
$pdf = new \Tcpdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
//设置作者,标题,文件属性
$pdf->SetCreator($domain);//创建者:默认域名
$pdf->SetAuthor($realname);//作者:用户名
$pdf->SetTitle($title);//文件标题
$pdf->SetSubject($domain.'/KNOW');//文件主题
$pdf->SetKeywords('PDF');//文件关键字
// 是否显示页眉
$pdf->setPrintHeader(true);
// 设置页眉和页脚信息
$pdf->setHeaderData('', 30, $title, $realname.'-'.$title, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));
// 设置页眉和页脚字体
$pdf->setHeaderFont(Array($FontStyle, '', '10'));
$pdf->setFooterFont(Array($FontStyle, '', '8'));
//设置文档对齐,间距,字体,图片
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
//设置页眉页脚 边距
$pdf->setHeaderMargin(PDF_MARGIN_HEADER);
$pdf->setFooterMargin(PDF_MARGIN_FOOTER);
//自动分页
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(true);
//设置正文字体,大小 (stsongstdlight,网上说这个字体支持的文字更全,支持中文不乱码)
$pdf->SetFont($FontStyle, '', 10);
//创建页面,渲染PDF
$pdf->AddPage();
$pdf->writeHTML($content, true, false, true, true, '');
//文件保存
$savePath = ROOT_PATH .'public'.DS.'upload'.DS.'know'.DS.date('Ymd');
if(!is_dir($savePath)) mkdir($savePath,0777,true);
$saveName = md5(time()).'.pdf';
$savePath .=DS.$saveName;
//PDF输出模式 I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
$pdf->Output($savePath,'F');
//判断是否保存成功
if(!file_exists($savePath)) return api_return(201,'保存失败,文本转码失败');
//Mysql 保存
$insert = [
'userId'=>$this->account,
'name'=>$title,
// /upload\pdf\20190708\21e526c3d014a174d8a6d9cb48a5c572.pdf
'link'=> DS.'upload'.DS.'know'.DS.date('Ymd').DS.$saveName,
'create_time'=>time(),
'file_type'=>'pdf'
];
Db::startTrans();
try{
Db::name('knowledge')->insert($insert);
Db::commit();
$r = true;
}catch (\Exception $e){
Db::rollback();
$r = false;
}
if($r)
{
return api_return(200,'操作成功');
}else{
return api_return(201,'操作失败');
}