大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Thinkphp框架引用tcpdf
一:引入tcpdf整个文件夹到项目如下目录
/ThinkPHP/Library/Vendor/tcpdf
tcpdf v6.2.12版本百度网盘下载链接:http://pan.baidu.com/s/1kVhrQoJ 密码:bfh4
二:简单的使用
在模块common路径下的function.php中添加方法
/** * @param $url 获取页面的url * @param $fileName 文件名 * @param $type 类型,有下载,浏览器中打开等 */ function downloadPdf($url, $fileName, $type) { //1.获取html $html = file_get_contents($url); // dump($html); vendor('tcpdf.tcpdf'); $pdf = new \Tcpdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // 设置打印模式 $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Libin'); $pdf->SetTitle('TCPDF Example 001'); $pdf->SetSubject('TCPDF Tutorial'); $pdf->SetKeywords('TCPDF, PDF, example, test'); // 是否显示页眉 $pdf->setPrintHeader(false); // 设置页眉显示的内容 $pdf->SetHeaderData('logo.png', 60, 'baijunyao.com', '文嘉博客', 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', '', 14, '', true); $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); $pdf->Output($fileName, $type); }
在控制器方法中调用
public function downloadPdf() { $uri = '?m=Home&c=Index&a=show'; $url='http://'.$_SERVER['SERVER_NAME'].$uri; $url = 'http://tcpdf.demo.com/index.php?m=Home&c=Index&a=show'; downloadPdf($url, 'demo1.pdf', 'I'); }
转换为PDF的页面是uri中show方法对应的方法,添加一个显示出模板
测试:http://tcpdf.demo.com/index.php?m=Home&c=Index&a=downloadPdf
三:关于下载PDF时,插件把中文文件名屏蔽了的解决方法
这个看tcpdf对象的Output方法就看到:
看这一小段我们我们就知道dest这个参数要怎么操作了
//Normalize parameters if (is_bool($dest)) { $dest = $dest ? 'D' : 'F'; } $dest = strtoupper($dest); if ($dest[0] != 'F') { $name = preg_replace('/[\s]+/', '_', $name); $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name); }
我的方法是在方法中添加一条参数,为了不改变原始方法参数,我添加第三个参数,并设置默认值(support Chinase name)public function Output($name='doc.pdf', $dest='I', $scn='false'),然后修改代码套个判断,方法中不填第三个参数不影响原来的代码$dest = strtoupper($dest); if(!$scn) { if ($dest[0] != 'F') { $name = preg_replace('/[\s]+/', '_', $name); $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name); } }调用方法时候
$pdf->Output($fileName, $type, true);测试OK
四:把tcpdf中的插件引入到项目中,学习一下,一共有65个例子。
Demo案例百度云
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195947.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...