Създаване PDF файл от SQL заявка

В този пост искам да ви покажа как може да създавате .pdf файл след като имате някакви данни (най-често получени от базата с данни).
Нека предположим че имаме php код, чрез който ще правим заявка към базата с данни и върнатите резултати от там ще бъдат поставени в новосъздаден .pdf файл. Ето и кода с който става това:

<?php

require_once(‘DBConnection.php’);
require_once(‘fpdf.php’);

//съдържанието на файла fpdf.php

//може да намерите тук

$query = “SELECT * FROM table WHERE id IN(1,2,3,4,5)”;

$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);

//за всеки ред от БД,

//добавяме поле към съответната колона

$colum_name = array();
$out = array();
$columns = mysql_num_fields($result);

for($i = 0; $i < $columns; $i++){

$l = mysql_field_name($result, $i);
$colum_name[$i] = $l;

}

while($l = mysql_fetch_array($result)){

for($i = 0; $i < $columns; $i++){

if($colum_name[$i] == ‘birthday’)

$out[$i] .= (date(‘d-M-Y’, strtotime($l[$colum_name[$i]])).”\n”);

else

$out[$i] .= ($l[$colum_name[$i]].”\n”);

}

}

mysql_close();

//създаваме нов PDF файл с помощта на

//библиотеката fpdf.php

$pdf=new FPDF();
$pdf->AddPage();

//Задаваме позицията на имената на колоните
$Y_Fields_Name_position = 20;
//Задаваме позицията на самите колони под имената им
$Y_Table_Position = 26;

//Първо се създава всяко име на поле
//Задава се сив фон н имената на полетата

$pdf->SetFillColor(232,232,232);

//Задава се удебелен фон на имената на полетата

$pdf->SetFont(‘Arial’,’B’,12);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(10);
$pdf->Cell(30,6,’Fisrt name’,1,0,’L’,1);
$pdf->SetX(40);
$pdf->Cell(30,6,’Surname’,1,0,’L’,1);
$pdf->SetX(70);
$pdf->Cell(10,6,’Sex’,1,0,’L’,1);
$pdf->SetX(80);
$pdf->Cell(55,6,’Email’,1,0,’L’,1);
$pdf->SetX(135);
$pdf->Cell(40,6,’Phone’,1,0,’L’,1);
$pdf->SetX(175);
$pdf->Cell(40,6,’Birthday’,1,0,’L’,1);

//Добавя се нов ред във файла
$pdf->Ln();

//Записват се стойностите в колоните

//За всяка една клетка се задават размери

$pdf->SetFont(‘Arial’,”,12);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(10);
$pdf->MultiCell(30,6,$out[0] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->MultiCell(30,6,$out[1] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(70);
$pdf->MultiCell(10,6,$out[2] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(80);
$pdf->MultiCell(55,6,$out[3] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(135);
$pdf->MultiCell(40,6,$out[4] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(175);
$pdf->MultiCell(40,6,$out[5] ,1);

$pdf->SetY($Y_Table_Position);

//Създават се кутиите (boxes) за всеки един ред

$i = 0;
$pdf->SetY($Y_Table_Position);
while($i < $num_rows){

$pdf->SetX(10);
$pdf->MultiCell(200,6,”,1);
$i = $i +1;

}

//Връща се изходния pdf файл

$pdf->Output();

?>

По този начин може да създавате автоматично Ваши .pdf файлове, които да съдържат справки направени от данните в базата с дани. Показаният код в този пост е само сървърната част, необходима за създаването на .pdf файла и записването на данните в  него. JavaScript частта е същата както при обикновените Ajax заявки.

One thought on “Създаване PDF файл от SQL заявка

Leave a Reply

Your email address will not be published. Required fields are marked *