将数据生成pdf文件[tcpdf]
通过tcpdf实现将数据生成pdf文件,
官方地址:https://tcpdf.org/examples/
github地址:https://github.com/tecnickcom/tcpdf
将tcpdf下载后放入项目里,用法都比较简单,支持写html。
public function exportPdf()
{
require "Modules/Lib/tcpdf/Tcpdf/tcpdf.php";
$arrList = [];//要处理的数据
//todo 处理内容
$dataStr = ' <tr>
<td align="center"><b>No.</b></td>
<td align="center" ><b>分组名称</b></td>
<td align="center"><b>股票名称</b></td>
<td align="center"> <b>股票代码</b></td>
<td align="center"><b>得分值</b></td>
<td align="center"><b>预判涨跌</b></td>
</tr>';
foreach ($arrList as $k => $v) {
$key = $k + 1;
$dataStr .= "<tr>";
$dataStr .= '<td align="center">' . $key . '</td>';
$dataStr .= '<td align="center">' . $v['group_name'] . '</td>';
$dataStr .= '<td align="center">' . $v['shares_name'] . '</td>';
$dataStr .= '<td align="center">' . $v['shares_code'] . '</td>';
$dataStr .= '<td align="center">' . $v['shares_score'] . '</td>';
$zd = $v['prediction_rise'] == 1 ? '涨' : '跌';
$dataStr .= '<td align="center">' . $zd . '</td>';
$dataStr .= "</tr>";
}
//实例化
$pdf = new \TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
$str1 = '行业指数';
// 设置文档信息
$pdf->SetCreator($str1);
$pdf->SetAuthor($str1);
$pdf->SetTitle($str1);
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, PHP');
$pdf->setFooterData(array(0, 64, 0), array(0, 64, 128));
// 设置页眉和页脚字体
$pdf->setHeaderFont(array('stsongstdlight', '', '10'));
$pdf->setFooterFont(array('helvetica', '', '8'));
// 设置默认等宽字体
$pdf->SetDefaultMonospacedFont('courier');
// 设置间距
$pdf->SetMargins(15, 27, 15);
$pdf->SetHeaderMargin(5);
$pdf->SetFooterMargin(10);
// 设置分页
$pdf->SetAutoPageBreak(TRUE, 25);
// set image scale factor
$pdf->setImageScale(1.25);
// set default font subsetting mode
$pdf->setFontSubsetting(true);
//设置字体
$pdf->SetFont('stsongstdlight', '', 14);
$pdf->AddPage();
//写入文字
// $pdf->Write(0,$str1,'', 0, 'L', true, 0, false, false, 0);
//写入html
$html = <<<EOF
<!-- EXAMPLE OF CSS STYLE -->
<style>
h1 {
color: black;
font-size: 24pt;
/*text-decoration: underline;*/
}
table.first {
color: #003300;
font-size: 8pt;
border: 1px solid black;
line-height:20px;
}
td {
border: 1px solid black;
line-height:20px;
}
.dataTd{
text-align: center;
align-content: center;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<h1 class="title">$str1</h1>
<table class="first" >
$dataStr
</table>
EOF;
$pdf->lastPage();
$pdf->writeHTML($html, true, false, true, false, '');
//输出PDF
ob_clean();
// F表示可保存 I表示在浏览器打开
$pdf->Output($_SERVER['DOCUMENT_ROOT'] . "Uploads/pdf/" . time() . '.pdf', 'F');
$url = "http://" . $_SERVER['HTTP_HOST'] . "/Uploads/pdf/" . time() . '.pdf';
echo json_encode(['code' => 0, 'msg' => 'success', 'pdf_url' => $url]);
}