2013-03-06 8 views
8

मेरे पास संपादन योग्य फ़ील्ड वाले पीडीएफ हैं। मैं इस पीडीएफ में एचटीएमएल फॉर्म से मूल्यों को पास करना चाहता हूं। मैंने एफपीडीएफ का उपयोग करने की कोशिश की है और यह काम करता है, हालांकि पीडीएफ में फ़ील्ड पीडीएफ में मूल्यों को पार करने के बाद संपादन योग्य नहीं हैं।PHP के साथ संपादन योग्य पीडीएफ में मान डालें, और इसे संपादन योग्य रखें

एक और कमी यह है कि हमें पीडीएफ के मूल्यों को पार करते समय प्रत्येक क्षेत्र के लिए सटीक निर्देशांक निर्दिष्ट करना होगा। अन्य टूल्स पर कोई विचार जो मैं "पीडीएफ संपादन" रखने के लिए उपयोग कर सकता हूं?

मैं पीडीएफ http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/

+0

मैंने देखा है कि अधिकांश पीडीएफ पुस्तकालयों में यह सुविधा नहीं है। एक Google खोज ने हालांकि यह खुलासा किया: http://www.quickpdflibrary.com/faq/render-a-pdf-document-and-include-editable-form-fields.php –

+0

धन्यवाद मैट। मुझे यह देखने दो। –

उत्तर

5

उत्पन्न करने के लिए मैं मूल रूप से PHP में एक पीडीएफ भरने विधि है कि मैं वास्तव में पसंद खोजने में असमर्थ था निम्नलिखित कोड का इस्तेमाल किया। इसके बजाय, मैं एक्सएफडीएफ उत्पन्न करने के लिए PHP का उपयोग करता हूं, फिर मैं इसे भरने योग्य पीडीएफ में धक्का देने के लिए pdftk का उपयोग करता हूं। (ध्यान दें कि यह कोड नाम दिया जा करने के लिए अपने पीडीएफ क्षेत्रों की आवश्यकता है।)

यहाँ एक साहचर्य सरणी से XFDF उत्पन्न करने के लिए एक उदाहरण समारोह है:

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

फिर, मुझे लगता है कि XFDF एक अस्थायी फ़ाइल के लिए लिखें।

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

आप कर तो गैर-संपादन योग्य पीडीएफ चाहते हैं, शब्द dont_ask से पहले आदेश में शब्द flatten जोड़ें।


आप एक PDF फार्म भरने से जुड़ी नहीं कर रहे हैं, तो आप के रूप में अच्छी HTML में प्रपत्र उत्पन्न कर सकता है, तो dompdf का उपयोग HTML से पीडीएफ कन्वर्ट करने के लिए।

संबंधित मुद्दे