Zeilenhöhe automatisch anpassen in fpdf multicell ()
Ich benutze fpdf zum erstellen von pdf-Daten in der MySql-Tabelle dynamisch. Und ich Schreibe es mit MultiCell () - Funktion. Mein Problem ist, ich will es zur automatischen Anpassung der Zeilenhöhe an den text. Ich habe die Dokumentation auf der Website, aber es sagt nur über die auto-Breite anpassen. Aber ich konnte keine Lösung für die Zeilenhöhe automatisch anpassen. Gibt es eine Möglichkeit, dies zu tun. Was können die alternativen Möglichkeiten? Bitte helfen Sie. Hier ist das Stück code. :-
<?php session_start();
include 'conn.php';
$table=$_SESSION["name"];
$testid=$_SESSION["id"];
$stuid=$_SESSION["stuid"];
$ans=$_SESSION["score1"];
//pdf creation
require('../fpdf/fpdf.php');
class PDF extends FPDF
{
function Header()
{
global $title;
$this->Image('../fpdf/logo.JPG',10,10,200);
//Arial bold 15
$this->SetFont('Arial','B',15);
//Calculate width of title and position
$w = $this->GetStringWidth($title)+6;
$this->SetX((210-$w)/2);
//Colors of frame, background and text
//Thickness of frame (1 mm)
$this->SetLineWidth(1);
//Title
//Line break
$this->Ln(20);
}
function Footer()
{
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
$this->SetFont('Arial','I',8);
//Text color in gray
$this->SetTextColor(128);
//Page number
$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
}
function ChapterTitle($num, $label)
{
//Arial 12
$this->SetFont('Arial','',12);
//Background color
$this->SetFillColor(200,220,255);
//Title
$this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
//Line break
$this->Ln(4);
}
function ChapterBody($file)
{
//Read text file
$txt = file_get_contents($file);
//Times 12
$this->SetFont('Times','',12);
//Output justified text
$this->MultiCell(0,5,$txt);
//Line break
$this->Ln();
//Mention in italics
$this->SetFont('','I');
$this->Cell(0,5,'(end of excerpt)');
}
function PrintChapter($num, $title, $file)
{
$this->AddPage();
$this->ChapterTitle($num,$title);
$this->ChapterBody($file);
}
}
$pdf = new PDF();
$pdf->SetAuthor('OSP Classes');
$pdf->AddPage();
$x=1;
$i=0;
$sql1=mysql_query("select * from $table") or die (mysql_error());
while($result1=mysql_fetch_row($sql1))
{
$pdf->SetFont('Arial','B',14);
$pdf->MultiCell(0,10,'Ques No.'.$x .'.'. $result1[1]);
$pdf->Ln(10);
$pdf->SetFont('Arial','',14);
$pdf ->MultiCell(0,0,'Ans 1.'. $result1[2]);
$pdf->Ln(10);
$pdf->SetFont('Arial','',14);
$pdf ->MultiCell(0,0,'Ans 2.'. $result1[3]);
$pdf->Ln(10);
$pdf->SetFont('Arial','',14);
$pdf ->MultiCell(0,0,'Ans 3.'. $result1[4]);
$pdf->Ln(10);
$pdf->SetFont('Arial','',14);
$pdf ->MultiCell(0,0,'Ans 4.'. $result1[5]);
$pdf->Ln(10);
$pdf->MultiCell(0,0,'Right Ans . '. $result1[6].' '.'Your Ans . '. $ans[$i]);
$pdf->Ln(20);
$x++;
$i++;
}
$pdf->Output();
?>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Automatische Zeilenhöhe ist nicht möglich, FPDF MultiCell. Als Diese Seite erklärt, Multicell erzeugt eine Zelle für jede Zeile der text, den Sie drucken. Die 2e-argument (h) ist die Höhe der einzelnen Zelle. (die Zeilen-Höhe).
Gibt es eine bessere Lösung?
Ja, es ist. Die Menschen aus TCPDF genommen hat, die FPDF-Klasse und erweitert/verbessert es. Sie unterstützen die HTML-Ausgabe. Dort können Sie html für die Ausgaben. Vielleicht können Sie diese verwenden.
Können Sie spielen mit den Werten von
$line_height
und$width
passen mit Ihrer schriftart/Ränder/was auch immer Sie tun müssen, aber die Formel für die Höhe berechnen die Anzahl der Zeilen benötigt, und multiplizieren Sie diese Zahl durch die Höhe jeder Zeile.Ich hatte das gleiche Problem und suchte für eine Weile für eine Lösung. Schließlich kam eine relativ einfache Antwort: