PDF filler عبارة عن خدمة RESTful (API) للمساعدة في إكمال النماذج الحالية المستندة إلى PDF وتمكين مطوري الويب من استخدام النماذج المستندة إلى المستعرض ومعايير الويب الحديثة لتسهيل جمع المعلومات.
يعمل PDF filler مع أي ملف PDF غير مشفر تقريبًا، ويدعم كلا من النماذج القابلة للملء (على سبيل المثال، ملفات PDF ذات حقول إدخال محددة مسبقًا) والنماذج غير القابلة للتعبئة (على سبيل المثال، ملفات PDF الممسوحة ضوئيًا). ما عليك سوى تمرير عنوان URL إلى أي ملف PDF مستضاف بشكل عام. يمكن لـ PDF filler إنشاء العلامات اللازمة تلقائيًا لتضمين نموذج HTML في صفحة ويب موجودة.
يلخص المشروع منطق ملء النموذج لـ pdftk و prawn.
يعمل 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 مع النماذج، لن يتم نشر بعض الأحرف الخاصة مثل الأقواس المربعة بشكل صحيح في الخدمة. إذا كان حقل PDF يحتوي على أحرف محجوزة، فما عليك سوى ترميز اسم الحقل قبل النشر.
للحصول على تمثيل HTML عام لأي نموذج PDF قابل للتعبئة
/form?pdf={URL To PDF}
تتطلب ملفات PDF غير القابلة للتعبئة (على سبيل المثال، الممسوحة ضوئيًا أو ملفات PDF الأخرى التي لا تحتوي على نماذج منظمة) تمرير إحداثيات X وY ورقم الصفحة (اختياريًا). يتم تمرير هذه البيانات باستخدام اصطلاح التسمية التالي للحقل: x,y,page
(أو ببساطة x,y
) حيث يمثل X وY إحداثيات المؤشر من الركن الأيسر السفلي من المستند. إذا لم يتم إعطاء أي صفحة، فسيتم افتراض الصفحة الأولى.
يمكن إرسال البيانات برمجيًا (على سبيل المثال عبر واجهة برمجة التطبيقات) أو كنموذج قياسي قائم على الويب. على سبيل المثال، لإنشاء نموذج 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-what-i-employ-a-secretary/ كمثال لكيفية النشر والإعداد رفع التطبيق كخدمة خلفية على جهازك. يوجد ملف يسمى daemon.rb وهو جزء من التطبيق لهذا الغرض.
تم تصميم التطبيق ليتم استضافته على خدمات الاستضافة مثل Heroku. إذا كنت تستخدم Heroku، فتأكد من تحديد الإصدار "Bamboo" (الذي يأتي مجمعًا مع pdftk) وقم بتعيين تكوين البيئة لـ PATH_TO_PDFTK
على /usr/bin/pdftk
.
يتم تشجيع أي شخص على المساهمة في المشروع عن طريق التفرع وتقديم طلب السحب. (إذا كنت جديدًا على GitHub، فقد تبدأ ببرنامج تعليمي أساسي.)
من خلال المساهمة في هذا المشروع، فإنك تمنح ترخيصًا عالميًا وخاليًا من حقوق الملكية ودائمًا وغير قابل للإلغاء وغير حصري وقابل للتحويل لجميع المستخدمين بموجب شروط ترخيص MIT.
يشكل هذا المشروع عملاً لحكومة الولايات المتحدة بموجب 17 USC 105 ويتم توزيعه بموجب شروط ترخيص MIT.