本文目录导读:

TCPDF 是一个流行的 PHP 类库,用于生成 PDF 文件,它支持多种功能,包括文本、图像、表格、字体嵌入等,以下是 PHP 项目中使用 TCPDF 的基本步骤:
安装 TCPDF
使用 Composer 安装(推荐)
composer require tecnickcom/tcpdf
手动安装
从 TCPDF官网 下载,解压到项目目录中。
基本用法示例
创建简单的 PDF 文件
<?php
// 引入自动加载文件
require_once __DIR__ . '/vendor/autoload.php';
// 创建 PDF 对象
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// 设置文档信息
$pdf->SetCreator('Your App');
$pdf->SetAuthor('Your Name');
$pdf->SetTitle('Example Document');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example');
// 设置页边距
$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, 'Hello World!', 1, 1, 'C');
// 输出 PDF
$pdf->Output('example.pdf', 'I');
常用功能示例
// 设置字体
$pdf->SetFont('dejavusans', '', 12);
// 普通文本
$pdf->Write(0, '这是普通文本内容', '', 0, 'L', true, 0, false, false, 0);
// 多行文本
$html = '<p>这是 HTML 格式的文本。</p>';
$pdf->writeHTML($html, true, false, true, false, '');
插入图片
// 添加图片
$pdf->Image('path/to/image.jpg', 15, 40, 100, 0, 'JPG', 'http://example.com', 'T', false, 300, '', false, false, 0, false, false, false);
创建表格
// 表头
$header = array('ID', 'Name', 'Email');
$data = array(
array('1', 'John', 'john@example.com'),
array('2', 'Jane', 'jane@example.com'),
);
// 设置表头样式
$pdf->SetFillColor(200, 200, 200);
$pdf->SetFont('helvetica', 'B', 12);
foreach ($header as $col) {
$pdf->Cell(60, 7, $col, 1, 0, 'C', 1);
}
$pdf->Ln();
// 数据行
$pdf->SetFont('helvetica', '', 12);
foreach ($data as $row) {
foreach ($row as $col) {
$pdf->Cell(60, 6, $col, 1, 0, 'C');
}
$pdf->Ln();
}
添加链接
// 文本链接 $pdf->Write(0, '访问我们的网站', 'http://example.com', false, 'L', true, 0, false, false, 0); // 创建链接区域 $pdf->Link(10, 20, 30, 10, 'http://example.com');
保存和输出 PDF
// 输出到浏览器
$pdf->Output('document.pdf', 'I'); // I: 内联显示,D: 下载,F: 保存到文件,S: 返回字符串
// 保存到服务器
$pdf->Output('/path/to/save/document.pdf', 'F');
// 获取 PDF 内容作为字符串
$content = $pdf->Output('document.pdf', 'S');
完整示例:生成发票
<?php
require_once __DIR__ . '/vendor/autoload.php';
// 创建新 PDF 文档
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
// 设置文档信息
$pdf->SetCreator('Invoice System');
$pdf->SetAuthor('Your Company');
$pdf->SetTitle('Invoice #001');
$pdf->SetSubject('Invoice');
// 设置页边距
$pdf->SetMargins(20, 20, 20);
$pdf->SetAutoPageBreak(true, 20);
// 添加页面
$pdf->AddPage();
// 设置字体
$pdf->SetFont('helvetica', 'B', 24);
$pdf->Cell(0, 20, 'INVOICE', 0, 1, 'C');
// 公司信息
$pdf->SetFont('helvetica', 'B', 12);
$pdf->Cell(0, 10, 'Your Company Name', 0, 1, 'L');
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(0, 6, '123 Business Street', 0, 1, 'L');
$pdf->Cell(0, 6, 'City, State 12345', 0, 1, 'L');
// 客户信息
$pdf->Ln(10);
$pdf->SetFont('helvetica', 'B', 12);
$pdf->Cell(0, 10, 'Bill To:', 0, 1, 'L');
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(0, 6, 'Client Name', 0, 1, 'L');
$pdf->Cell(0, 6, 'Client Address', 0, 1, 'L');
// 发票详情
$pdf->Ln(10);
$pdf->SetFont('helvetica', 'B', 10);
$pdf->Cell(0, 6, 'Invoice #: 001', 0, 1, 'L');
$pdf->Cell(0, 6, 'Date: ' . date('Y-m-d'), 0, 1, 'L');
// 表格
$pdf->Ln(10);
$header = array('Description', 'Quantity', 'Price', 'Total');
$data = array(
array('Web Development', '1', '$2000', '$2000'),
array('Hosting (1 year)', '1', '$300', '$300'),
);
// 表头
$pdf->SetFillColor(200, 200, 200);
$pdf->SetFont('helvetica', 'B', 10);
foreach ($header as $col) {
$pdf->Cell(45, 7, $col, 1, 0, 'C', 1);
}
$pdf->Ln();
// 数据
$pdf->SetFont('helvetica', '', 10);
foreach ($data as $row) {
foreach ($row as $col) {
$pdf->Cell(45, 6, $col, 1, 0, 'C');
}
$pdf->Ln();
}
// 总计
$pdf->SetFont('helvetica', 'B', 12);
$pdf->Cell(135, 8, 'Total:', 1, 0, 'R');
$pdf->Cell(45, 8, '$2300', 1, 1, 'C');
// 输出 PDF
$pdf->Output('invoice_001.pdf', 'I');
注意事项
- 中文支持:使用
dejavusans或dejavusanscondensed字体支持中文 - 内存限制:生成大文件时可能需要调整 PHP 内存限制
- 性能优化:批量生成 PDF 时考虑使用缓存
- 错误处理:添加 try-catch 块处理可能的异常
TCPDF 功能强大,可以根据需要进一步探索其高级功能,如条形码、数字签名、表单等。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播