• thinkphp-PHP实现pdf导出功能


    Thinkphp框架引用tcpdf插件,插件下载地址:待续。。。

    代码编写前先引入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 .= '<div class="content">';
    $content .= '<p align="center" style="color: #0a6ebd;font-size: 24px"><b>考试结果</b></p>';
    $content .= ' <div 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 .= '</div>';
    $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');
    }
  • 相关阅读:
    【C++服务端技术】消息队列
    【C++服务端技术】智能锁
    【C++服务端技术】队列
    【C++服务端技术】对象池
    【面试攻略】C++面试-边锋
    【面试攻略】C++面试-成都星合互娱
    【面试攻略】C++面试-紫龙游戏
    服务器IO-HPSocket
    【面试攻略】C++面试-沐瞳游戏
    【面试攻略】C++面试-点点互动
  • 原文地址:https://www.cnblogs.com/luzt/p/9390672.html
Copyright © 2020-2023  润新知