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 обрабатывает формы, некоторые специальные символы, такие как квадратные скобки, не будут правильно отправляться в службу POST. Если поле PDF содержит зарезервированные символы, просто закодируйте имя поля перед отправкой POST.
Чтобы получить общее HTML-представление любой заполняемой формы PDF.
/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 в качестве веб-сервиса. Но если вы хотите получить исходный код и разместить его локально, это на самом деле довольно просто.
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-that-i-employ-a-secretary/ в качестве примера развертывания и установки. установите приложение в качестве серверной службы на своем компьютере. Для этой цели в приложении имеется файл daemon.rb.
Приложение предназначено для размещения на таких хостингах, как Heroku. Если вы используете Heroku, обязательно выберите сборку «Bamboo» (которая скомпилирована с pdftk) и установите конфигурацию среды для PATH_TO_PDFTK
в /usr/bin/pdftk
.
Приглашаем всех желающих внести свой вклад в проект, создав его форк и отправив запрос на включение. (Если вы новичок в GitHub, вы можете начать с базового руководства.)
Внося свой вклад в этот проект, вы предоставляете всемирную, безвозмездную, бессрочную, безотзывную, неисключительную, передаваемую лицензию всем пользователям в соответствии с условиями лицензии MIT.
Этот проект представляет собой работу правительства США в соответствии с разделом 17 USC 105 и распространяется на условиях лицензии MIT.