2012-09-10 14 views
6

मेरे पास यह लूप है जो लगभग 30 बार के लिए 6 पंक्तियां (मल्टीसेल) प्रिंट करता है। मुद्दा यह है कि जब यह नीचे के पृष्ठ तक पहुंचता है तो यह मल्टीसेल से 2 या 3 पंक्तियों को प्रिंट करता है और अगले पृष्ठ पर यह अन्य 3 पंक्तियों को प्रिंट करता है। यदि वर्तमान पृष्ठ पर सभी 6 पंक्तियों के लिए पर्याप्त जगह नहीं है तो मैं इसे अगले पृष्ठ पर सभी 6 पंक्तियां प्रिंट करना चाहता हूं। मैं इस कोड का उपयोग करें:fpdf पेज ब्रेक इश्यू

$height_of_cell = 60; mm 
$page_height = 279.4; // mm (portrait letter) 
$bottom_margin = 20; // mm 
$space_left = $page_height - $p->GetY(); // space left on page 
$space_left -= $bottom_margin; // less the bottom margin 
if ($height_of_cell >= $space_left) { 
$p->Ln();       
$p->AddPage(); // page break 
$p->Cell(100,5,'','B',2); // this creates a blank row for formatting reasons 
} 

लेकिन यह काम नहीं करता। कोई समाधान? धन्यवाद!

उत्तर

19

वर्तमान स्थिति प्राप्त करने के लिए GetY का उपयोग करें, इसे अपने दस्तावेज़ की ऊंचाई से घटाएं। यदि यह आपकी मल्टीसेल ऊंचाई 6x से कम है (आपके पास 6 पंक्तियां हैं), तो AddPage का उपयोग करके पृष्ठ ब्रेक को मजबूर करें।

मुझे पता है कि आपने इसे ठीक किया है, लेकिन किसी और के लाभ के लिए, इसे एक व्यापक विचार देना चाहिए।

<?php 
$p = new FPDF(); 
$p->AddPage(); 
$p->SetFont('Arial','B',16); 
$p->SetAutoPageBreak(false); 
$height_of_cell = 60; // mm 
$page_height = 286.93; // mm (portrait letter) 
$bottom_margin = 0; // mm 
    for($i=0;$i<=100;$i++) : 
    $block=floor($i/6); 
    $space_left=$page_height-($p->GetY()+$bottom_margin); // space left on page 
     if ($i/6==floor($i/6) && $height_of_cell > $space_left) { 
     $p->AddPage(); // page break 
     } 
    $p->Cell(100,10,'This is a text line - Group '.$block,'B',2); 
    endfor; 
$p->Output(); 
?> 
+0

हाय, मैंने इस तरह के कोड को संशोधित किया, लेकिन यह कुछ भी नहीं करता है। क्या आप कहीं एक त्रुटि देखते हैं? –

+0

मैंने इसे समझ लिया। यह अब काम कर रहा है। –

+0

जीरेट - आगे मेरी सहायता के लिए मेरा जवाब संपादित कर रहा था :) – Mark

संबंधित मुद्दे