Pergunta

Existem bibliotecas PHP que podem ser usadas para preencher formulários PDF e depois salvá-los (achatá-los) em arquivos PDF?

Foi útil?

Solução

As bibliotecas e frameworks mencionados aqui são bons, mas se tudo o que você deseja fazer é preencher um formulário e nivelá-lo, recomendo a ferramenta de linha de comando chamada pdftk (PDF Toolkit).

Ver https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

Você pode chamar a linha de comando do php, e o comando é

pdftk arquivo de formulário.pdf fill_form fieldinfo.fdf output arquivo de saída.pdf flatten

Você precisará encontrar o formato de um arquivo FDF para gerar as informações para preencher os campos.Aqui está um bom link para isso:

http://www.tgreer.com/fdfServe.html

[Editar:O link acima parece estar fora de serviço.Aqui estão mais algumas informações...]

O comando pdftk pode gerar um arquivo FDF a partir de um arquivo de formulário PDF.Você pode então usar o arquivo FDF gerado como amostra.Os campos do formulário são a parte do arquivo FDF que se parece com

...
<< /T(f1-1) /V(text of field) >>
<< /T(f1-2) /V(text of another field) >>
...

Você também pode conferir php-pdftk, que é uma biblioteca específica para PHP.Não usei, mas o comentarista Álvaro (abaixo) recomenda.

Outras dicas

Um grande +1 para a resposta aceita e uma pequena dica se você tiver problemas de codificação com o arquivo fdf.Se você gerar o field.fdf e ao executar

file -bi fields.fdf

você consegue

application/octet-stream; charset=binary

então provavelmente você se deparou com um problema de conjunto de caracteres UTF-16.Tente converter o ftf por meio de

cat fields.fdf | sed -e's/\x00//g' | sed -e's/\xFE\xFF//g' > better.fdf

Consegui então editar e importar o arquivo best.fdf para meu formulário PDF.

Espero que isso poupe a alguém algumas pesquisas no Google

Tive muito sucesso ao usar um formulário que é enviado para um script php que usa fpdf e passa nos campos do formulário como variáveis ​​​​get (talvez não seja uma ótima prática recomendada, mas funciona).

 <?php
require('fpdf.php');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetY(30);
$pdf->SetX(100);
$pdf->MultiCell(10,4,$_POST['content'],0,'J');
$pdf->Output();
?>

e você poderia ter algo assim.

  <form action="fooPDF.php" method="post">
     <p>PDF CONTENT: <textarea name="content" ></textarea></p>
     <p><input type="submit" /></p>
    </form>

Este exemplo esquelético deve ajudá-lo a começar.

gerando arquivo fdf com php:ver http://www.php.net/manual/en/book.fdf.php

em seguida, preencha-o em um pdf com pdftk (veja acima)

Para:

  • Formato de entrada mais fácil que XFDF
  • Suporte verdadeiro a UTF-8 (Russo)
  • Exemplo completo de uso de php

Sinta-se à vontade para verificar meu PdfFormFillerUTF-8.

Parece que isso foi coberto antes.Clique para obter o código relevante usando a biblioteca Zend Framework PDF.

Nós usamos PDFLib No trabalho.A versão paga não é muito cara e há uma edição de código aberto mais limitada, caso você não consiga pagar pela versão paga.

Eu escrevi uma biblioteca Perl, CAM::PDF, com um interface da Linha de comando isso pode resolver isso.Tentei usar uma solução FDF anos atrás, mas achei muito complicada e foi por isso que escrevi CAM::PDF em primeiro lugar.Minha biblioteca usa algumas heurísticas para substituir o formulário pelo texto desejado, por isso não é perfeito.Mas funciona na maioria das vezes e é rápido, gratuito e bastante simples de usar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top