2016-04-22 11 views
1

FPDFを使用してPDFドキュメントを作成するPHPスクリプトを作成しようとしています。これまでのところ、私はMySQLのクエリから返された行の数がページの高さよりも小さい場合にのみ、PDFを生成できます。Fpdfデータ行が最初のページの最後に届くときに別のページを追加

返される行の数が、最初のページが対応できるよりも大きい場合、残りの行は2番目のページにジャンプしますが、データは完全であり、列は整列せず、各ページが生成されるたびにステップダウンします。

私はある種の行/行数を所定の場所に置く必要があることを知っています。行/行数に達すると、新しいページを開始しますが、多くの記事を読んだ後でも、これがどのように行われたかに関する文書。

私が持っているコードはありません:

class PDF extends FPDF 
{ 

// Page footer 
function Footer() 
{ 
    // Position at 1.5 cm from bottom 
    $this->SetY(-15); 
    // Arial italic 8 
    $this->SetFont('Arial','I',8); 
    // Page number 
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); 
} 
} 

$pdf=new FPDF(); 
$pdf->AliasNbPages(); 
$pdf->AddPage('L'); 

$pdf->SetFont('Arial', 'B', 18); 
$pdf->Text(230, 18, 'iMaint'); 

$pdf->SetFont('Arial', 'B', 18); 
$pdf->Text(250, 18, 'Jobsheet'); 

$pdf->SetY(28); 
$pdf->SetX(10); 
$pdf->SetFont('Arial', '', 11); 
$pdf->Text(10, 28, 'Jobsheet date:'); 

$pdf->SetY(8); 
$pdf->SetX(37); 
$pdf->SetFont('Arial', '', 11); 
$pdf->cell(10,38, $ToDay); 

$pdf->SetY(13); 
$pdf->SetX(10); 
$pdf->SetFont('Arial', '', 11); 
$pdf->cell(10,38, 'Audit date:'); 

$pdf->SetY(13); 
$pdf->SetX(37); 
$pdf->SetFont('Arial', '', 11); 
$pdf->cell(10,38, date("d-m-Y", strtotime($row_RoomAudit['CompStamp']))); 

$pdf->SetFont('Arial', '', 12); 
$pdf->Text(240.5, 28, 'Hotel ID:'); 

$pdf->SetY(10); 
$pdf->SetX(183.2); 
$pdf->SetFont('Arial', 'B', 18); 
$pdf->Text(10, 18, 'Room:'); 

$pdf->SetFont('Arial', '', 12); 
$pdf->SetY(23); 
$pdf->SetX(260);  
$pdf->cell(14,8, $_SESSION['hotel']); 

$pdf->SetY(12); 
$pdf->SetX(30); 
$pdf->SetFont('Arial', 'B', 18); 
$pdf->cell(14,8, $row_RoomAudit['Room']); 

$pdf->Ln(10); 

//Fields Name position 
$Y_Fields_Name_position = 40; 
//Table position, under Fields Name 
$Y_Table_Position = 46; 

$pdf->SetFillColor(232,232,232); 
$pdf->SetFont('Arial','B',11); 
$pdf->SetY($Y_Fields_Name_position); 
$pdf->SetX(10); 
$pdf->Cell(32,6,'Seq',1,0,'L',1); 
$pdf->SetX(32); 
$pdf->Cell(130,6,'Item',1,0,'L',1); 
$pdf->SetX(130); 
$pdf->Cell(155,6,'Job description',1,0,'L',1); 

$pdf->Ln(); 

//Initialize the 3 columns and the total 
$column_seq = ""; 
$column_seq_header = ""; 
$column_job_description = ""; 
$column_completed = ""; 
$column_engineer = ""; 
foreach ($row_RoomAudit as $key => $val) { 
    if (strpos($val, '1') !== FALSE && substr($key, 0, 3)=='Seq'){ 
     mysql_select_db($database_iMaint, $iMaint); 
     $query_QuestionLookup = sprintf("SELECT SeqHeader, SeqText FROM SequenceNo WHERE SeqID = '".$key."'"); 
     $QuestionLookup = mysql_query($query_QuestionLookup, $iMaint) or die(mysql_error()); 
     $row_QuestionLookup = mysql_fetch_assoc($QuestionLookup); 
     $totalRows_QuestionLookup = mysql_num_rows($QuestionLookup); 

     $seq = $key; 
     $Seq_header = $row_QuestionLookup['SeqHeader']; 
     $jobdescription = $row_QuestionLookup['SeqText']; 

     $column_seq = $column_seq.$seq."\n"; 
     $column_seq_header = $column_seq_header.$Seq_header."\n"; 
     $column_job_description = $column_job_description.$jobdescription."\n"; 

     $pdf->SetFont('Arial','',8); 
     $pdf->SetY($Y_Table_Position); 
     $pdf->SetX(10); 
     $pdf->MultiCell(22,6,$column_seq,1); 
     $pdf->SetY($Y_Table_Position); 
     $pdf->SetX(32); 
     $pdf->MultiCell(98,6,$column_seq_header,1); 
     $pdf->SetY($Y_Table_Position); 
     $pdf->SetX(130); 
     $pdf->MultiCell(155,6,$column_job_description,1); 
    } 
} 


$i = 0; 
$pdf->SetY($Y_Table_Position); 
while ($i < $totalRows_RoomAudit) 
{ 
$pdf->SetX(10); 
$pdf->MultiCell(184,6,'',1); 
$i = $i +1; 
} 

$pdf->Output(); 

は誰が第二または第三というようにページ上のデータの残りのrwosを表示するに対処する方法を何も私にいくつかの助けを提供することができます。

お時間をいただき、ありがとうございます。

乾杯。

答えて

0

カウンタページ

あたりの最大レコードを超えた場合、ここであなたが

`$column_completed = ""; 
$column_engineer = ""; 
$max_per_page = 15; // adjust for your max per page this mean 16 record per page 
$counter_rec = 0; 
......` 

を追加する必要があるコードが新しいページを作成され、レコードを表示するページあたりの上限を持っていることを確認するページあたりの最大レコードを追加します。 if (strpos($val, '1') !== FALSE && substr($key, 0, 3)=='Seq'){ if ($counter_rec > 0 && $counter_rec % 15 == 0){ $pdf->AddPage('L'); // rewrite header for next page here } ......

その後あなたは$counter_recは常にそのことができます

希望をカウントアップを確認する必要があります助けられました

関連する問題