Я использую PHP, FPDF для создания PDF-файла из файла FDF, а затем вставляю в файл PDF изображение qrcode.Я продолжал сталкиваться с проблемами, потому что мой пустой PDF-файл имеет встроенные поля формы, а вставка графики с другими программами стерла мои поля формы.Я наконец-то понял.Надеюсь, что это поможет кому-то еще, кто борется с тем же.
Я работаю в похоронном бюро, если какое-либо из имен var бросит вас, и этот код не отшлифован, его вырезали и вставили из множества различных источников;)
Я использую следующие библиотеки http://www.fpdf.org/ и http://phpqrcode.sourceforge.net/
for($count=0;$count<$doc_list_length;$count++){
//create FDF file
$id = rand(11111,99999);
$filename = $populated_pdf_path . $casenumber.$doc_list[$count].".fdf";
$file = fopen($filename,"w");
$filecontents = "%FDF-1.2". PHP_EOL;
$filecontents .= "%âãÏÓ" . PHP_EOL;
$filecontents .= "1 0 obj" . PHP_EOL;
$filecontents .= "<<" .PHP_EOL;
$filecontents .= "/FDF << /Fields [ ";
$filecontents .= "<</T(name)/V($name)>>";
$filecontents .= "] " . PHP_EOL;
$filecontents .= "/F (empty_pdf/$doc_list[$count].pdf) ";
$filecontents .= "/ID [ <$id>" . PHP_EOL;
$filecontents .= "] >> " . PHP_EOL;
$filecontents .= ">> ". PHP_EOL;
$filecontents .= "endobj" . PHP_EOL;
$filecontents .= "trailer" . PHP_EOL;
$filecontents .= "<<" . PHP_EOL;
$filecontents .= "/Root 1 0 R" . PHP_EOL . PHP_EOL;
$filecontents .= ">>" . PHP_EOL;
$filecontents .= "%%EOF";
fwrite($file, $filecontents);
fclose($file);
//insert image on this document only
//generate qrcode
if($doc_list[$count] == "checklist"){
$qrCodeFileName = $cemetery."qrcode.png";
if(!file_exists($populated_pdf_path.$qrCodeFileName)){
include('include/phpqrcode/qrlib.php');
$codeContents = "http://www.asuperduperwebaddress.com";
QRcode::png($codeContents, $populated_pdf_path.$qrCodeFileName);
}
if(!file_exists($populated_pdf_path.$cemetery."qrcode.pdf")){
//make pdf with image
require_once('include/fpdf.php');
$image = $populated_pdf_path.$qrCodeFileName;
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image($image, 183, 250, 25, 25, 'PNG' );
$pdf->Output( $populated_pdf_path.$cemetery."qrcode.pdf");
}
//setup file paths for pdf output
$tempFile = $populated_pdf_path . $casenumber.$doc_list[$count]."temp.pdf";
$pdfExampleFile = $populated_pdf_path . $casenumber.$doc_list[$count].".pdf";
$pdfFile = $empty_pdf_path . $doc_list[$count] . ".pdf";
if($doc_list[$count] == "checklist")
$fdfFile = $filename;
$fdfTemplateFile = $filename;
//fill pdf
$command = "pdftk $pdfFile fill_form $fdfTemplateFile output $tempFile 2> fill_form.log";
passthru($command);
//stamp pdf with qrcode
$command = "pdftk " . $tempFile . " stamp " . $populated_pdf_path.$cemetery . "qrcode.pdf output " . $pdfExampleFile;
passthru($command);
}
else{
//setup file paths for pdf output
$pdfExampleFile = $populated_pdf_path . $casenumber.$doc_list[$count].".pdf";
$pdfFile = $empty_pdf_path . $doc_list[$count] . ".pdf";
if($doc_list[$count] == "checklist")
$fdfFile = $filename;
$fdfTemplateFile = $filename;
//fill pdf
$command = "pdftk $pdfFile fill_form $fdfTemplateFile output $pdfExampleFile 2> fill_form.log";
passthru($command);
}
}