2015-05-14 116 views
0

我已經在白天搜索了幾天,但還沒有找到我的問題的解決方案呢。以html格式提交嵌入式pdf

理想情況下,我想將可填寫的pdf表單嵌入到Intranet html表單中,以便提交給服務器進行處理(能夠解析字段/值將是肉汁,但不是必需的)。這些文件都在同一個域中,所以沒有跨域問題。我知道我可以向pdf表單本身添加提交功能,但是1)腳本功能超出了pdf文檔管理員的能力,我不想這樣做,2)有數百個pdf文檔,3)我需要附加腳本字段/值與表單一起提交,4)我希望pdf文檔包含在登錄會話中。到目前爲止,服務器日誌顯示所有字段/值,但傳遞的PDFInput參數除外,但該值爲空。

這是我到目前爲止有:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
<script> 
    $(document).ready(function() { 
     $(uploadForm).on("submit", function(event) { 
      var iframe = document.getElementById('PDFObj'); 
      var iframeDocument = [iframe.contentDocument || iframe.contentWindow.document]; 

      var pluginData = iframeDocument; 
      $(this).append('<input type="file" name="PDFInput" id="PDFInput" value="' + pluginData + '" style="visibility:hidden"/>'); 
      return true; 
     }); 
    }); 
</script> 

<form enctype="multipart/form-data" method="post" name='uploadForm' id='uploadForm'> 
    <input type='hidden' name='rm' id='rm' value='uploadFile'> 
    <table align='center'> 
     <tr> 
      <td align='left'> 
       <strong>Notes:</strong> 
       <br> 
       <textarea cols='80' rows='2' name='notes' id='notes'></textarea> 
       <br> 
       <br> 
      </td> 
     </tr> 
     <tr> 
      <td colspan=2 align='center'> 
       <input type='submit'> 
      </td> 
     </tr> 
     <tr> 
      <td colspan=2> 
       <br> 
       <input type='hidden' name='formid' id='formid' value='6F45B3AF-91F3-108C-D3D9-701F541B49DC'> 
       <iframe type='application/pdf' src="url.pl?formid=6F45B3AF-91F3-108C-D3D9-701F541B49DC.pdf" height='800' width='1000' name='PDFObj' id='PDFObj'> 
      </td> 
     </tr> 
    </table> 
</form> 

我試着用iframe,並設置輸入型=「對象」沿對象嵌入它,但我可以」沒有任何組合可以工作。

這甚至可能嗎?有更好的方法嗎?

+0

嗯有趣。您可以使用'pdf.js'查看PDF客戶端,然後在提交時,'填充'填充的版本,將其轉換爲base64字符串並將其提交回服務器。這看起來相關:https://stackoverflow.com/questions/13538832/convert-pdf-to-a-base64-encoded-string-in-javascript – lispHK01

回答

0

據我所知,你不能直接從HTML那樣捕獲PDF數據。您最好的選擇是將提交功能添加到PDF中,然後使用服務器端腳本處理生成的FDF數據。

您將需要將Submit a Form按鈕添加到您的PDF或修改現有的按鈕。確保PDF中的表單操作在URI後面有​​(例如https://example.com/process.php#FDF)。

解析數據服務器端很簡單。我不知道你用的是什麼服務器端語言,但這裏是一個PHP代碼片段

<?php // process.php, report the data we received 
echo '<h2>GET Data</h2>'; 
foreach($_GET as $key => $value) { 
    echo '<p>Key: '.$key.', Value: '.$value.'</p>'; 
} 
echo '<h2>POST Data</h2>'; 
foreach($_POST as $key => $value) { 
    echo '<p>Key: '.$key.', Value: '.$value.'</p>'; 
} 

注意,一個PDF只使用Web瀏覽器的內側觀察正確的web服務器進行交互。

我不知道有一種可靠的方式來以編程方式向PDF添加提交按鈕,我也不知道可靠的轉換方法。你是在一個搖滾和困難的地方在這裏恕我直言。

更多信息: