FPDF Seitenumbruch Frage
Bin ich mit PHP und FPDF generieren Sie ein PDF mit einer Liste von Elementen. Mein problem ist, wenn das item Liste geht weiter zu einem zweiten oder Dritten Seite, ich will den Namen des Elements, Menge und Beschreibung zusammen. Gerade jetzt, wird es gehen, um eine zweite Seite, aber es kann split up alle details für ein bestimmtes Element. BITTE UM HILFE!!
<?php
require_once('auth.php');
require_once('config.php');
require_once('connect.php');
$sqlitems="SELECT * FROM $tbl_items WHERE username = '" . $_SESSION['SESS_LOGIN'] . "'";
$resultitems=mysql_query($sqlitems);
require_once('pdf/fpdf.php');
require_once('pdf/fpdi.php');
$pdf =& new FPDI();
$pdf->AddPage('P', 'Letter');
$pdf->setSourceFile('pdf/files/healthform/meds.pdf');
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx);
$pdf->SetAutoPageBreak(on, 30);
$pdf->SetTextColor(0,0,0);
$pdf->Ln(10);
while($rowsitems=mysql_fetch_array($resultitems)){
$pdf->SetFont('Arial','B',10);
$pdf->Cell(50,4,'Item Name:',0,0,'L');
$pdf->SetFont('');
$pdf->Cell(100,4,$rowsitems['itemname'],0,0,'L');
$pdf->SetFont('Arial','B',10);
$pdf->Cell(50,4,'Quantity:',0,0,'L');
$pdf->SetFont('');
$pdf->Cell(140,4,$rowsitems['itemqty'],0,1,'L');
$pdf->SetFont('Arial','B');
$pdf->Cell(50,4,'Description:',0,0,'L');
$pdf->SetFont('');
$pdf->Cell(140,4,$rowsitems['itemdesc'],0,1,'L');
}
$pdf->Output('Items.pdf', 'I');
?>
Du musst angemeldet sein, um einen Kommentar abzugeben.
bmb ist auf dem richtigen Weg. Hier ist ein wenig mehr detaillierte Lösung.
Gibt es eine Reihe von verschiedenen Möglichkeiten, dies zu tun, aber Sie müssen einige Entscheidungen treffen, die basieren auf, was Sie wollen. Wenn Sie Zeilen, dass kann dauern, bis die Hälfte der Seite, dann dies ist wahrscheinlich nicht zur Arbeit zu gehen, das beste für Sie, aber wenn Ihre Zeilen sind in der Regel über 2 - 5 Linien lang ist, dann ist dies eine gute Methode.
Weil meine erste Zelle in der Zeile ist ein Vielfaches gefüttert Zelle (MultiCell in FPDF sprechen) in meiner Tabelle die Zeilen der dynamischen Höhe basierend auf dieser ersten Zelle. So ich heraus, wie hoch die Zeile wird auf der Grundlage der string-Breite und der Breite der Zelle, und dann vergleichen Sie das mit dem Zimmer Links auf der Seite, auf der Grundlage der aktuellen Y-position, die Höhe und Seite am unteren Seitenrand:
Wie es scheint, haben Sie ein paar Optionen.
Können Sie verfolgen, wo Sie sind auf der Seite, wie Sie durch Ihre Schleife und die Ausgabe Ihrer eigenen Seite zu brechen, wenn Sie aus dem Raum laufen. Dies erfordert, dass Sie verwenden SetAutoPageBreak() zum deaktivieren der automatischen Seitenumbrüche.
Andere Methode ist das überschreiben der AcceptPageBreak () - Methode. Diese Methode wird automatisch aufgerufen, wenn ein Seitenumbruch eingefügt werden. Sie möchten den Wert FALSE zurück, wenn Sie wollen, squeeze eine weitere Zeile auf die aktuelle Seite, so dass Sie würde haben, um nachzuverfolgen, welche Details, die Sie gerade drucken.
Was über die "page-break-inside" - Eigenschaft? Ich habe versucht, es in eine Tabelle-und es hilft.
Ich hardcoded "page-break-inside" in-line css-Eigenschaft, um meine Zeile und diese Zeile hat keine Pause mehr, wenn es gesendet wurde, um das drucken von Seiten, die sich über zwei Seiten. Es wurde geschoben, entweder komplett auf die neue Seite oder Links auf der vorherigen. Vielleicht ist es nicht eine dynamische Korrektur (von der fPDF-Seite der Dinge), aber es immer noch das Problem behebt.