#php #arrays #pdf #fpdf
#php #массивы #PDF #fpdf
Вопрос:
Я новичок в использовании FPDF. Я столкнулся с реальной проблемой. У меня есть несколько значений базы данных, которые хранятся в массивах, подобных этому.
foreach($values as $value){
$arr1[]=$value['user_name'];
$arr2[]=$value['last_name'];
}
$value['user_name'] is database table1, $value['last_name'] is database table2
Я хочу создать таблицу PDF, используя эти значения.
Кто-нибудь может подсказать мне, как решить эту реальную проблему?
Ответ №1:
Вам нужно создавать таблицу на лету, или вы можете использовать PDF-форму и заполнить ее с помощью кода, объединив ее в статический PDF-файл, когда закончите?
Если у вас будет работать форма….
1) Создайте форму PDF. Для этого я использую OpenOffice… 2) Получите файл шаблона FDF вида. На компьютере с Linux (я использую Mint, но Mint, Ubuntu или Debian должны работать таким образом) установите пакет pdftk и используйте команду pdftk для создания файла шаблона FDF
pdftk demo3.pdf generate_fdf
Вы должны увидеть имена полей данных вашей формы в результирующем выходном файле.
3) Заполните его с помощью PHP, возможно, «поставьте штамп» на изображение или другой файл PDF (т. Е. создайте сертификат с «подписью») и отправьте его клиенту.
<?php
include('./fpdf/fpdf.php');
// set up a bunch of temp file names
$FDFfile = tempnam(sys_get_temp_dir(), gethostname());
$tempPDF=tempnam(sys_get_temp_dir(), gethostname());
$PDFfile=tempnam(sys_get_temp_dir(), gethostname());
$ImageFileName=tempnam(sys_get_temp_dir(), gethostname());
$ImagePDFfilename=tempnam(sys_get_temp_dir(), gethostname());
// build our FDF data file string
//
// bring in top part of FDF file
$dataFile=file_get_contents("header.fdf");
// insert our participants name in the right spot
$dataFile.="<< /T (part_name) /V (".$_POST['lis_person_name_full'].") >> n";
// finish the FDF file
$dataFile.=file_get_contents("footer.fdf");
// put the FDF data into the tempfile
file_put_contents($FDFfile, $dataFile);
// use pdftk to merge data/pdf form and then
// flatten to prevent editing
exec("pdftk demo3.pdf fill_form ".$FDFfile." output ".$tempPDF." flatten");
// create a new PDF file wtih our image code on it
$pdf = new FPDF();
$pdf->AddPage();
// put image in bottom right corner of US letter paper
$pdf->Image($ImageFileName, 183, 250, 25, 25, 'PNG' );
$pdf->Output("F",$ImagePDFfilename);
// use pdftk to "stamp" the contents of one pdf onto the other
exec("pdftk ".$tempPDF." stamp ".$ImagePDFfilename." output ".$PDFfile);
// send final pdf file to browser
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename=certificate.pdf' );
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($PDFfile));
readfile($PDFfile);
// get rid of temp files
unlink($FDFfile);
unlink($tempPDF);
unlink($PDFfile);
unlink($ImageFileName);
unlink($ImagePDFfilename);
exit;
?>