2013-03-06 4 views
8

Ich habe ein PDF mit editierbaren Feldern. Ich möchte Werte aus einem HTML-Formular in dieses PDF übertragen. Ich habe versucht, mit FPDF und es funktioniert, aber die Felder in der PDF sind nicht mehr bearbeitbar nach dem Übergeben der Werte an die PDF.Fügen Sie Werte in editierbare PDF mit PHP, und behalten Sie sie editierbar

Ein weiterer Nachteil ist, dass wir genaue Koordinaten für jedes Feld angeben müssen, wenn Sie die Werte an die PDF übergeben. Irgendwelche Ideen zu anderen Tools, die ich verwenden kann, um die "PDF EDITABLE" zu behalten?

habe ich den folgenden Code pdf http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/

+0

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 –

+0

Danke Matt. Lass mich das sehen. –

Antwort

5

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.

Verwandte Themen