PDF Filler es un servicio RESTful (API) que ayuda a completar formularios basados en PDF existentes y permite a los desarrolladores web utilizar formularios basados en navegador y estándares web modernos para facilitar la recopilación de información.
PDF Filler funciona con prácticamente cualquier PDF no cifrado y admite formularios rellenables (por ejemplo, PDF con campos de entrada predefinidos) y no rellenables (por ejemplo, PDF escaneados). Simplemente pásele la URL a cualquier PDF alojado públicamente. PDF Filler puede incluso crear automáticamente el marcado necesario para incrustar un formulario HTML en una página web existente.
El proyecto abstrae la lógica de llenado de formularios de pdftk y gambas.
PDF Filler funciona aceptando un par clave => valor de nombres de campos y valores. Estos campos pueden ser campos de formulario PDF que se pueden completar o pueden ser una coordenada x/y arbitraria de un campo que no se puede completar. Para archivos PDF rellenables, la clave debe representar el nombre del campo. En archivos PDF que no se pueden completar, la clave debe representar las coordenadas de campo como se describe a continuación (por ejemplo, 100,100
). En ambos casos, el valor del campo debe contener la entrada del usuario para ese campo determinado.
Los nombres de los campos se pueden descubrir localmente utilizando la utilidad PDF de código abierto pdftk o dinámicamente utilizando el servicio.
Para obtener una lista de todos los campos dentro de un PDF determinado
/fields?pdf={URL to the PDF}
Para obtener una representación JSON de todos los campos dentro de un PDF determinado
/fields.json?pdf={URL to the PDF}
Para completar un PDF, emita una solicitud POST
a /fill
. Los datos POST deben tener el formato clave => valor donde la clave representa el nombre del campo y el valor representa el valor del campo. Asegúrese de pasar una clave de "pdf" con la URL del PDF a completar. El servicio devolverá el PDF completado como descarga.
Nota: Debido a la forma en que HTML maneja los formularios, ciertos caracteres especiales, como los corchetes, no se PUBLICARÁN correctamente en el servicio. Si el campo PDF contiene caracteres reservados, simplemente codifique en URL el nombre del campo antes de publicarlo.
Para obtener una representación HTML genérica de cualquier formulario PDF rellenable
/form?pdf={URL To PDF}
Los archivos PDF que no se pueden completar (por ejemplo, archivos PDF escaneados u otros archivos sin formularios estructurados) requieren pasar las coordenadas X, Y y (opcionalmente) un número de página. Estos datos se pasan utilizando la siguiente convención de nomenclatura para el campo: x,y,page
(o simplemente x,y
) donde X e Y representan las coordenadas del puntero desde la esquina inferior izquierda del documento. Si no se proporciona ninguna página, se asumirá la primera página.
Los datos se pueden enviar mediante programación (por ejemplo, a través de una API) o como un formulario estándar basado en web. Por ejemplo, para estructurar un formulario HTML, puede hacerlo de la siguiente manera:
< 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
y cd
en el directorio de destino (muy probablemente pdf-filler
)bundle install
Para ejecutarlo, simplemente ejecute el comando ruby app.rb
desde el directorio del proyecto. El servicio estará expuesto en el puerto 4567
de forma predeterminada.
Puede utilizar libremente PDF Filler como servicio web. Pero si desea tomar el código fuente y alojarlo localmente, en realidad es bastante fácil.
PDF Filler utiliza pdftk para manejar el llenado del formulario de acción. pdftk se puede descargar e instalar libremente en la mayoría de los sistemas. Si está instalado en una ubicación distinta de /usr/local/bin/pdftk
, asegúrese de actualizar la configuración configurando la variable ambiental PATH_TO_PDFTK
en la ruta adecuada.
PDF Filler está escrito en Ruby y utiliza Sinatra para generar una API RESTful
PDF Filler es fácil de implementar como servicio backend en su servidor. Siga las instrucciones aquí: http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-what-i-employ-a-secretary/ como ejemplo de cómo implementar y configurar Configure la aplicación como un servicio backend en su máquina. Hay un archivo llamado daemon.rb que forma parte de la aplicación para este propósito.
La aplicación está diseñada para alojarse en servicios de hosting como heroku. Si usa Heroku, asegúrese de seleccionar la compilación "Bamboo" (que viene compilada con pdftk) y establezca una configuración de entorno para PATH_TO_PDFTK
en /usr/bin/pdftk
.
Se anima a cualquier persona a contribuir al proyecto bifurcando y enviando una solicitud de extracción. (Si eres nuevo en GitHub, puedes comenzar con un tutorial básico).
Al contribuir a este proyecto, usted otorga una licencia mundial, libre de regalías, perpetua, irrevocable, no exclusiva y transferible a todos los usuarios bajo los términos de la Licencia MIT.
Este proyecto constituye una obra del gobierno de los Estados Unidos según 17 USC 105 y se distribuye según los términos de la licencia MIT.