PDF Filler เป็นบริการ RESTful (API) ที่ช่วยในการกรอกแบบฟอร์ม PDF ที่มีอยู่ให้สมบูรณ์ และช่วยให้นักพัฒนาเว็บใช้แบบฟอร์มบนเบราว์เซอร์และมาตรฐานเว็บสมัยใหม่เพื่ออำนวยความสะดวกในการรวบรวมข้อมูล
PDF Filler ใช้งานได้กับ PDF ที่ไม่ได้เข้ารหัสใดๆ โดยรองรับทั้งแบบฟอร์มที่กรอกได้ (เช่น PDF ที่มีฟิลด์ป้อนข้อมูลที่กำหนดไว้ล่วงหน้า) และแบบฟอร์มที่ไม่สามารถกรอกได้ (เช่น PDF ที่สแกน) เพียงส่ง URL ไปยัง PDF ที่โฮสต์แบบสาธารณะ PDF Filler สามารถสร้างมาร์กอัปที่จำเป็นในการฝังแบบฟอร์ม HTML ในหน้าเว็บที่มีอยู่ได้โดยอัตโนมัติ
โครงการนี้เป็นนามธรรมตรรกะในการกรอกแบบฟอร์มของ pdftk และกุ้ง
PDF Filler ทำงานโดยการยอมรับคีย์ => คู่ค่าของชื่อฟิลด์และค่าต่างๆ ฟิลด์เหล่านี้อาจเป็นฟิลด์แบบฟอร์ม PDF ที่กรอกได้ หรืออาจเป็นพิกัด x/y ที่กำหนดเองของฟิลด์ที่ไม่สามารถกรอกได้ สำหรับ PDF ที่กรอกได้ คีย์ควรแสดงถึงชื่อฟิลด์ ใน PDF ที่ไม่สามารถกรอกได้ คีย์ควรแสดงถึงพิกัดของฟิลด์ตามที่อธิบายไว้ด้านล่าง (เช่น 100,100
) ในทั้งสองกรณี ค่าของฟิลด์ควรมีอินพุตของผู้ใช้สำหรับฟิลด์ที่กำหนด
ชื่อฟิลด์สามารถค้นพบได้ในเครื่องโดยใช้ยูทิลิตี้ PDF โอเพ่นซอร์ส pdftk หรือใช้บริการแบบไดนามิก
เพื่อรับรายการฟิลด์ทั้งหมดภายใน PDF ที่กำหนด
/fields?pdf={URL to the PDF}
เพื่อรับการแสดง JSON ของทุกฟิลด์ภายใน PDF ที่กำหนด
/fields.json?pdf={URL to the PDF}
หากต้องการกรอก PDF ให้ส่งคำขอ POST
ไปที่ /fill
ข้อมูล POST ควรอยู่ในรูปแบบคีย์ => ค่า โดยที่คีย์แสดงถึงชื่อฟิลด์ และค่าแสดงถึงค่าของฟิลด์ อย่าลืมส่งคีย์ "pdf" พร้อม URL ของ PDF ที่ต้องกรอก บริการจะส่งคืนไฟล์ PDF ที่กรอกไว้เป็นการดาวน์โหลด
หมายเหตุ: เนื่องจากวิธีจัดการแบบฟอร์มของ HTML อักขระพิเศษบางตัว เช่น วงเล็บเหลี่ยมจะไม่สามารถ POST ไปยังบริการได้อย่างถูกต้อง หากฟิลด์ PDF มีอักขระที่สงวนไว้ เพียง urlencode ชื่อฟิลด์ก่อน POSTing
หากต้องการรับการแสดง HTML ทั่วไปของแบบฟอร์ม PDF ที่สามารถกรอกได้
/form?pdf={URL To PDF}
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 เป็นบริการบนเว็บได้อย่างอิสระ แต่ถ้าคุณต้องการคว้าซอร์สโค้ดและโฮสต์ไว้ในเครื่อง จริงๆ แล้วมันก็ค่อนข้างง่าย
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-who-i-employ-a-secretary/ เป็นตัวอย่างวิธีการปรับใช้และตั้งค่า อัพแอปเป็นบริการแบ็กเอนด์บนเครื่องของคุณ มีไฟล์ชื่อ daemon.rb ซึ่งเป็นส่วนหนึ่งของแอปเพื่อจุดประสงค์นี้
แอปนี้ได้รับการออกแบบให้โฮสต์บนบริการโฮสติ้ง เช่น heroku หากใช้ Heroku อย่าลืมเลือกบิลด์ "Bamboo" (ซึ่งคอมไพล์ด้วย pdftk) และตั้งค่าสภาพแวดล้อมสำหรับ PATH_TO_PDFTK
เป็น /usr/bin/pdftk
ทุกคนได้รับการสนับสนุนให้มีส่วนร่วมในโครงการโดยการฟอร์กและส่งคำขอดึง (หากคุณยังใหม่กับ GitHub คุณอาจเริ่มต้นด้วยบทช่วยสอนพื้นฐาน)
โดยการมีส่วนร่วมในโครงการนี้ คุณให้สิทธิ์การใช้งานทั่วโลก ปราศจากค่าลิขสิทธิ์ ตลอดไป ไม่สามารถเพิกถอนได้ ไม่ผูกขาด และสามารถโอนสิทธิ์ได้ให้กับผู้ใช้ทุกคนภายใต้เงื่อนไขของสิทธิ์การใช้งาน MIT
โครงการนี้ถือเป็นงานของรัฐบาลสหรัฐอเมริกาภายใต้ 17 USC 105 และเผยแพร่ภายใต้เงื่อนไขของใบอนุญาต MIT