Я использую плагин FPDF php для создания PDF из моей таблицы SQL. PDF разбивается на три столбца с помощью функций SetCol()
и AcceptPageBreak()
.
Однако при создании PDF-файла первый столбец на каждой новой странице не показывает заголовки.
Я пытался добавить Cell()
в оператор else в функции AcceptPageBreak()
, но он продолжает перекрывать первую строку. Плюс последняя страница даже не показывает строку заголовка.
Может кто-нибудь сказать мне, как к строке заголовка в первом столбце каждой новой добавляемой страницы?
Мне удалось установить заголовки в последних двух столбцах, но по некоторым причинам он не работает для первого.
Мой код:
function output_pdf($id) {
global $wpdb;
if ( $wpdb->get_var( $wpdb->prepare( 'SELECT * FROM wp_tickets WHERE lottery_id= %d AND used = %d', $id, 1 ) ) ) {
$log = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM wp_tickets WHERE lottery_id=%d AND used = %d', $id, 1 ) );
global $pdf;
$title_line_height = 10;
$content_line_height = 8;
$pdf->AddPage('L');
$pdf->SetFont( 'Arial', '', 42 );
$header = array('Order Number', 'Full name (Billing)', 'Draw #');
$pdf->SetFont( 'Arial', 'B', 8);
$pdf->Cell(20,5,'Order Number', 1);
$pdf->Cell(35,5, 'Full name (billing)', 1);
$pdf->Cell(25,5, 'Draw #' ,1);
$pdf->Ln();
$i = 0;
foreach( $log as $row ) {
if($i%2 == 0) :
$pdf->setFillColor(255,255,255);
else :
$pdf->setFillColor(230,230,230);
endif;
$pdf->SetFont( 'Arial', '', 8 );
$pdf->Cell(20,5,$row->order_id, 1, 0, 'C', true);
$pdf->Cell(35,5, $row->first_name .' '. $row->last_name,1, 0, 'C', true);
$pdf->Cell(25,5,$row->ticket_number,1, 0, 'C', true);
$pdf->Ln();
$i++;
}
}
$pdf->Output('D','atomic_smash_fpdf_tutorial.pdf');
exit;
}
var $col = 0;
function SetCol($col)
{
// Move position to a column
$this->col = $col;
$x = 10+$col*98;
$this->SetLeftMargin($x);
$this->SetX($x);
}
function AcceptPageBreak()
{
if($this->col<3)
{
// Go to next column
$this->SetCol($this->col+1);
$this->SetY(10);
$this->SetFont( 'Arial', 'B', 8);
$this->Cell(20,5,'Order Number', 1);
$this->Cell(35,5, 'Full name (billing)', 1);
$this->Cell(25,5, 'Draw #' ,1);
$this->SetFont( 'Arial', '', 8 );
$this->Ln();
return false;
}
else
{
// Go back to first column and issue page break
$this->SetCol(0);
$this->SetY(10);
$this->SetFont( 'Arial', 'B', 8);
$this->Cell(20,5,'Order Number', 1);
$this->Cell(35,5, 'Full name (billing)', 1);
$this->Cell(25,5, 'Draw #' ,1);
$this->SetFont( 'Arial', '', 8 );
$this->Ln();
return true;
}
}