在FPDF中对齐文本旁边的图像

时间:2014-03-12 16:56:18

标签: php fpdf

好的,我有一个FPDF文档,我用PHP编写,在这个页面中我有一个完美的使用set x和Y定位的徽标,并且工作正常。

我现在要做的是在标题旁边添加一个图像,现在再次我可以用x和y来定位它。问题是页面中的信息是动态的,因此设置x和y将意味着标题可能会移动但图像不会。

目前我的图像和单元格设置如下,但标题始终位于图像下方一行,我无法找到它们坐在同一条线上。

 $pdf->Image('images/school.png');
 $pdf->Cell(10,10,"Education",0,1,'L');

1 个答案:

答案 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');

以下是演示的样子:

Floating images and text FPDF

哦,顺便说一句,你也很难过,在调用$pdf->Image()之后,你在下一行打印出细胞时遇到了问题。一个简单的解决方法是将$y中的$pdf->Image()参数设置为$pdf->getY()。如果未设置$y参数,FPDF会尝试提供帮助,并默认设置换行符。