2013-03-06 17 views
8

Ho un PDF con campi modificabili. Desidero passare i valori da un modulo HTML in questo PDF. Ho provato a utilizzare FPDF e funziona, tuttavia i campi nel pdf non sono più modificabili dopo aver passato i valori al PDF.Inserire valori in PDF modificabile con PHP e tenerlo modificabile

Un altro svantaggio è che dobbiamo specificare le coordinate esatte per ogni campo quando si passano i valori al PDF. Qualche idea su altri strumenti che posso usare per mantenere il "PDF modificabile"?

ho usato il seguente codice per generare il pdf http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/

+0

La maggior parte delle librerie PDF che ho visto non hanno questa funzionalità. Una ricerca su Google ha rivelato questo: http://www.quickpdflibrary.com/faq/render-a-pdf-document-and-include-editable-form-fields.php –

+0

Grazie Matt. Fammi vedere questo. –

risposta

5

non sono riuscito a trovare un metodo di riempimento PDF in modo nativo in PHP che mi è piaciuto. Invece, io uso PHP per generare XFDF, quindi uso pdftk per inserirlo nel PDF compilabile. (Si noti che questo codice richiede campi del PDF di essere nominato.)

Ecco un esempio di funzione per generare XFDF da un array associativo:

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; 
} 

Poi, mi scrivono che XFDF in un file temporaneo.

$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); 
} 

Se fai vuole un PDF non modificabile, aggiungere la parola flatten nel comando prima della parola dont_ask.


Se non si è attaccato a riempire un modulo PDF, si potrebbe generare il form in HTML e, quindi utilizzare dompdf convertire da HTML a PDF.