Laravel 结合TCPDF生成PDF

        $param = request()->all();
        //Log::info('输出变量:', ['$param' => $param]);
        $id = getter($param, "id", 0);
        if (!isset($id[0])  || empty($id[0])) {
            return message("请选择需要生成PDF文档的学生", false);
        }
        $sMode = new StudentModel();
        $sinfo= $sMode->getInfo($id[0]);
        Log::debug($sinfo);
        if($sinfo){
            $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
            //$pdf = new \TCPDF();
            // 设置文档信息
            $pdf->SetCreator('湖南匠领科技有限公司');
            $pdf->SetAuthor('湖南匠领科技有限公司');
            $pdf->SetTitle($sinfo['name']);
            $pdf->SetSubject('湖南匠领科技有限公司');
            $pdf->SetKeywords('湖南匠领科技有限公司');

            // 设置页眉和页脚信息
            $pdf->SetHeaderData('123', 30, 'www.bekingai.com', '湖南匠领科技有限公司', [0, 64, 255], [0, 64, 128]);
            $pdf->setFooterData([0, 64, 0], [0, 64, 128]);
            // 设置页眉和页脚字体
            $pdf->setHeaderFont(['stsongstdlight', '', '10']);
            $pdf->setFooterFont(['helvetica', '', '8']);
            // 设置默认等宽字体
            $pdf->SetDefaultMonospacedFont('courier');
            // 设置间距
            $pdf->SetMargins(15, 15, 0);//页面间隔
            $pdf->SetHeaderMargin(5);//页眉top间隔
            $pdf->SetFooterMargin(10);//页脚bottom间隔
            // 设置分页
            $pdf->SetAutoPageBreak(true, 25);
            // set default font subsetting mode
            $pdf->setFontSubsetting(true);

            //设置字体 stsongstdlight支持中文
            $pdf->SetFont('stsongstdlight', '', 14);

            //第一页 $sinfo["name"]
            $pdf->AddPage();

            $html = '
    <table width="90%" border="1"  cellpadding="15">

  <tr>
    <td colspan="2" height="220"></td>
    <td colspan="2"></td>
  </tr>
  <tr>
    <td width="25%">姓名</td>
    <td width="25%">'.$sinfo['name'].'</td>
    <td width="25%">性别</td>
    <td width="25%">'.$sinfo['gender_name'].'</td>
  </tr>
  <tr>
    <td>学号</td>
    <td>'.$sinfo['code'].'</td>
    <td>身份号码</td>
    <td>'.$sinfo['id_code'].'</td>
  </tr>
  <tr>
    <td>班级</td>
    <td>'.$sinfo['class_name'].'</td>
    <td>年级</td>
    <td>'.$sinfo['grade_name'].'</td>
  </tr>
  <tr>
    <td>出生日期</td>
    <td>'.$sinfo['birthday_out'].'</td>
    <td>有效状态</td>
    <td>'.$sinfo['status_name'].'</td>
  </tr>
    <tr>
    <td>联系电话</td>
    <td>'.$sinfo['telephone'].'</td>
    <td>结业状态</td>
    <td>'.$sinfo['finish_status'].'</td>
  </tr>
  <tr>
    <td>详细住址</td>
    <td colspan="3">'.$sinfo['address'].'</td>
  </tr>
  <tr>
    <td>备注</td>
    <td colspan="3">'.$sinfo['intro'].'</td>
  </tr>        
    </table>
';

            $pdf->writeHTML('<div style="text-align: center"><h1>'.$sinfo["name"].'</h1></div>');
            $pdf->writeHTML($html);
            //头像
            if($sinfo['avatar']){
                $pdf->SetXY(20, 50);
                $pdf->Image($sinfo['avatar'], '', '', 0, 0, '', '', '', false, 300, '', false, false, 0, false, false, false);
            }
            Log::debug('头像地址:'.$sinfo['avatar']);
            //二维码
            if($sinfo['logo']){
                $pdf->SetXY(110, 50);
                $pdf->Image($sinfo['logo'], '', '', 0, 0, '', '', '', false, 300, '', false, false, 0, false, false, false);
            }


            $pdf->Ln(1);//换行符
            $fileName = date('YmdHms').'.pdf';
            //输出PDF
            $pdf->Output(UPLOAD_TEMP_PATH . "/" .$fileName, 'F');//I输出、D下载、 F保存到服务器

            // 下载地址
            $fileUrl = get_image_url(str_replace(ATTACHMENT_PATH, "", UPLOAD_TEMP_PATH) . "/" . $fileName);
            Log::debug('下载地址:'.$fileUrl);
            return message(MESSAGE_OK, true, $fileUrl);
        }
        return message("操作失败", false);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 LaravelTCPDF生成 PDF 文件,可以先安装 `tecnickcom/tcpdf` 包,然后创建一个 PDF 类,实例化 TCPDF 对象,并添加表格到 PDF 中。 下面是一个生成 PDF 并添加表格的示例代码: ```php use TCPDF; class MyPDF extends TCPDF { public function generate($data) { // 设置 PDF 文档信息 $this->SetCreator(PDF_CREATOR); $this->SetAuthor('Author'); $this->SetTitle('Title'); $this->SetSubject('Subject'); $this->SetKeywords('TCPDF, PDF, example, test, guide'); // 设置页面信息 $this->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 'Title', 'Subtitle', [0, 64, 255], [0, 64, 128]); $this->setHeaderFont(['dejavusans', '', PDF_FONT_SIZE_MAIN]); $this->setFooterFont(['dejavusans', '', PDF_FONT_SIZE_DATA]); $this->setPrintFooter(false); // 设置字体 $this->SetFont('helvetica', 'B', 20); // 添加一页 PDF 文档 $this->AddPage(); // 设置表格标题 $this->Cell(0, 10, 'Table Title', 0, 1); // 定义表格列宽 $col_width = $this->getPageWidth() / count($data[0]); // 添加表格内容 foreach($data as $row) { foreach($row as $cell) { // 添加表格单元格 $this->Cell($col_width, 10, $cell, 1); } $this->Ln(); } } } ``` 在上面的代码中,我们定义了一个 `MyPDF` 类,其中 `generate()` 方法用于生成 PDF 文件并添加表格。在 `generate()` 方法中,我们使用 `TCPDF` 类的方法来设置 PDF 文档信息、页面信息、字体、页眉和页脚等。 接下来,我们使用 `AddPage()` 方法添加一页 PDF 文档,并使用 `Cell()` 方法添加表格标题和表格内容。在添加表格内容时,我们使用 `foreach()` 循环遍历数据,使用 `Cell()` 方法添加表格单元格,并使用 `Ln()` 方法添加换行符。 最后,我们可以在 Laravel 控制器中使用 `MyPDF` 类生成 PDF 文件并输出到浏览器: ```php use App\MyPDF; use Illuminate\Http\Request; class PDFController extends Controller { public function generate(Request $request) { // 获取数据 $data = $request->input('data'); // 创建 PDF 文件 $pdf = new MyPDF(); $pdf->generate($data); // 输出 PDF 文件到浏览器 $pdf->Output('example.pdf', 'I'); } } ``` 在上面的代码中,我们首先从请求中获取数据,然后实例化 `MyPDF` 类,并调用 `generate()` 方法生成 PDF 文件。最后,我们使用 `Output()` 方法将 PDF 文件输出到浏览器,用户可以选择下载或查看该文件。 这就是使用 LaravelTCPDF生成 PDF 文件并添加表格的基本步骤。你可以根据自己的需求调整和扩展代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值