fpdf + php如何在pdf文档的右侧单元格中插入图像?

时间:2015-05-22 11:26:35

标签: php fpdf

$image1 = "call.png";
$pdf->Cell(0,8,$pdf->Image($image1, $pdf->GetX()+2, $pdf->GetY()+2, 20.78),0,0,'',true);

我尝试了上面的代码在pdf文档的单元格中插入图像。我想将这个图像对准单元格中的右侧。

1 个答案:

答案 0 :(得分:7)

在FPDF中,宽度和高度分别有内部变量wh。但是,这些以用户单位表示。默认情况下,这是毫米。图像总是以像素形式呈现,这可能会导致问题。也就是说,FPDF还跟踪wPthPt,它们可以非常容易地与像素单元进行比较。最后,有k,这是一个缩放单位,可用于将用户单位转换为像素。

我们将执行以下操作:

  • 使用setTitle()
  • 获取图片尺寸
  • 使用$pdf->w
  • 获取以x为单位的页面尺寸
  • 计算总页面宽度并减去图像宽度以获得我们需要的左边距
  • 使用$pdf->k将左边距填充从像素转换为用户单位
  • 使用$pdf->Cell
  • 打印图像左侧的空边界单元格
  • 使用$pdf->Image
  • 打印图像

我们将图像放入单元格中。不要这样做。单元格不是为图像构建的,仅用于字符串。如果尝试此方法,则无法获得预期结果。相反,请选择上述方法。代码如此:

//  Get image dimensions
$size = getimagesize('img.png');

if( $size===false )
    die('Image does not exist.');

$wImg = $size[0];
$hImg = $size[1];

//  Get PDF dimensions
$wPdf = $pdf->wPt;
$hPdf = $pdf->hPt;

//  Calculate width necessary for the cell
$width  = $wPdf - $wImg;

if( $width<0 )
{
    error_log('Image is larger than page we\'re trying to print on.');
    $width = 0;
}

//  Convert pixel units to user units
$width  /= $pdf->k;
$height /= $pdf->k;

//  Print a boundary cell
$pdf->Cell($width,$height);

//  Print image
$pdf->Image('img.png');

//  Force a new line
$pdf->Ln();

如果您计划使用它,我建议将其放入函数或类似的东西中。请注意,这仅适用于正确对齐。您将使用 center 对齐的不同计算执行类似的方法。页面左侧和右侧的边界由FPDF定义,可以在构造函数中使用getimagesize

进行设置