Ich war nicht in der Lage zu erzeugen, eine PDF-Füllverfahren nativ in PHP zu finden, die mir sehr gut gefallen. Stattdessen benutze ich PHP, um XFDF zu erzeugen, dann benutze ich pdftk, um es in das ausfüllbare PDF zu schieben. (Beachten Sie, dass dieser Code Ihrer PDF-Dateien Felder erfordert namentlich genannt werden.)
Hier ist ein Beispiel Funktion XFDF aus einem assoziativen Array zu erzeugen:
function forge_xfdf($file,$info,$enc='UTF-8'){
$data='<?xml version="1.0" encoding="'.$enc.'"?>'."\n".
'<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">'."\n".
'<fields>'."\n";
foreach($info as $field => $val){
$data.='<field name="'.$field.'">'."\n";
if(is_array($val)){
$data.='<</T('.$field.')/V[';
foreach($val as $opt)
$data.='<value>'.$opt.'</value>'."\n";
}else{
$data.='<value>'.$val.'</value>'."\n";
}
$data.='</field>'."\n";
}
$data.='</fields>'."\n".
'<ids original="'.md5($file).'" modified="'.time().'" />'."\n".
'<f href="'.$file.'" />'."\n".
'</xfdf>'."\n";
return $data;
}
Dann schreibe ich, dass XFDF in eine temporäre Datei.
$empty_form = '/path/to/fillable/pdf/form.pdf'
$fdf_filename = tempnam(PDF_TEMP_DIR, 'fdf');
$output_filename = tempnam(PDF_TEMP_DIR, 'pdf');
$fdf_data = forge_xfdf($empty_form, $data, 'UTF-8');
if($fdf_fp = fopen($fdf_fn, 'wb')){
fwrite($fdf_fp, $fdf_data);
fclose($fdf_fp);
$command = '/usr/local/bin/pdftk "'.$empty_form.'" fill_form "'.$fdf_filename.'" output "'.$output_file.'" dont_ask';
passthru($command);
// SEND THE FILE TO THE BROWSER
unlink($output_file);
unlink($fdf_filename);
}
Wenn Sie tun wollen eine nicht editierbare PDF, fügen Sie das Wort flatten
in dem Befehl vor dem Wort dont_ask
.
Wenn Sie ein PDF-Formular zum Ausfüllen nicht gebunden sind, können Sie das Formular in HTML generieren und dann dompdf verwenden von HTML in PDF zu konvertieren.
Die meisten PDF-Bibliotheken, die ich gesehen habe, haben diese Funktion nicht. Eine Google-Suche ergab dies jedoch: http://www.quickpdflibrary.com/faq/render-a-pdf-document-and-include-editable-form-fields.php –
Danke Matt. Lass mich das sehen. –