如何在FPDF同一Cell中设置SQL字符串与固定文本不同字号?
解决FPDF同一行内不同字号文本的问题
FPDF的单个Cell()方法没办法在内部混排不同字号的内容,所以你卡在这里很正常——得拆成多个Cell来拼接,通过切换字体大小并控制换行参数,就能实现“NAME:”字号小、数据库name字段字号大的效果。
核心实现思路
- 先用小号字体输出固定文本“NAME:”,设置Cell不换行;
- 切换到大号字体,输出从MySQL获取的
name字段,完成后按需换行。
代码示例
// 初始化FPDF实例 $pdf = new FPDF(); $pdf->AddPage(); // 从MySQL数据库获取name字段(示例,实际根据你的查询逻辑调整) $conn = mysqli_connect('localhost', 'username', 'password', 'dbname'); $result = mysqli_query($conn, "SELECT name FROM invoices WHERE id = 1"); $row = mysqli_fetch_assoc($result); $name = $row['name']; // 输出小号字体的"NAME:" $pdf->SetFont('Arial', '', 10); // 字体、样式、字号 $pdf->Cell(30, 10, 'NAME:', 0, 0); // 宽度、高度、文本、边框、换行(0=不换行) // 切换到大号字体输出name字段 $pdf->SetFont('Arial', '', 14); $pdf->Cell(0, 10, $name, 0, 1); // 宽度0=占满剩余行宽,1=输出后换行 // 后续PDF内容... $pdf->Output();
进阶:调整对齐方式
如果需要“NAME:”右对齐,name左对齐,只需要给Cell添加对齐参数(第五个参数):
$pdf->SetFont('Arial', '', 10); $pdf->Cell(30, 10, 'NAME:', 0, 0, 'R'); // 'R'表示右对齐 $pdf->SetFont('Arial', '', 14); $pdf->Cell(0, 10, $name, 0, 1, 'L'); // 'L'表示左对齐
为什么之前的方法没用?
MultiCell()是用来处理多行文本的,不适合同一行混排字号;SetFont()/SetFontSize()是全局生效的,单个Cell内无法中途切换,必须拆分输出。
内容的提问来源于stack exchange,提问作者Looped Cheese
相关产品推荐
相关产品推荐

