2015-11-10 184 views
11

我試圖用程序來填寫使用紅寶石的pdf。 PDF格式有文本允許要輸入字段:使用紅寶石填充PDF表格

screenshot of pdf fields

我已經在通過pdf_form寶石使用pdftk過去的成功,但是它沒有找到在這個特殊的PDF格式的字段:

$ pry 
[1] pry(main)> require 'pdf_forms' 
=> true 
[2] pry(main)> pdftk = PdfForms.new('/usr/local/bin/pdftk') 
=> #<PdfForms::PdftkWrapper:0x007fece7af6d98 @options={}, @pdftk="/usr/local/bin/pdftk"> 
[3] pry(main)> pdftk.get_field_names('designation.pdf') 
=> [] 

我如何使用Ruby填寫PDF?

+0

我似乎無法從您在OP中的鏈接中獲取實際的PDF文件。你碰巧知道你在文檔中有什麼樣的PDF格式?有幾種不同的類型,這個特定的類型可能不受支持。 –

+0

沒有嘗試,但你可能想嘗試https://github.com/abevoelker/pdf_ravager [注:JRuby的只有] – Nimir

+0

的PDF包含純XFA表單(XFA表單是不PDF規範和的一部分,因此, ,沒有普遍支持)。 – mkl

回答

5

pdf-form寶石將只爲pdf生成的Adob​​e Acrobat。請點擊此issue

確保在您的PDF,您可以通過使用Adobe Acrobat創建文本字段

+0

PDFTK安裝失敗在埃爾卡皮坦10.11 –

+0

修復的詳細位置:https://gist.github.com/jvenator/9672772a631c117da151#gistcomment-1607813 – rylanb

5

PDFTK無非是利用GCJ編譯一個強大的舊版本的iText的更多。只要表單包含使用AcroForm技術定義的字段,就可以使用PdfTk填寫表單。對於您所指的表單,情況並非如此。我已經打開了形式iText RUPS,這是我看到的時候我看錶單標籤內:

enter image description here

你看到/Fields陣列?它是空的:[]。這意味着PdfTk無法填寫。那麼表格在哪裏?

該表單使用XML Forms Architecture(XFA)進行描述。沒有太多的軟件產品可以填寫XFA表單。哎呀,沒有太多的PDF查看器允許您查看錶單。例如,這是我看到的時候我在瀏覽器中打開窗體:

enter image description here

我知道的兩條產品線,能滿足您的需求:

  1. Adob​​e軟件:例如的Adobe LiveCycle ES。 iText軟件:您可以通過注入XML(參見How can I set XFA data in a static XFA form in iTextSharp and get it to save?)來填寫iTPLT格式的iTep文件;您可以使用iText的XFA Worker將表單扁平化(請參閱How can I flatten a XFA PDF Form using iTextSharp?)。

作爲iText集團的首席執行官,我推薦使用iText(如果您使用的是PdfTk,您已經使用舊版本)。 iText作爲Java庫提供,因此使用JRuby是您最好的機會來滿足您的需求。

另一種選擇是對的形式完全重新設計成基於AcroForm技術而非技術XFA表單。