如何使用 PHP 在 FPDF 中居中 table

How to center table in FPDF using PHP

我正在使用 FPDF 库作为 PDF 文档生成器来生成 table。
问题是包含数据的 table 不会居中,尽管我尝试在 $pdf->Cell() 参数中写入 'C'。输出与左侧对齐,如下所示。

还有为什么当我添加新列(5 列)时单元格移到底部而右边仍有空格,如下所示。

我试过在所有像这样相关的单元格中添加 'C' 参数
$pdf->Cell(190,7,'Some text',0,1,'C');

并且还使用 $pdf->SetXY(20,20); 来自 的解决方案 但是还是不行。

我当前的代码是:

<?php

require('fpdf.php');
$pdf = new FPDF('P','mm','A4');
$pdf->AddPage();

$pdf->Image('some_image.png',10,10,30,15);

$pdf->SetFont('Arial','B',16);
$pdf->Cell(190,7,'Some title',0,1,'C');
$pdf->SetFont('Arial','B',9);
$pdf->Cell(190,7,'Jl. Some address',0,1,'C');
$pdf->Cell(10,7,'',0,1);

$pdf->SetFont('Arial','B',9);
$pdf->Cell(190,7, $somestring1 ,0,1,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(190,7,'to',0,1,'C');
$pdf->SetFont('Arial','B',9);
$pdf->Cell(190,7, $somestring2 ,0,1,'C');

$pdf->SetFont('Arial','B',8);
$pdf->Cell(10,7,'',0,1,'C');
$pdf->Cell(6,6,'NO',1,0,'C');
$pdf->Cell(23,6,'TUJUAN',1,0,'C');
$pdf->Cell(25,6,'PEMINJAM',1,0,'C');
$pdf->Cell(35,6,'KENDARAAN',1,0,'C');
$pdf->Cell(27,6,'JAM BERANGKAT',1,1,'C');
// If I add this cell, then i'll overlap/move to the bottom
$pdf->Cell(27,6,'JAM PULANG',1,1,'C');

$pdf->SetFont('Arial','',8);
$query = mysqli_query($someconn, "SELECT somequery");

$i = 1;
while ($row = mysqli_fetch_array($query)){
    $pdf->Cell(6,6,$i++,1,0,'C');
    $pdf->Cell(23,6,$row['sometable'],1,0,'C');
    $pdf->Cell(25,6,$row['sometable'],1,0);
    $pdf->Cell(35,6,$row['sometable']." ".$row['sometable'],1,0,'C');
    $pdf->Cell(27,6,$row['sometable'],1,1,'C');
    $pdf->Cell(30,6,$row['sometable'],1,1,'C');
}

$pdf->Output();

?>

流到下一页似乎是这一行造成的

$pdf->Cell(27,6,'JAM BERANGKAT',1,1,'C');

'C' 之前包含一个 1(表示转到下一行)。改成

$pdf->Cell(27,6,'JAM BERANGKAT',1,0,'C');

并且那个额外的单元格不应在新行开始。

对于居中,没有边距设置,您的页面宽度应为 210。所有单元格的宽度为 153,这意味着应该正好适合。

要使页面居中,请使用 SetLeftMargin 页面宽度 210 和列的总宽度 153 之间差值的一半,即 28。创建实例后的 FPDF 在开始新页面之前设置页边距。

$pdf = new FPDF('P','mm','A4');
$pdf->SetLeftMargin(28);
$pdf->AddPage();