如何使用foreach数组值PHP使用FPDF创建PDF?

时间:2016-10-23 17:01:27

标签: php arrays 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 个答案:

答案 0 :(得分: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;

?>