2017-11-26 2 views
0

Ich schrieb unter Code, funktioniert es gut, aber multicell Zeilenhöhen funktionieren nicht richtig.Ich schrieb unter Code, funktioniert es gut, aber multicell Zeile Höhen funktionieren nicht richtig.Ich schrieb unter Code, es funktioniert gut, aber mehrzeilige Zeilenhöhen funktionieren nicht richtig.fpdf multicell erzeugt nicht die gleiche Höhe

$x=$pdf->GetY(); 
$pdf->SetY($x+1); 

include_once("config.php"); 
$result = mysqli_query($mysqli, "SELECT * FROM prd"); // using mysqli_query instead 
$i = 1; 
while($res = mysqli_fetch_array($result)) 
{ 

$current_y = $pdf->GetY(); 
    $current_x = $pdf->GetX(); 

    $pdf->MultiCell(30, 5, $i, 1, 'L'); 
    $end_y = $pdf->GetY(); 
$prdid = $res[0]; 
     $empid = $res[1]; 
     $specification = $res[2]; 
$prn = $res[3]; 



$current_x = $current_x + 30; 
    $pdf->SetXY($current_x, $current_y); 
    $pdf->MultiCell(30, 5, $empid, 1, 'L'); 
    $end_y = ($pdf->GetY() > $end_y)?$pdf->GetY() : $end_y; 

$current_x = $current_x + 30; 
    $pdf->SetXY($current_x, $current_y); 
    $pdf->MultiCell(30, 5, $specification, 1, 'L'); 
    $end_y = ($pdf->GetY() > $end_y)?$pdf->GetY() : $end_y; 

$current_x = $current_x + 30; 
    $pdf->SetXY($current_x, $current_y); 
    $pdf->MultiCell(30, 5, $prn, 1, 'L'); 
    $end_y = ($pdf->GetY() > $end_y)?$pdf->GetY() : $end_y; 


$i++; 
    $pdf->SetY($end_y); 

     } 
$pdf->Output(); 
?> 

Mein Ergebnis:

To see my result click here

Wie Zeilenhöhe automatisch anpassen?

Antwort

0

Also eine Multi-Zelle ist im Wesentlichen dynamisch ist Höhe. Die Höhe, die Sie in die Funktion eingeben, ist eine "Zeilenhöhe". Also, was passiert, ist, dass fpdf zum Schreiben der Multi-Zelle geht und sagen wir, wir haben die Höhe auf 5 gesetzt, es wird eine "Zelle" der Höhe 5 erstellt und mit dem Schreiben begonnen. Dann trifft es auf den harten Anschlag bei der Breite und geht "ich muss eine neue Zeile erstellen", die dann eine neue "Zelle" der Höhe 5 direkt unterhalb der obersten "Zelle" hinzufügt. Dies wiederholt sich, bis der gesamte Text ausgeschrieben ist. Offensichtlich ist dies großartig für dynamische Inhalte, hat aber seine eigenen Herausforderungen, die Sie getroffen haben.

Der Pfad, den ich normalerweise nehme, besteht darin, den Startpunkt aufzuzeichnen, die Multizelle zuerst auszugeben und dann den Haltepunkt aufzuzeichnen. Sie können dann zurückgehen und die anderen Zellen für eine bessere Ausrichtung schreiben. GetX, GetY, SetX, SetY sind dafür deine Freunde. Sie können Höhen und solche dynamisch mit einfacher Mathematik einstellen.

Die Option "Lazy" besteht darin, das Layout neu zu skalieren, damit das Dokument skalieren kann. Nehmen Sie die zu lange Multi-Zelle und setzen Sie sie UNTER DIE Zeile, so dass Sie haben: | 1 | 46 | PR2 ..... |
| wirklich langen Text das wird hier skalieren |
| 2 | .........

Hoffe, dass Sie vorwärts kommen!