如何使用 PHP 将 FPDF 中的表格居中

Muh*_*sal 3 php fpdf

我正在使用 FPDF 库作为 PDF 文档生成器来生成表格。
问题是包含数据的表格不会居中,尽管我尝试在 $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();

?>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ave 6

流到下一页似乎是由这一行引起的

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

在 之前包含 1 'C'(表示转到下一行)。将其更改为

$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();
Run Code Online (Sandbox Code Playgroud)