2017-06-15 33 views
1

我正在使用FPDF创建pdf,其中包含从mySql表中读取数据的表。FPDF使用MultiCell相邻设置表数据 - SetY问题

我正在动态创建表标题。现在的问题是,当我在while循环中使用SetXY时,它会停止执行。所以如果我使用SETX只有它让我下载PDF文档,它看起来像下面的图片

enter image description here

这里是我的代码

$pdf = new FPDF('P','mm',array(500,600)); 

$pdf->SetAutoPageBreak(true, 0); 
$pdf->AliasNbPages(); 

$pdf->AddPage(); 

$pdf->SetFont('Arial','B',12);  
$w = 100; 
$x = $pdf->GetX(); 

$y = $pdf->GetY(); 

$pdf->MultiCell($w,12,"Rec No",1,-1); 
$pdf->SetXY(($x+$w),$y); 
$x = ($x+$w); 
foreach($columns as $heading) { 

$pdf->MultiCell($w,12,$heading,1,-1); 
$pdf->SetXY(($x+$w),$y); 
$x = ($x+$w); 
} 
$pdf->ln(); 
$i=1; 

$result2 = mysqli_query($conn, $sql); 
$x = $w; 

while($rows = mysqli_fetch_array($result2)) { 
$pdf->SetFont('Arial','',12); 

$pdf->MultiCell($w,12,$i,1,1); 

$pdf->SetX(($x+10)); 

$x = ($x+$w); 
foreach($columns as $column) 
{ 
$pdf->MultiCell($w,12,$rows[$column],1,1); 

$pdf->SetX($x+10); 
$x = ($x+$w); 

} 
$x = $w; 
$pdf->ln(); 
if(($i%41) == 0) 
{ 

$pdf->SetFont('Arial','B',12); 
$pdf->MultiCell(20,12,"Rec No",1); 
$pdf->SetX($x+10); 


foreach($columns as $heading) { 

$pdf->MultiCell(100,12,$heading,1); 


} 
$pdf->ln(); 
} 

$i++; 
$pdf->Ln($y); 
} 
$pdf->Output('Civil Data.pdf','D'); 

我已经研究了多单元的例子近3小时,发现了一些解决方案也。

在所有解决方案中,它们设置X和Y位置以并排排列。

我试着用SetXY设置位置,并且我成功地设置了表格标题并排。但在数据的情况下,它不工作时,我使用SetXY。当我只使用SetX而不是SetY时,它可以让我下载pdf。

它停止执行在While循环

我试图把SetXY($ X + $ W,$ Y)在while循环设置Y位置,但是它停止执行和犯规让我下载PDF格式。

任何帮助将不胜感激。

由于提前,

的Leena

回答

0

,每天要添加新小区到你是把在foreach这一切组合添加SETY到$ x位置的行时间看起来像这样循环。

解决此问题的一种方法是将SetX和SetY分开,并以某种方式将SetY置于循环外部。

你也可以使用Cell而不是MultiCell来处理你的列并对布局有更多的控制。