您需要即时创建表格,还是可以使用 PDF 表单并通过代码填写,完成后将其合并为静态 PDF?
如果表单对你有用的话....
1) 创建 PDF 表单。我用 OpenOffice 来做这件事......
2) 获取form的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;
?>