2013-03-06 3 views
8

Mam plik PDF z polami do edycji. Chciałbym przekazać wartości z formularza HTML do tego pliku PDF. Próbowałem używać FPDF i działa, jednak pola w pliku pdf nie są już edytowalne po przekazaniu wartości do pliku PDF.Wstaw wartości do edytowalnego pliku PDF z PHP i pozostaw to do edycji.

Inną wadą jest to, że musimy podać dokładne współrzędne dla każdego pola podczas przekazywania wartości do pliku PDF. Wszelkich pomysłów na temat innych narzędzi, których mogę użyć, aby zachować "PDF EDYTUJ"?

Użyłem następujący kod do generowania PDF http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/

+0

Większość bibliotek PDF, które widziałem, nie ma tej funkcji. Wyszukiwarka Google ujawniła to jednak: http://www.quickpdflibrary.com/faq/render-a-pdf-document-and-include-editable-form-fields.php –

+0

Dzięki Matt. Pozwól mi to zobaczyć. –

Odpowiedz

5

byłem w stanie znaleźć sposobu napełniania PDF natywnie w PHP, które bardzo lubiłem. Zamiast tego, używam PHP do generowania XFDF, a następnie używam pdftk, aby wypchnąć go do wypełnianego pliku PDF. (Zauważ, że ten kod wymaga pola plik PDF, który ma być nazwane.)

Oto funkcja przykład wygenerować XFDF z tablicy asocjacyjnej:

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

Następnie piszę że XFDF do pliku tymczasowego.

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

Jeśli zrobić chcą nie można edytować pliki PDF, należy dodać słowo flatten w poleceniu przed słowem dont_ask.


Jeśli nie są dołączone do wypełniania formularza PDF, można wygenerować formularz w formacie HTML, jak również, a następnie użyć dompdf przekonwertować z HTML do PDF.

Powiązane problemy