PHP如何用TCPDF生成PDF?实例步骤有哪些?
- 虚拟主机
- 2025-12-19
- 4
PHP中使用TCPDF生成PDF文档实例
TCPDF是一个功能强大的PHP库,用于生成PDF文档,它支持多种字体、图像、超链接、表格等元素,并且可以轻松集成到PHP项目中,本文将详细介绍如何使用TCPDF生成PDF文档,包括基本设置、添加内容、插入表格、设置样式等操作,并提供完整的代码示例。
安装TCPDF库
需要下载TCPDF库,可以通过官方网站(https://tcpdf.org/)下载最新版本,或者使用Composer安装:

下载完成后,将TCPDF库文件放置在项目的适当目录中,例如vendor/tecnickcom/tcpdf。
创建基本的PDF文档
以下是一个简单的TCPDF示例,用于创建一个包含基本文本的PDF文档:

代码解析:
- TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF8', false):创建TCPDF对象,设置页面方向(P为纵向,L为横向)、单位(mm、pt等)、页面格式(A4等)、是否启用Unicode、字符编码等。
- SetCreator()、SetAuthor()等:设置文档的基本信息。
- setHeaderData():设置页眉,包括Logo、标题和字符串。
- AddPage():添加新页。
- SetFont():设置字体、样式和大小。
- Cell():添加单元格,参数包括宽度、高度、文本、边框、换行、对齐方式等。
- Output():输出PDF,'I'表示在浏览器中显示,'D'表示下载,'F'表示保存到文件。
添加表格
TCPDF支持插入表格,以下是一个示例:
// 设置表格数据 $data = array( array('Name', 'Age', 'City'), array('Alice', 25, 'New York'), array('Bob', 30, 'London'), array('Charlie', 35, 'Paris') ); // 设置字体 $pdf>SetFont('helvetica', '', 12); // 添加表格 $pdf>SetFillColor(255, 0, 0); $pdf>SetTextColor(255); $pdf>SetDrawColor(128, 0, 0); $pdf>SetLineWidth(0.3); $pdf>SetFont('', 'B'); $w = array(40, 20, 40); $h = 6; for ($i = 0; $i < count($data); $i++) { $pdf>Cell($w[0], $h, $data[$i][0], 'LR', 0, 'L', true); $pdf>Cell($w[1], $h, $data[$i][1], 'LR', 0, 'C', true); $pdf>Cell($w[2], $h, $data[$i][2], 'LR', 0, 'R', true); $pdf>Ln(); } $pdf>Cell(array_sum($w), 0, '', 'T');
代码解析:
- $data:表格数据,二维数组。
- SetFillColor():设置单元格背景颜色。
- SetTextColor():设置文本颜色。
- SetDrawColor():设置边框颜色。
- Cell():逐行添加单元格,'LR'表示左右有边框,'T'表示顶部有边框。
插入图片和超链接
TCPDF支持插入图片和超链接,示例代码如下:
// 插入图片 $pdf>Image('example.jpg', 15, 30, 50, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); // 添加超链接 $pdf>WriteHTML('<a href="https://www.example.com">Click here to visit example.com</a>', true, false, false, false, '');
代码解析:
- Image():插入图片,参数包括文件路径、X坐标、Y坐标、宽度、格式、链接、对齐方式等。
- WriteHTML():支持HTML内容,如超链接、加粗、斜体等。
设置页面样式
可以自定义页面样式,例如背景色、页眉页脚等:

// 设置页面背景色 $pdf>SetFillColor(240, 240, 240); $pdf>Rect(0, 0, 210, 297, 'F'); // 自定义页脚 $pdf>setFooterCallback(function($pdf) { $pdf>SetY(15); $pdf>SetFont('helvetica', 'I', 8); $pdf>Cell(0, 10, 'Page '.$pdf>PageNo().'/{nb}', 0, 0, 'C'); });
完整示例
以下是一个完整的TCPDF示例,包含文本、表格、图片和超链接:
<?php require_once('vendor/tecnickcom/tcpdf/tcpdf.php'); $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF8', false); $pdf>SetCreator('TCPDF'); $pdf>SetAuthor('Your Name'); $pdf>SetTitle('TCPDF Complete Example'); $pdf>SetSubject('TCPDF Tutorial'); $pdf>SetKeywords('TCPDF, PDF, example, test'); $pdf>setHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING); $pdf>setFooterData($tc = array(0, 64, 0), $lc = array(0, 64, 0)); $pdf>setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf>setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); $pdf>SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); $pdf>SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf>SetHeaderMargin(PDF_MARGIN_HEADER); $pdf>SetFooterMargin(PDF_MARGIN_FOOTER); $pdf>SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); $pdf>setImageScale(PDF_IMAGE_SCALE_RATIO); $pdf>AddPage(); $pdf>SetFont('helvetica', 'B', 20); $pdf>Cell(0, 10, 'TCPDF Complete Example', 0, 1, 'C'); $pdf>SetFont('helvetica', '', 12); $pdf>WriteHTML('<p>This is a <b>bold</b> text and an <a href="https://www.example.com">example link</a>.</p>', true, false, false, false, ''); $pdf>Image('example.jpg', 15, 30, 50, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); $data = array( array('Name', 'Age', 'City'), array('Alice', 25, 'New York'), array('Bob', 30, 'London'), array('Charlie', 35, 'Paris') ); $pdf>SetFont('helvetica', '', 12); $pdf>SetFillColor(255, 0, 0); $pdf>SetTextColor(255); $pdf>SetDrawColor(128, 0, 0); $pdf>SetLineWidth(0.3); $pdf>SetFont('', 'B'); $w = array(40, 20, 40); $h = 6; for ($i = 0; $i < count($data); $i++) { $pdf>Cell($w[0], $h, $data[$i][0], 'LR', 0, 'L', true); $pdf>Cell($w[1], $h, $data[$i][1], 'LR', 0, 'C', true); $pdf>Cell($w[2], $h, $data[$i][2], 'LR', 0, 'R', true); $pdf>Ln(); } $pdf>Cell(array_sum($w), 0, '', 'T'); $pdf>Output('complete_example.pdf', 'I'); ?>
相关问答FAQs
Q1: 如何在TCPDF中设置中文字体?
A1: TCPDF默认不支持中文字体,需要添加中文字体文件(如simhei.php),首先下载中文字体文件(如simhei.ttf),然后使用TCPDF_FONTS类注册字体:
require_once('vendor/tecnickcom/tcpdf/tcpdf.php'); require_once('vendor/tecnickcom/tcpdf/include/tcpdf_fonts.php'); $fontname = TCPDF_FONTS::addTTFfont('simhei.ttf'); $pdf>SetFont($fontname, '', 12);
Q2: 如何在TCPDF中添加页码?
A2: 可以通过setFooterCallback方法自定义页脚,添加页码:
$pdf>setFooterCallback(function($pdf) { $pdf>SetY(15); $pdf>SetFont('helvetica', 'I', 8); $pdf>Cell(0, 10, 'Page '.$pdf>PageNo().'/{nb}', 0, 0, 'C'); });
其中{nb}表示总页数。