我遇到自动进入多单元FPDF的问题
$pdf=new PDF('P','cm','A4');
$pdf->Open();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetMargins(1.5,1,1.5);
$pdf->SetFont('Times','',12);
$x=$pdf->GetY();
$pdf->SetY($x+1);
$pdf->SetFont('Times','B',12);
$pdf->Cell(1,0.5,'#',1,0,'L');
$pdf->Cell(4,0.5,'Name',1,0,'L');
$pdf->Cell(4,0.5,'Blabla',1,0,'L');
$pdf->Cell(4,0.5,'Blabla',1,0,'L');
//query dan arraying
$sql ="SELECT * FROM `tb_unknown`";
$query = mysql_query( $sql );
$i = 1;
while( $result= mysql_fetch_array( $query )){
$pdf->Ln();
$name = $result['name'];
$blabla1 = $result['blabla1'];
$blabla2 = $result['blabla2'];
$pdf->SetFont('Times','',12);
$pdf->MultiCell(1, 0.5, $i, 1, 'L');
$pdf->MultiCell(4, 0.5, $name, 1, 'L');
$pdf->MultiCell(4, 0.5, $blabla1, 1, 'L');
$pdf->MultiCell(4, 0.5, $blabla2, 1, 'L');
$i++;
}
$pdf->Output("report.pdf", "I");
这是我的结果......
那是如此丑陋,表中的错误对齐位置。 有人可以帮我修理它吗?...
答案 0 :(得分:4)
这个问题困扰了我一段时间,我找到了link的解决方案。
这背后的想法是在打印多单元之前采用X和Y坐标,并在打印后立即使用SetXY函数设置两个坐标。
您还必须确定行中最高单元格的高度,然后使用每行末尾的SetY移动到相应的Y坐标。
您的代码应如下所示:
$name = $result['name'];
$blabla1 = $result['blabla1'];
$blabla2 = $result['blabla2'];
$pdf->SetFont('Times','',12);
while( $result= mysql_fetch_array( $query )) {
$current_y = $pdf->GetY();
$current_x = $pdf->GetX();
$pdf->MultiCell(1, 0.5, $i, 1, 'L');
$end_y = $pdf->GetY();
$current_x = $current_x + 1;
$pdf->SetXY($current_x, $current_y);
$pdf->MultiCell(4, 0.5, $name, 1, 'L');
$end_y = ($pdf->GetY() > $end_y)?$pdf->GetY() : $end_y;
$current_x = $current_x + 4;
$pdf->SetXY($current_x, $current_y);
$pdf->MultiCell(4, 0.5, $blabla1, 1, 'L');
$end_y = ($pdf->GetY() > $end_y)?$pdf->GetY() : $end_y;
$current_x = $current_x + 4;
$pdf->SetXY($current_x, $current_y);
$pdf->MultiCell(4, 0.5, $blabla2, 1, 'L');
$end_y = ($pdf->GetY() > $end_y)?$pdf->GetY() : $end_y;
$i++;
$pdf->SetY($end_y);
}