当前位置:Gxlcms > PHP教程 > thinkphp如何轻松实现pdf的导出(利用tcpdf插件)

thinkphp如何轻松实现pdf的导出(利用tcpdf插件)

时间:2021-07-01 10:21:17 帮助过:42人阅读

本篇文章主要讲述的是thinkphp轻松实现pdf导出的方法代码,具有一定的参考价值,感兴趣的朋友可以了解一下,希望能对你有所帮助。

代码编写前先引入tcpdf整个文件夹到项目目录的ThinkPHP文件夹下 如:/ThinkPHP/Library/Vendor/tcpdf

其他的不多说直接上代码

导出考试结果明细

  1. public function export()
  2. {
  3.     // 导出考试结果明细(PDF)
  4. $id = I('id');
  5. $detailed = D('member_test_result');
  6. $parameter = $detailed->detailedResults($id);
  7. $name = $parameter['member_name'];
  8. $result = json_decode($parameter['test_result_str']);
  9. foreach ($result as $k => $v) {
  10. $test = M('test_cont');
  11. $array['question_title'] = $test->where('id=' . $k)->getField('qustion_title');
  12. //正确选项
  13. $array['state'] = $test->where('id=' . $k)->getField('state');
  14. //正确答案
  15. $wheres['test_id'] = $k;
  16. $wheres['state'] = $array['state'];
  17. $array['stateresult'] = M('test_answer')->where($wheres)->getField('answer_name');
  18. //选项
  19. $array['cont'] = $v;
  20. //选项内容
  21. $where['test_id'] = $k;
  22. $where['state'] = $array['cont'];
  23. $array['result'] = M('test_answer')->where($where)->getField('answer_name');
  24. $data[] = $array;
  25. }
  26. $content = '<!doctype html>';
  27. $content .= '<html lang="en">';
  28. $content .= '<head>';
  29. $content .= '<meta charset="UTF-8" />';
  30. $content .= '<title>考试结果</title>';
  31. $content .= '</head>';
  32. $content .= '<body>';
  33. $content .= '<p class="content">';
  34. $content .= '<p align="center" style="color: #0a6ebd;font-size: 24px"><b>考试结果</b></p>';
  35. $content .= ' <p style="color:#6a6a6a;letter-spacing:4px">';
  36. $content .= '<p><span>姓名:';
  37. $content .= $name;
  38. $content .= '</span>';
  39. $content .= '<span style="color:#fff;">1231';
  40. $content .= '</span>';
  41. $content .= '<span style="" >考试用时:';
  42. $content .= gmdate("i:s", $parameter['time_cost']);
  43. $content .= '</span>';
  44. $content .= '<span style="color:#fff;">1231';
  45. $content .= '</span>';
  46. $content .= '<span style="">考试分数:';
  47. $content .= $parameter['score'];
  48. $content .= '</span>';
  49. $content .= '<hr/>';
  50. foreach ($data as $k => $v) {
  51. $content .= '<p style=font-size: 20px><b>';
  52. $content .= $k + 1;
  53. $content .= '、</b>';
  54. $content .= $v['question_title'];
  55. $content .= '</p>';
  56. $content .= '<p style=" font-size: 14px">您的选项为:<span style="color:#0a6ebd;">';
  57. $content .= $v['cont'];
  58. $content .= '</span></p>';
  59. $content .= '<p style=" font-size: 14px">您的答案为:<span style="color:#0a6ebd;">';
  60. $content .= $v['result'];
  61. $content .= '</span></p>';
  62. $content .= '<p style=" font-size: 14px">正确选项为:<span style="color:red;">';
  63. $content .= $v['state'];
  64. $content .= '</span></p>';
  65. $content .= '<p style=" font-size: 14px">正确答案为:<span style="color:red;">';
  66. $content .= $v['stateresult'];
  67. $content .= '</span></p>';
  68. };
  69. $content .= '</p>';
  70. $content .= '</body>';
  71. $content .= '</html>';
  72. pdf($content);
  73. }

pdf方法

  1. function pdf($html){
  2. vendor('Tcpdf.tcpdf');
  3. $pdf = new \Tcpdf('P', 'mm', 'A4', true, 'UTF-8', false);
  4. // 设置打印模式,设置文档信息
  5. $pdf->SetCreator(PDF_CREATOR);
  6. $pdf->SetAuthor('Nicola Asuni');
  7. $pdf->SetTitle('Examination result(考试结果)');
  8. $pdf->SetSubject('TCPDF Tutorial');
  9. $pdf->SetKeywords('TCPDF, PDF, PHP, example, test, guide');
  10. // 是否显示页眉和是否显示页脚
  11. $pdf->setPrintHeader(false);
  12. $pdf->setPrintFooter(true);
  13. // 设置页眉和页脚信息内容
  14. $pdf->SetHeaderData('logo.jpg', 40, 'Helloweba.com', '小白测试', array(0,64,255), array(0,64,128));
  15. $pdf->setFooterData(array(0,64,0), array(0,64,128));
  16. // 设置页眉和页脚字体
  17. $pdf->setHeaderFont(Array('dejavusans', '', '12'));
  18. $pdf->setFooterFont(Array('dejavusans', '', '10'));
  19. // 设置间距
  20. $pdf->SetHeaderMargin('5');
  21. $pdf->SetFooterMargin('10');
  22. // 设置左、上、右的间距
  23. $pdf->SetMargins('10', '10', '10');
  24. // 设置是否自动分页 距离底部多少距离时分页
  25. $pdf->SetAutoPageBreak(TRUE, '15');
  26. // 设置默认等宽字体
  27. $pdf->SetDefaultMonospacedFont('courier');
  28. // 设置行高
  29. $pdf->setCellHeightRatio(1);
  30. // 设置图像比例因子
  31. $pdf->setImageScale(1.25);
  32. //设置默认字体子集模式
  33. $pdf->setFontSubsetting(true);
  34. // 设置字体
  35. $pdf->SetFont('stsongstdlight', '', 14, '', true);
  36. $pdf->AddPage();
  37. $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
  38.   //PDF输出 I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
  39.   $pdf->Output(rand_string('9').'.pdf', 'I');
  40.   }

相关教程:PHP视频教程

以上就是thinkphp如何轻松实现pdf的导出(利用tcpdf插件)的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行