html转pdf(php)

一.需求

最近接到一个需求,该需求为:批量导出推荐表导出需为PDF格式,且只能有2页。

二.实现

1.曲折的过程

​ 1)百度、谷歌搜了许多相关的材料,发现对php中html转pdf的资料非常少。但是啦,黄天不符有心人,最终还是找的了一份勉强看得懂的。(链接:https://www.cnblogs.com/zx-admin/p/6801978.html

​ 2)将TCPDF代码下载到本地

​ [图片上传失败…(image-63bb22-1604636933694)]
.png)

​ 3)使用examples的例子(我这里使用的是第一个例子)
image-20201028162349855.png

4)根据导出模板写了一个html文件,代码和效果如下

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<style>
    table {
        text-align: left;
        margin: 0 auto;
        border: 1px solid #000000;
        font-weight: 700;
    }
    .td-height {
        height: 70px;
        font-weight: 700;
    }
    .title {
        text-align: center;
    }
    .title .tjb {
        font-size: 30px;
    }
</style>
<div class="title">
    <img src="http://www.nucibc2.dev.com/Public/data/src/tjb_top.png" width="200">
    <span class="tjb">111届毕业生就业推荐表</span>
</div>
<table class="top">
    <tbody>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">姓名</td>
        <td class="td-height" style="border: 1px solid #000000">
            田*
        </td>
        <td class="td-height" style="border: 1px solid #000000">性别</td>
        <td class="td-height" style="border: 1px solid #000000"></td>
        <td class="td-height" style="border: 1px solid #000000">民族</td>
        <td class="td-height" style="border: 1px solid #000000"></td>
        <td rowspan="3" colspan="2" cellpadding="0" style="border: 1px solid #000000" height="230">
            <img src="http://www.nucibc2.dev.com/Public/data/tjb/5eb8f24808179.jpg" style=" width:166px;height: 230px;margin: 0;
            " alt="">
        </td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">专业</td>
        <td class="td-height" style="border: 1px solid #000000">网络技术</td>
        <td class="td-height" style="border: 1px solid #000000">学历</td>
        <td class="td-height" style="border: 1px solid #000000"> 大专</td>
        <td class="td-height" style="border: 1px solid #000000">学制</td>
        <td class="td-height" style="border: 1px solid #000000">3</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">出生<br/>日期</td>
        <td class="td-height" style="border: 1px solid #000000">1996***</td>
        <td class="td-height" style="border: 1px solid #000000">健康<br/>状况</td>
        <td class="td-height" style="border: 1px solid #000000">良好</td>
        <td class="td-height" style="border: 1px solid #000000">身高</td>
        <td class="td-height" style="border: 1px solid #000000">170</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">身份证<br/>号码</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">513433</td>
        <td class="td-height" style="border: 1px solid #000000">籍贯</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">
            四川冕宁
        </td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">计算机<br/>等级</td>
        <td class="td-height" style="border: 1px solid #000000">二级</td>
        <td class="td-height" style="border: 1px solid #000000">外语<br/>等级</td>
        <td class="td-height" style="border: 1px solid #000000">4</td>
        <td class="td-height" style="border: 1px solid #000000">邮箱</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">251@qq.com</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">本人<br/>电话</td>
        <td class="td-height" style="border: 1px solid #000000">151</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">家庭<br/>电话</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">191</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">家庭<br/>住址</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">四川</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">在校担<br/>任职务</td>
        <td colspan="3" style="border: 1px solid #000000">测试职位</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">特长</td>
        <td colspan="3" style="border: 1px solid #000000"></td>
    </tr>
    <tr>
        <td style="border: 1px solid #000000"><br/><br/><br/></td>
        <td colspan="7" style="height:320px;border: 1px solid #000000"><p>自我总结111</p></td>
    </tr>
    <tr>
        <td style="border: 1px solid #000000"><br/><br/><br/><br/><br/><br/><br/></td>
        <td colspan="7" style="height: 320px;border: 1px solid #000000"><p>获奖</p></td>
    </tr>
    <tr>
        <td style="border: 1px solid #000000" rowspan="2"><br/><br/><br/><br/><br/><br/><br/></td>
        <td colspan="7" style="height: 300px;">
            <p>在校基本情况111</p>
        </td>
    </tr>
    <tr>
        <td colspan="8">
            <span style="width: 100%;">班主任签字:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>
        </td>
    </tr>
    <tr>
        <td style="height: 50px;border: 1px solid #000000;" colspan="4">系 部 推 荐 意 见</td>
        <td style="height: 50px;border: 1px solid #000000;" colspan="4"><p>学 院 推 荐 意 见</p></td>
    </tr>
    <tr>
        <td style="height: 200px;border: 1px solid #000000;" colspan="4">
            <div style="height: 150px;text-align: right;">
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
            </div>
        </td>
        <td style="height: 200px;border: 1px solid #000000;" colspan="4">
            <div style="height: 150px;text-align: right;">
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
            </div>
        </td>
    </tr>
    </tbody>
</table>

</body>
</html>

image-20201028163736175.png

5)根据这个html,将example_001.php的得代码进行更改(不用它定义的常量),代码和效果如下:

<?php

require_once('../tcpdf.php');

$pdf = new \TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetCreator('TCPDF');
$pdf->setPrintFooter(false);
$pdf->setPrintHeader(false);
$pdf->SetDefaultMonospacedFont('courier');
$pdf->SetDefaultMonospacedFont('courier');
$pdf->SetMargins(15, 15, 15);
$pdf->SetHeaderMargin(0);
$pdf->SetFooterMargin(0);
$pdf->SetAutoPageBreak(true, 25);
$pdf->setImageScale(1.25);
$pdf->setFontSubsetting(false);
$pdf->SetFont('stsongstdlight', '', 10);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled' => false, 'depth_w' => 0.2, 'depth_h' => 0.2, 'color' => array(196, 196, 196), 'opacity' => 1, 'blend_mode' => 'Normal'));
$html = '<style>
    table {
        text-align: left;
        margin: 0 auto;
        border: 1px solid #000000;
        font-weight: 700;
    }
    .td-height {
        height: 70px;
        font-weight: 700;
    }
    .title {
        text-align: center;
    }
    .title .tjb {
        font-size: 30px;
    }
</style>
<div class="title">
    <img src="" width="200">
    <span class="tjb">111届毕业生就业推荐表</span>
</div>
<table class="top">
    <tbody>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">姓名</td>
        <td class="td-height" style="border: 1px solid #000000">
            田*
        </td>
        <td class="td-height" style="border: 1px solid #000000">性别</td>
        <td class="td-height" style="border: 1px solid #000000">男</td>
        <td class="td-height" style="border: 1px solid #000000">民族</td>
        <td class="td-height" style="border: 1px solid #000000">
            汉
        </td>
        <td rowspan="3" colspan="2" cellpadding="0" style="border: 1px solid #000000" height="230">
            <img src="http://www.nucibc2.dev.com/Public/data/tjb/5eb8f24808179.jpg" style=" width:166px;height: 230px;margin: 0;
            " alt="">
        </td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">专业</td>
        <td class="td-height" style="border: 1px solid #000000">网络技术</td>
        <td class="td-height" style="border: 1px solid #000000">学历</td>
        <td class="td-height" style="border: 1px solid #000000"> 大专</td>
        <td class="td-height" style="border: 1px solid #000000">学制</td>
        <td class="td-height" style="border: 1px solid #000000">3</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">出生<br/>日期</td>
        <td class="td-height" style="border: 1px solid #000000">1996.6</td>
        <td class="td-height" style="border: 1px solid #000000">健康<br/>状况</td>
        <td class="td-height" style="border: 1px solid #000000">良好</td>
        <td class="td-height" style="border: 1px solid #000000">身高</td>
        <td class="td-height" style="border: 1px solid #000000">170</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">身份证<br/>号码</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">513433</td>
        <td class="td-height" style="border: 1px solid #000000">籍贯</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">
            四川
        </td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">计算机<br/>等级</td>
        <td class="td-height" style="border: 1px solid #000000">二级</td>
        <td class="td-height" style="border: 1px solid #000000">外语<br/>等级</td>
        <td class="td-height" style="border: 1px solid #000000">4</td>
        <td class="td-height" style="border: 1px solid #000000">邮箱</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">251122@qq.com</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">本人<br/>电话</td>
        <td class="td-height" style="border: 1px solid #000000">151</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">家庭<br/>电话</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">191</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">家庭<br/>住址</td>
        <td class="td-height" colspan="3" style="border: 1px solid #000000">四川</td>
    </tr>
    <tr>
        <td class="td-height" style="border: 1px solid #000000">在校担<br/>任职务</td>
        <td colspan="3" style="border: 1px solid #000000">测试职位</td>
        <td class="td-height" colspan="" style="border: 1px solid #000000">特长</td>
        <td colspan="3" style="border: 1px solid #000000"></td>
    </tr>
    <tr>
        <td style="border: 1px solid #000000">自<br/>我<br/>总<br/>结</td>
        <td colspan="7" style="height:320px;border: 1px solid #000000"><p>自我总结111</p></td>
    </tr>
    <tr>
        <td style="border: 1px solid #000000">在<br/>校<br/>期<br/>间<br/>获<br/>奖<br/>情<br/>况</td>
        <td colspan="7" style="height: 320px;border: 1px solid #000000"><p>获奖</p></td>
    </tr>
    <tr>
        <td style="border: 1px solid #000000" rowspan="2">学<br/>生<br/>在<br/>校<br/>表<br/>现<br/>情<br/>况</td>
        <td colspan="7" style="height: 300px;">
            <p>在校基本情况111</p>
        </td>
    </tr>
    <tr>
        <td colspan="8">
            <span style="width: 100%;">班主任签字:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日</span></span>
        </td>
    </tr>
    <tr>
        <td style="height: 50px;border: 1px solid #000000;" colspan="4">系 部 推 荐 意 见</td>
        <td style="height: 50px;border: 1px solid #000000;" colspan="4"><p>学 院 推 荐 意 见</p></td>
    </tr>
    <tr>
        <td style="height: 200px;border: 1px solid #000000;" colspan="4">
            <div style="height: 150px;text-align: right;">
                <p>签&nbsp;&nbsp;&nbsp;&nbsp;章&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
                <p>年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日</p>
            </div>
        </td>
        <td style="height: 200px;border: 1px solid #000000;" colspan="4">
            <div style="height: 150px;text-align: right;">
                <p>签&nbsp;&nbsp;&nbsp;&nbsp;章&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
                <p>年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日</p>
            </div>
        </td>
    </tr>
    </tbody>
</table>
';
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 0, 0, false, 'center', true);
$res = $pdf->Output('example_065.pdf', 'S');
file_put_contents('./bb.pdf', $res);

效果:

image-20201106115157307.png

6)把生成的效果给领导

2.领导过目

1)把html模板给我发一份,给了,不知道他通过什么生成了pdf文档。

2)然后给我发了一份生成的pdf文件,说跟你发给我的不一样,我说就是通过这个模板生成的呀。

3)我估计领导百度看了一下(他是懂技术的哦),发现php通过html生成pdf的教程非常少。

4)最后说,不用改了,测一下原来的(说明一下,原来的是通过word模板生成word文件)。

3.结论

以后如果有领导让你生成pdf文件(技术栈:php),你可以婉转的拒绝。

最后希望我的博客能帮助到大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值