好的,我有一个FPDF文档,我用PHP编写,在这个页面中我有一个完美的使用set x和Y定位的徽标,并且工作正常。
我现在要做的是在标题旁边添加一个图像,现在再次我可以用x和y来定位它。问题是页面中的信息是动态的,因此设置x和y将意味着标题可能会移动但图像不会。
目前我的图像和单元格设置如下,但标题始终位于图像下方一行,我无法找到它们坐在同一条线上。
$pdf->Image('images/school.png');
$pdf->Cell(10,10,"Education",0,1,'L');
答案 0 :(得分:4)
不幸的是,FPDF不知道如何在图像旁边浮动文本。但是,通常存在变通方法。下面的方法写入浮动图像。请注意,您必须指定图像的高度。重写它应该很容易,但也可以让你指定宽度或不指定任何内容。
class FloatPDF extends FPDF
{
public function floatingImage($imgPath, $height) {
list($w, $h) = getimagesize($imgPath);
$ratio = $w / $h;
$imgWidth = $height * $ratio;
$this->Image($imgPath, $this->GetX(), $this->GetY());
$this->x += $imgWidth;
}
}
这是一个演示:
$pdf = new FloatPDF();
$imgPath = "/logo.png";
$pdf->SetFont(self::FONT, 'B', 20);
$height = 10;
$pdf->floatingImage($imgPath, $height);
$pdf->Write($height, " This is a text ");
$pdf->floatingImage($imgPath, $height);
$pdf->Write($height, " with floating images. ");
$pdf->floatingImage($imgPath, $height);
$pdf->Output('demo.pdf', 'D');
以下是演示的样子:
哦,顺便说一句,你也很难过,在调用$pdf->Image()
之后,你在下一行打印出细胞时遇到了问题。一个简单的解决方法是将$y
中的$pdf->Image()
参数设置为$pdf->getY()
。如果未设置$y
参数,FPDF会尝试提供帮助,并默认设置换行符。