fpdf - neue Seite, wenn inhalt nicht auf aktuelle Seite passt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fpdf - neue Seite, wenn inhalt nicht auf aktuelle Seite passt

    Hallo,

    ich bin dabei ein PDF mit fpdf zu erstellen.
    Es sollen Geräte ausgegeben werden, die in Kategorieen aufgeteilt sind. Mein Proplem bei der Sache ist, dass wenn die Seite voll ist automatisch eine neue Seite angefangen wird und u.u. der Kategoriename noch auf der alten Seite steht und die Geräte dann auf der neuen. Jetzt müsste ich irgendwie überprüfen, ob die Kategorie mit allen Geräten noch auf die aktuelle Seite passt und wenn nicht soll eine neue Seite angefangen werden.

    Der bisherige Quelltext:
    PHP-Code:
    $pdf=new RPDF();
    $pdf->AddPage();
    $pdf->SetFont($FontFace,'',$FontSize);
    // Kategorieen und die darin enthaltenen Geraete ausgeben
    $KatResult mysql_query("SELECT * from fachb_geraetekat ORDER BY KatName");
    while(
    $KatLine = @mysql_fetch_object($KatResult)) {
      
    $pdf->SetFont($FontFace,'B',$FontSize); // Schrift auf Fett umstellen
      
    $pdf->Cell($maxX-10,4,$KatLine->KatName,'B',1,'L'); // Kategorienamen ausgeben
      
    $pdf->SetFont($FontFace,'',$FontSize); // Schrift wieder zurueckstellen

      
    $GerResult mysql_query("select * from fachb_geraete WHERE KatID = '$KatLine->id' ORDER BY GeraeteName");
      while(
    $GerLine = @mysql_fetch_object($GerResult)) {
        
    $pdf->Cell(3,4,'','B',0,'L'); // Zeile einrueken
        
    $pdf->Cell($maxWidth,4,$GerLine->GeraeteName,'B',0,'L'); // Geraetenamen ausgeben
        
    $bgcol="1";
        for(
    $n="0";$n<sizeof($OVID);$n++){
          
    $AnzResult mysql_query("select * from fachb_anzgeraetproov WHERE GeraeteID = '$GerLine->id' AND OVID = '$OVID[$n]'");
          
    $AnzLine mysql_fetch_object($AnzResult);
          if(isset(
    $AnzLine->Anz) AND $AnzLine->Anz!="0"$Anz=$AnzLine->Anz// Nur wenn ein Wert und keine 0 das Ergebniss ist, etwas ausgeben
          
    else $Anz="";
          if(
    $bgcol %2$pdf->SetFillColor(204255255);
          else 
    $pdf->SetFillColor(153204255);
          
    $pdf->Cell(5,4,$Anz,'T',0,'C',1);
          
    $bgcol++;
        }
        
    $pdf->SetFillColor(000);
        
    $pdf->Ln();
      }
      
    $pdf->Cell($maxX-10,4,'','T',1,'C');
    }
    $pdf->Output(); 
    Wie kann man das am einfachsten umsetzen?

    Gruß, spikis

  • #2
    du kannst jederzeit mir $pdf->AddPage(); eine neue seite hinzufügen und alle weiteren ausgaben sind dann auf der neuen seite...
    musst du notfalls ausprobieren ab welchem y wert eine neue seite angelegt werden soll.

    Kommentar


    • #3
      Oder addiere alle Zeilenhöhen, abstände usw. und prüfe vor jeder neuen Kategorie, wie gross dein Dokument im Vergleich zur Seitenhöhe ist.

      Kommentar


      • #4
        Hallo,

        danke erstmahl für die Hilfe.

        Wie ist denn der maximale Y-Wert bei einem A4 Dokument?

        Gruß, spikis

        Kommentar


        • #5
          DIN A4 = 210mm x 297mm wenn ich mich nicht irre, wieviel Rand du da jetzt einkalkulieren willst, bleibt dir überlassen
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar

          Lädt...
          X