我使用以下代码使用FPDF显示标题和彼此相邻的日期:
$this->SetFont('Helvetica', 'B', 30);
$this->Cell(120, 20, 'Rechnung 20130809-78');
$this->SetFont('Helvetica', '', 10);
$this->Cell(0, 20, '09. 08. 2013');
但是文本没有正确对齐:
如何让它工作以使基线处于同一高度?
我不想要一个解决方案,我必须手动调整其中一个元素的位置。它必须适用于我输入的每个字体大小。
我已经尝试在我的Cell方法中自动调整y位置,但文本在基线处没有对齐,而是在底部(g结束处)!
public function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='') {
$text = utf8_decode($txt);
$startX = $this->GetX();
$startY = $this->GetY();
$this->SetY($startY - $this->FontSize / 2);
$this->SetX($startX);
parent::Cell($w, $h, $txt, $border, $ln, $align, $fill, $link);
$endX = $this->GetX();
$endY = $this->GetY();
$this->SetY($startY);
$this->SetX($endX);
}
有没有办法做我打算做的事情?请帮我!上图中的绿线应该处于相同的高度。
答案 0 :(得分:1)
这是一个解决方案:
function drawTextBox($strText, $w, $h, $align='L', $valign='T', $border=true)
{
$xi=$this->GetX();
$yi=$this->GetY();
$hrow=$this->FontSize;
$textrows=$this->drawRows($w,$hrow,$strText,0,$align,0,0,0);
$maxrows=floor($h/$this->FontSize);
$rows=min($textrows,$maxrows);
$dy=0;
if (strtoupper($valign)=='M')
$dy=($h-$rows*$this->FontSize)/2;
if (strtoupper($valign)=='B')
$dy=$h-$rows*$this->FontSize;
$this->SetY($yi+$dy);
$this->SetX($xi);
$this->drawRows($w,$hrow,$strText,0,$align,false,$rows,1);
if ($border)
$this->Rect($xi,$yi,$w,$h);
}
来源:https://github.com/lsolesen/fpdf/blob/master/examples/textbox/textbox.php