小编给大家分享一下thinkphp实现pdf导出的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
代码编写前先引入tcpdf整个文件夹到项目目录的ThinkPHP文件夹下 如:/ThinkPHP/Library/Vendor/tcpdf
其他的不多说直接上代码
导出考试结果明细
public function export()
{
// 导出考试结果明细(PDF)
$id = I('id');
$detailed = D('member_test_result');
$parameter = $detailed->detailedResults($id);
$name = $parameter['member_name'];
$result = json_decode($parameter['test_result_str']);
foreach ($result as $k => $v) {
$test = M('test_cont');
$array['question_title'] = $test->where('id=' . $k)->getField('qustion_title');
//正确选项
$array['state'] = $test->where('id=' . $k)->getField('state');
//正确答案
$wheres['test_id'] = $k;
$wheres['state'] = $array['state'];
$array['stateresult'] = M('test_answer')->where($wheres)->getField('answer_name');
//选项
$array['cont'] = $v;
//选项内容
$where['test_id'] = $k;
$where['state'] = $array['cont'];
$array['result'] = M('test_answer')->where($where)->getField('answer_name');
$data[] = $array;
}
$content = '<!doctype html>';
$content .= '<html lang="en">';
$content .= '<head>';
$content .= '<meta charset="UTF-8" />';
$content .= '<title>考试结果</title>';
$content .= '</head>';
$content .= '<body>';
$content .= '<p class="content">';
$content .= '<p align="center" style="color: #0a6ebd;font-size: 24px"><b>考试结果</b></p>';
$content .= ' <p style="color:#6a6a6a;letter-spacing:4px">';
$content .= '<p><span>姓名:';
$content .= $name;
$content .= '</span>';
$content .= '<span style="color:#fff;">1231';
$content .= '</span>';
$content .= '<span style="" >考试用时:';
$content .= gmdate("i:s", $parameter['time_cost']);
$content .= '</span>';
$content .= '<span style="color:#fff;">1231';
$content .= '</span>';
$content .= '<span style="">考试分数:';
$content .= $parameter['score'];
$content .= '</span>';
$content .= '<hr/>';
foreach ($data as $k => $v) {
$content .= '<p style=font-size: 20px><b>';
$content .= $k + 1;
$content .= '、</b>';
$content .= $v['question_title'];
$content .= '</p>';
$content .= '<p style=" font-size: 14px">您的选项为:<span style="color:#0a6ebd;">';
$content .= $v['cont'];
$content .= '</span></p>';
$content .= '<p style=" font-size: 14px">您的答案为:<span style="color:#0a6ebd;">';
$content .= $v['result'];
$content .= '</span></p>';
$content .= '<p style=" font-size: 14px">正确选项为:<span style="color:red;">';
$content .= $v['state'];
$content .= '</span></p>';
$content .= '<p style=" font-size: 14px">正确答案为:<span style="color:red;">';
$content .= $v['stateresult'];
$content .= '</span></p>';
};
$content .= '</p>';
$content .= '</body>';
$content .= '</html>';
pdf($content);
}
pdf方法
function pdf($html){
vendor('Tcpdf.tcpdf');
$pdf = new \Tcpdf('P', 'mm', 'A4', true, 'UTF-8', false);
// 设置打印模式,设置文档信息
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('Examination result(考试结果)');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, PHP, example, test, guide');
// 是否显示页眉和是否显示页脚
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(true);
// 设置页眉和页脚信息内容
$pdf->SetHeaderData('logo.jpg', 40, 'Helloweba.com', '小白测试', array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));
// 设置页眉和页脚字体
$pdf->setHeaderFont(Array('dejavusans', '', '12'));
$pdf->setFooterFont(Array('dejavusans', '', '10'));
// 设置间距
$pdf->SetHeaderMargin('5');
$pdf->SetFooterMargin('10');
// 设置左、上、右的间距
$pdf->SetMargins('10', '10', '10');
// 设置是否自动分页 距离底部多少距离时分页
$pdf->SetAutoPageBreak(TRUE, '15');
// 设置默认等宽字体
$pdf->SetDefaultMonospacedFont('courier');
// 设置行高
$pdf->setCellHeightRatio(1);
// 设置图像比例因子
$pdf->setImageScale(1.25);
//设置默认字体子集模式
$pdf->setFontSubsetting(true);
// 设置字体
$pdf->SetFont('stsongstdlight', '', 14, '', true);
$pdf->AddPage();
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
//PDF输出 I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
$pdf->Output(rand_string('9').'.pdf', 'I');
}
看完了这篇文章,相信你对thinkphp实现pdf导出的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。