一.需求
最近接到一個(gè)需求,該需求為:批量導(dǎo)出推薦表導(dǎo)出需為PDF格式,且只能有2頁(yè)。
二.實(shí)現(xiàn)
1.曲折的過程
? 1)百度、谷歌搜了許多相關(guān)的材料,發(fā)現(xiàn)對(duì)php中html轉(zhuǎn)pdf的資料非常少。但是啦,黃天不符有心人,最終還是找的了一份勉強(qiáng)看得懂的。(鏈接:https://www.cnblogs.com/zx-admin/p/6801978.html)
? 2)將TCPDF代碼下載到本地
? [圖片上傳失敗...(image-63bb22-1604636933694)]
.png)
? 3)使用examples的例子(我這里使用的是第一個(gè)例子)

image-20201028162349855.png
4)根據(jù)導(dǎo)出模板寫了一個(gè)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屆畢業(yè)生就業(yè)推薦表</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">專業(yè)</td>
<td class="td-height" style="border: 1px solid #000000">網(wǎng)絡(luò)技術(shù)</td>
<td class="td-height" style="border: 1px solid #000000">學(xué)歷</td>
<td class="td-height" style="border: 1px solid #000000"> 大專</td>
<td class="td-height" style="border: 1px solid #000000">學(xué)制</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/>號(hào)碼</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">計(jì)算機(jī)<br/>等級(jí)</td>
<td class="td-height" style="border: 1px solid #000000">二級(jí)</td>
<td class="td-height" style="border: 1px solid #000000">外語(yǔ)<br/>等級(jí)</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">在校擔(dān)<br/>任職務(wù)</td>
<td colspan="3" style="border: 1px solid #000000">測(cè)試職位</td>
<td class="td-height" colspan="" style="border: 1px solid #000000">特長(zhǎng)</td>
<td colspan="3" style="border: 1px solid #000000"></td>
</tr>
<tr>
<td style="border: 1px solid #000000">自<br/>我<br/>總<br/>結(jié)</td>
<td colspan="7" style="height:320px;border: 1px solid #000000"><p>自我總結(jié)111</p></td>
</tr>
<tr>
<td style="border: 1px solid #000000">在<br/>校<br/>期<br/>間<br/>獲<br/>獎(jiǎng)<br/>情<br/>況</td>
<td colspan="7" style="height: 320px;border: 1px solid #000000"><p>獲獎(jiǎng)</p></td>
</tr>
<tr>
<td style="border: 1px solid #000000" rowspan="2">學(xué)<br/>生<br/>在<br/>校<br/>表<br/>現(xiàn)<br/>情<br/>況</td>
<td colspan="7" style="height: 300px;">
<p>在?;厩闆r111</p>
</td>
</tr>
<tr>
<td colspan="8">
<span style="width: 100%;">班主任簽字: <span> 年 月 日</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>學(xué) 院 推 薦 意 見</p></td>
</tr>
<tr>
<td style="height: 200px;border: 1px solid #000000;" colspan="4">
<div style="height: 150px;text-align: right;">
<p>簽 章 </p>
<p>年 月 日</p>
</div>
</td>
<td style="height: 200px;border: 1px solid #000000;" colspan="4">
<div style="height: 150px;text-align: right;">
<p>簽 章 </p>
<p>年 月 日</p>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

image-20201028163736175.png
5)根據(jù)這個(gè)html,將example_001.php的得代碼進(jìn)行更改(不用它定義的常量),代碼和效果如下:
<?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屆畢業(yè)生就業(yè)推薦表</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">專業(yè)</td>
<td class="td-height" style="border: 1px solid #000000">網(wǎng)絡(luò)技術(shù)</td>
<td class="td-height" style="border: 1px solid #000000">學(xué)歷</td>
<td class="td-height" style="border: 1px solid #000000"> 大專</td>
<td class="td-height" style="border: 1px solid #000000">學(xué)制</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/>號(hào)碼</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">計(jì)算機(jī)<br/>等級(jí)</td>
<td class="td-height" style="border: 1px solid #000000">二級(jí)</td>
<td class="td-height" style="border: 1px solid #000000">外語(yǔ)<br/>等級(jí)</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">在校擔(dān)<br/>任職務(wù)</td>
<td colspan="3" style="border: 1px solid #000000">測(cè)試職位</td>
<td class="td-height" colspan="" style="border: 1px solid #000000">特長(zhǎng)</td>
<td colspan="3" style="border: 1px solid #000000"></td>
</tr>
<tr>
<td style="border: 1px solid #000000">自<br/>我<br/>總<br/>結(jié)</td>
<td colspan="7" style="height:320px;border: 1px solid #000000"><p>自我總結(jié)111</p></td>
</tr>
<tr>
<td style="border: 1px solid #000000">在<br/>校<br/>期<br/>間<br/>獲<br/>獎(jiǎng)<br/>情<br/>況</td>
<td colspan="7" style="height: 320px;border: 1px solid #000000"><p>獲獎(jiǎng)</p></td>
</tr>
<tr>
<td style="border: 1px solid #000000" rowspan="2">學(xué)<br/>生<br/>在<br/>校<br/>表<br/>現(xiàn)<br/>情<br/>況</td>
<td colspan="7" style="height: 300px;">
<p>在?;厩闆r111</p>
</td>
</tr>
<tr>
<td colspan="8">
<span style="width: 100%;">班主任簽字: <span> 年 月 日</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>學(xué) 院 推 薦 意 見</p></td>
</tr>
<tr>
<td style="height: 200px;border: 1px solid #000000;" colspan="4">
<div style="height: 150px;text-align: right;">
<p>簽 章 </p>
<p>年 月 日</p>
</div>
</td>
<td style="height: 200px;border: 1px solid #000000;" colspan="4">
<div style="height: 150px;text-align: right;">
<p>簽 章 </p>
<p>年 月 日</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)把生成的效果給領(lǐng)導(dǎo)
2.領(lǐng)導(dǎo)過目
1)把html模板給我發(fā)一份,給了,不知道他通過什么生成了pdf文檔。
2)然后給我發(fā)了一份生成的pdf文件,說跟你發(fā)給我的不一樣,我說就是通過這個(gè)模板生成的呀。
3)我估計(jì)領(lǐng)導(dǎo)百度看了一下(他是懂技術(shù)的哦),發(fā)現(xiàn)php通過html生成pdf的教程非常少。
4)最后說,不用改了,測(cè)一下原來的(說明一下,原來的是通過word模板生成word文件)。
3.結(jié)論
以后如果有領(lǐng)導(dǎo)讓你生成pdf文件(技術(shù)棧:php),你可以婉轉(zhuǎn)的拒絕。
最后希望我的博客能幫助到大家。