You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在FPDF中仅修改PDF特定区域的字体大小而不全局变更?

问题解答:FPDI中局部修改字体大小(不改变全局设置)

当然可以实现这个需求!FPDF/FPDI的字体设置是即时生效的,你完全可以在需要调整的特定区域临时修改字体大小,写完该区域的内容后再恢复原来的全局字体大小即可,不会影响其他部分的文本。

具体到你的代码,只需要在SetXY定位后(或者定位前)临时设置新的字体大小,写入内容后再把字体大小改回全局的9号就好。这里我给你修改后的代码示例,标注了关键修改点:

<?php 
require_once('../../bus_partners/fpdf/fpdf/fpdf.php');
require_once('../../bus_partners/fpdf/fpdi/fpdi.php');

$pageCount = $pdf->setSourceFile('../../bus_partners/BIR-forms/2316.pdf') ;
$tplIdx = $pdf->importPage(1, '/MediaBox');
$pdf->SetAutoPageBreak(false) ;
$pdf->addPage('P', 'Legal') ;
$pdf->useTemplate($tplIdx, 8, 12, 200, 320) ;

// setting the font size for the whole page
$pdf->SetFont('Arial');
$pdf->SetFontSize(9);
$pdf->SetTextColor(12, 12, 12);

// 修改特定区域的字体大小
$pdf->SetXY(17, 80) ;
// 临时设置新的字体大小,比如改成12号(你可以按需调整数值)
$pdf->SetFontSize(12);
$pdf->Write(0, $address_ee) ;
// 恢复全局的9号字体大小,确保后续内容不受影响
$pdf->SetFontSize(9);

// 后续如果还有其他内容,依然会使用9号字体
// $pdf->SetXY(xx, xx);
// $pdf->Write(0, '其他全局字体大小的内容');
?>

小提示:

  • 如果你担心后续忘记恢复字体大小,也可以先把全局字体大小存到变量里,比如$originalFontSize = 9;,之后恢复时直接用$pdf->SetFontSize($originalFontSize);,这样更灵活。
  • 如果你需要同时修改字体类型(比如从Arial改成Times),也可以用同样的逻辑:临时调用$pdf->SetFont('Times', '', 12);,写完后再切回原来的字体设置。

内容的提问来源于stack exchange,提问作者dan

火山引擎 最新活动