PDF Filler 是一項 RESTful 服務 (API),可協助完成現有的基於 PDF 的表單,並使 Web 開發人員能夠使用基於瀏覽器的表單和現代 Web 標準來促進資訊收集。
PDF Filler 幾乎適用於任何未加密的 PDF,支援可填寫(例如,具有預先定義輸入欄位的 PDF)和不可填寫(例如,掃描的 PDF)表單。只需將任意公開託管的 PDF 的 URL 傳遞給它即可。 PDF Filler 甚至可以自動建立在現有網頁中嵌入 HTML 表單所需的標記。
項目抽象化了pdftk和大蝦的填表邏輯。
PDF Filler 的工作原理是接受欄位名稱和值的 key => value 對。這些字段可以是可填寫的 PDF 表單字段,也可以是不可填寫字段的任意 x/y 座標。對於可填寫的 PDF,鍵應代表欄位名稱。在不可填寫的 PDF 中,鍵應表示如下所述的欄位座標(例如, 100,100
)。在這兩種情況下,欄位值都應包含該給定欄位的使用者輸入。
可以使用開源 PDF 公用程式 pdftk 在本機發現欄位名稱,也可以使用該服務動態發現欄位名稱。
取得給定 PDF 中所有欄位的列表
/fields?pdf={URL to the PDF}
取得給定 PDF 中所有欄位的 JSON 表示形式
/fields.json?pdf={URL to the PDF}
若要填寫 PDF,請向/fill
發出POST
請求。 POST 資料的格式為 key => value,其中 key 代表欄位名稱,value 代表欄位值。請務必傳遞「pdf」鍵以及要填寫的 PDF 的 URL。該服務將返回填寫的 PDF 作為下載。
注意:由於 HTML 處理表單的方式,某些特殊字元(例如方括號)將無法正確 POST 到服務。如果 PDF 欄位包含保留字符,只需在 POST 之前對欄位名稱進行 urlencode 即可。
取得任何可填入 PDF 表單的通用 HTML 表示
/form?pdf={URL To PDF}
不可填寫的 PDF(例如,掃描的或其他沒有結構化表單的 PDF)需要傳遞 X、Y 座標和(可選)頁碼。使用下列欄位命名約定傳遞此資料: x,y,page
(或簡稱x,y
),其中 X 和 Y 表示文件左下角的指標座標。如果未給予頁面,則將假定為第一頁。
資料可以透過程式設計方式(例如透過API)或作為標準的基於網路的表單提交。例如,要建立 HTML 表單,您可以如下操作:
< form method =" post " action =" /fill " >
<!-- A standard, fillable field, simply pass the field name -->
< label > First Name: < input type =" text " name =" first_name " /> < label >
<!-- A non-fillable field for which we pass coordinates -->
< label > Last Name: < input type =" text " name =" 100,100,1 " /> < label >
< input type =" submit " value =" Submit " />
</ form >
$ curl -L https://get.rvm.io | bash -s stable --ruby
)gem install bundler
)git clone [email protected]:GSA-OCSIT/pdf-filler.git
並cd
到目標目錄(最有可能是pdf-filler
)bundle install
要運行,只需從專案目錄運行命令ruby app.rb
即可。預設情況下,該服務將在連接埠4567
上公開。
您可以免費使用 PDF Filler 作為 Web 服務。但如果您想獲取原始程式碼並將其託管在本地,這實際上非常簡單。
PDF Filler 使用 pdftk 來處理表單填滿作業。 pdftk 可以免費下載並安裝在大多數系統上。如果安裝在/usr/local/bin/pdftk
以外的位置,請務必透過將環境變數PATH_TO_PDFTK
設定為正確的路徑來更新配置。
PDF Filler 使用 Ruby 編寫,並使用 Sinatra 產生 RESTful API
PDF Filler 很容易作為後端服務部署在您的伺服器上。請按照此處的說明進行操作:http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-which-i-employ-a-secretary/ 作為如何部署和設置的範例將應用程式作為您電腦上的後端服務啟動。有一個名為 daemon.rb 的檔案是用於此目的的應用程式的一部分。
該應用程式設計為託管在 Heroku 等託管服務上。如果使用 Heroku,請務必選擇「Bamboo」版本(使用 pdftk 編譯)並將PATH_TO_PDFTK
的環境配置設定為/usr/bin/pdftk
。
我們鼓勵任何人透過分叉和提交拉取請求來為該專案做出貢獻。 (如果您是 GitHub 新手,您可以從基本教學開始。)
透過對此專案做出貢獻,您將根據 MIT 授權條款向所有使用者授予全球範圍內的、免版稅、永久、不可撤銷、非排他性、可轉讓的授權。
該項目構成 17 USC 105 下的美國政府作品,並根據 MIT 授權條款進行分發。