$image1 = "call.png";
$pdf->Cell(0,8,$pdf->Image($image1, $pdf->GetX()+2, $pdf->GetY()+2, 20.78),0,0,'',true);
我试过上面的代码在pdf文档的单元格中插入图像。我想在单元格右侧对齐此图像。fpdf + php如何在pdf文档右侧的单元格中插入图像?
$image1 = "call.png";
$pdf->Cell(0,8,$pdf->Image($image1, $pdf->GetX()+2, $pdf->GetY()+2, 20.78),0,0,'',true);
我试过上面的代码在pdf文档的单元格中插入图像。我想在单元格右侧对齐此图像。fpdf + php如何在pdf文档右侧的单元格中插入图像?
在FPDF中,宽度和高度分别有内部变量w
和h
。但是,这些以用户单位表示。默认情况下,这是毫米。图像总是以像素呈现,这可能会导致问题。也就是说,FPDF还会跟踪wPt
和hPt
,它们以与像素单位很容易比较的方式为您提供尺寸。最后,有k
,这是一个可用于从用户单位转换为像素的缩放单位。
我们将做到以下几点:
getimagesize
$pdf->w
$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();
我会建议把这个功能或类似的东西,如果你打算使用它很多。请注意,这只适用于右对齐。您将使用与中心对齐不同计算的类似方法。页面左边和右边的边界由FPDF定义,可以在构造函数中设置为SetMargins
我删除了这一行'$ hPdf = $ pdf-> hPt;'并在'$ width = $ wPdf - $ wImg;'后面添加了这一行'$ height = $ hImg;'以停止变量未定义的错误。一旦我做到了,它就会很有帮助,谢谢。 –
您需要检索文档的X_max,从中减去图像的宽度,然后将其插入X你从减法中得到了什么? –