PDF Filler é um serviço RESTful (API) para auxiliar no preenchimento de formulários existentes baseados em PDF e capacita os desenvolvedores da web a usar formulários baseados em navegador e padrões da web modernos para facilitar a coleta de informações.
PDF Filler funciona com praticamente qualquer PDF não criptografado, suportando formulários preenchíveis (por exemplo, PDFs com campos de entrada predefinidos) e não preenchíveis (por exemplo, PDFs digitalizados). Basta passar o URL para qualquer PDF hospedado publicamente. O PDF Filler pode até criar automaticamente a marcação necessária para incorporar um formulário HTML em uma página da web existente.
O projeto abstrai a lógica de preenchimento de formulários do pdftk e do camarão.
O PDF Filler funciona aceitando um par chave => valor de nomes e valores de campos. Esses campos podem ser campos de formulário PDF preenchíveis ou podem ser uma coordenada x/y arbitrária de um campo não preenchível. Para PDFs preenchíveis, a chave deve representar o nome do campo. Em PDFs não preenchíveis, a chave deve representar as coordenadas do campo conforme descrito abaixo (por exemplo, 100,100
). Em ambos os casos, o valor do campo deve conter a entrada do usuário para aquele campo específico.
Os nomes dos campos podem ser descobertos localmente usando o utilitário PDF de código aberto pdftk ou dinamicamente usando o serviço.
Para obter uma lista de todos os campos de um determinado PDF
/fields?pdf={URL to the PDF}
Para obter uma representação JSON de todos os campos de um determinado PDF
/fields.json?pdf={URL to the PDF}
Para preencher um PDF, emita uma solicitação POST
para /fill
. Os dados POST devem estar no formato key => value onde key representa o nome do campo e value representa o valor do campo. Certifique-se de passar uma chave de “pdf” com a URL do PDF a preencher. O serviço retornará o PDF preenchido como download.
Nota: Devido à maneira como o HTML lida com os formulários, certos caracteres especiais, como colchetes, não serão POSTados corretamente no serviço. Se o campo PDF contiver caracteres reservados, simplesmente codifique o nome do campo antes do POST.
Para obter uma representação HTML genérica de qualquer formulário PDF preenchível
/form?pdf={URL To PDF}
PDFs não preenchíveis (por exemplo, PDFs digitalizados ou outros PDFs sem formulários estruturados) exigem a passagem de coordenadas X, Y e (opcionalmente) um número de página. Esses dados são passados usando a seguinte convenção de nomenclatura para o campo: x,y,page
(ou simplesmente x,y
) onde X e Y representam as coordenadas do ponteiro do canto inferior esquerdo do documento. Se nenhuma página for fornecida, a primeira página será assumida.
Os dados podem ser enviados de forma programática (por exemplo, através de uma API) ou como um formulário padrão baseado na web. Por exemplo, para estruturar um formulário HTML, você pode fazer o seguinte:
< 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
e cd
no diretório de destino (provavelmente pdf-filler
)bundle install
Para executar, basta executar o comando ruby app.rb
do diretório do projeto. O serviço será exposto na porta 4567
por padrão.
Você pode usar gratuitamente o PDF Filler como um serviço web. Mas se você quiser pegar o código-fonte e hospedá-lo localmente, é realmente muito fácil.
PDF Filler usa pdftk para lidar com o preenchimento do formulário de ação. O pdftk pode ser baixado e instalado gratuitamente na maioria dos sistemas. Se instalado em um local diferente de /usr/local/bin/pdftk
, certifique-se de atualizar a configuração definindo a variável ambiental PATH_TO_PDFTK
para o caminho correto.
PDF Filler é escrito em Ruby e usa Sinatra para gerar uma API RESTful
PDF Filler é simples de implantar como um serviço de back-end em seu servidor. Siga as instruções aqui: http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in- Which-i-employ-a-secretary/ como exemplo de como implantar e configurar configure o aplicativo como um serviço de back-end em sua máquina. Existe um arquivo chamado daemon.rb que faz parte do aplicativo para essa finalidade.
O aplicativo foi projetado para ser hospedado em serviços de hospedagem como heroku. Se estiver usando o Heroku, certifique-se de selecionar a compilação "Bamboo" (que vem compilada com pdftk) e definir uma configuração de ambiente para PATH_TO_PDFTK
como /usr/bin/pdftk
.
Qualquer pessoa é incentivada a contribuir com o projeto bifurcando e enviando uma solicitação pull. (Se você é novo no GitHub, pode começar com um tutorial básico.)
Ao contribuir para este projeto, você concede uma licença mundial, isenta de royalties, perpétua, irrevogável, não exclusiva e transferível a todos os usuários sob os termos da Licença MIT.
Este projeto constitui um Trabalho do Governo dos Estados Unidos sob 17 USC 105 e é distribuído sob os termos da Licença MIT.