PDF Filler adalah layanan RESTful (API) untuk membantu pengisian formulir berbasis PDF yang ada dan memberdayakan pengembang web untuk menggunakan formulir berbasis browser dan standar web modern untuk memfasilitasi pengumpulan informasi.
PDF Filler berfungsi dengan hampir semua PDF yang tidak terenkripsi, mendukung formulir yang dapat diisi (misalnya, PDF dengan kolom entri yang telah ditentukan sebelumnya) dan tidak dapat diisi (misalnya, PDF yang dipindai). Cukup berikan URL-nya ke PDF yang dihosting secara publik. PDF Filler bahkan dapat secara otomatis membuat markup yang diperlukan untuk menyematkan formulir HTML di halaman web yang ada.
Proyek ini mengabstraksi logika pengisian formulir pdftk dan udang.
PDF Filler bekerja dengan menerima pasangan key => value dari nama dan nilai field. Bidang ini dapat berupa bidang formulir PDF yang dapat diisi, atau dapat berupa koordinat x/y sembarang dari bidang yang tidak dapat diisi. Untuk PDF yang dapat diisi, kuncinya harus mewakili nama bidang. Dalam PDF yang tidak dapat diisi, kuncinya harus mewakili koordinat bidang seperti yang dijelaskan di bawah ini (misalnya, 100,100
). Dalam kedua kasus tersebut, nilai bidang harus berisi masukan pengguna untuk bidang tertentu.
Nama bidang dapat ditemukan secara lokal menggunakan utilitas PDF sumber terbuka pdftk, atau secara dinamis menggunakan layanan ini.
Untuk mendapatkan daftar semua bidang dalam PDF tertentu
/fields?pdf={URL to the PDF}
Untuk mendapatkan representasi JSON dari semua bidang dalam PDF tertentu
/fields.json?pdf={URL to the PDF}
Untuk mengisi PDF, keluarkan permintaan POST
ke /fill
. Data POST harus dalam format key => value dimana key mewakili nama field dan value mewakili nilai field. Pastikan untuk memberikan kunci "pdf" dengan URL PDF yang akan diisi. Layanan akan mengembalikan PDF yang telah diisi sebagai unduhan.
Catatan: Karena cara HTML menangani formulir, karakter khusus tertentu seperti tanda kurung siku tidak akan POST dengan benar ke layanan. Jika kolom PDF berisi karakter yang dicadangkan, cukup urlencode nama kolom sebelum melakukan POST.
Untuk mendapatkan representasi HTML umum dari setiap formulir PDF yang dapat diisi
/form?pdf={URL To PDF}
PDF yang Tidak Dapat Diisi (misalnya, PDF yang dipindai atau PDF lainnya tanpa formulir terstruktur) memerlukan penyerahan koordinat X, Y, dan (opsional) nomor halaman. Data ini diteruskan menggunakan konvensi penamaan bidang berikut: x,y,page
(atau sederhananya x,y
) dengan X dan Y mewakili koordinat penunjuk dari sudut kiri bawah dokumen. Jika tidak ada halaman yang diberikan, halaman pertama akan dianggap.
Data dapat dikirimkan secara terprogram (misalnya melalui API) atau sebagai formulir standar berbasis web. Misalnya, untuk menyusun formulir HTML, Anda dapat melakukannya sebagai berikut:
< 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
dan cd
ke direktori target (kemungkinan besar pdf-filler
)bundle install
Untuk menjalankannya, cukup jalankan perintah ruby app.rb
dari direktori proyek. Layanan ini akan diekspos pada port 4567
secara default.
Anda dapat dengan bebas menggunakan PDF Filler sebagai layanan web. Namun jika Anda ingin mengambil kode sumber dan menyimpannya secara lokal, sebenarnya caranya cukup mudah.
Pengisi PDF menggunakan pdftk untuk menangani pengisian formulir tindakan. pdftk dapat diunduh dan diinstal secara bebas di sebagian besar sistem. Jika dipasang di lokasi selain /usr/local/bin/pdftk
, pastikan untuk memperbarui konfigurasi dengan mengatur variabel lingkungan PATH_TO_PDFTK
ke jalur yang benar.
PDF Filler ditulis dalam Ruby dan menggunakan Sinatra untuk menghasilkan RESTful API
PDF Filler mudah digunakan sebagai layanan backend di server Anda. Ikuti instruksi di sini: http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-which-i-employ-a-secretary/ sebagai contoh cara menyebarkan dan mengatur up aplikasi sebagai layanan backend pada mesin Anda. Ada file bernama daemon.rb yang merupakan bagian dari aplikasi untuk tujuan ini.
Aplikasi ini dirancang untuk dihosting di layanan hosting seperti heroku. Jika menggunakan Heroku, pastikan untuk memilih build "Bambu" (yang dikompilasi dengan pdftk) dan atur konfigurasi lingkungan untuk PATH_TO_PDFTK
ke /usr/bin/pdftk
.
Siapa pun didorong untuk berkontribusi pada proyek dengan melakukan forking dan mengirimkan permintaan tarik. (Jika Anda baru mengenal GitHub, Anda bisa memulai dengan tutorial dasar.)
Dengan berkontribusi pada proyek ini, Anda memberikan lisensi yang berlaku di seluruh dunia, bebas royalti, abadi, tidak dapat dibatalkan, non-eksklusif, dan dapat dialihkan kepada semua pengguna berdasarkan ketentuan Lisensi MIT.
Proyek ini merupakan Pekerjaan Pemerintah Amerika Serikat berdasarkan 17 USC 105 dan didistribusikan berdasarkan ketentuan Lisensi MIT.