web-dev-qa-db-fra.com

Remplir PDF Formulaires avec PHP

Existe-t-il des bibliothèques PHP qui peuvent être utilisées pour remplir des formulaires PDF, puis les enregistrer (aplatir) dans des fichiers PDF PDF)?

47
mno

Les bibliothèques et les frameworks mentionnés ici sont bons, mais si tout ce que vous voulez faire est de remplir un formulaire et de l'aplatir, je recommande l'outil de ligne de commande appelé pdftk (PDF Toolkit).

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

Vous pouvez appeler la ligne de commande à partir de php, et la commande est

pdftk formfile.pdf fill_form fieldinfo.fdf output outputfile.pdf flatten

Vous devrez trouver le format d'un fichier FDF afin de générer les informations à remplir dans les champs. Voici un bon lien pour cela:

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

[Modifier: Le lien ci-dessus semble être hors service. Voici quelques informations supplémentaires ...]

La commande pdftk peut générer un fichier FDF à partir d'un fichier de formulaire PDF. Vous pouvez ensuite utiliser le fichier FDF généré comme exemple. Les champs du formulaire sont la partie du fichier FDF qui ressemble à

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

Vous pouvez également consulter php-pdftk , qui est une bibliothèque spécifique à PHP. Je ne l'ai pas utilisé, mais le commentateur Álvaro (ci-dessous) le recommande.

47
bmb

Un gros +1 à la réponse acceptée, et un petit conseil si vous rencontrez des problèmes d'encodage avec le fichier fdf. Si vous générez le fields.fdf et lors de l'exécution

file -bi fields.fdf

vous obtenez

application/octet-stream; charset=binary

alors vous avez probablement rencontré un problème de jeu de caractères UTF-16. Essayez de convertir le ftf au moyen de

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

J'ai ensuite pu éditer et importer le fichier better.fdf dans mon formulaire PDF.

Espérons que cela sauve quelqu'un de Google

5
Val Redchenko

générer un fichier fdf avec php: voir http://www.php.net/manual/en/book.fdf.php

puis remplissez-le dans un pdf avec pdftk (voir ci-dessus)

3
proofy

Pour:

  • Format d'entrée plus facile que XFDF
  • Véritable prise en charge UTF-8 (russe)
  • Exemple d'utilisation complet de php

N'hésitez pas à vérifier mon PdfFormFillerUTF-8 .

3
Nikolay

J'ai eu beaucoup de succès avec l'utilisation d'un formulaire qui se soumet à un script php qui utilise fpdf et passe dans les champs du formulaire en tant que variables get (peut-être pas une excellente pratique, mais cela fonctionne).

 <?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();
?>

et vous pourriez avoir quelque chose comme ça.

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

Cet exemple squelettique devrait vous aider à démarrer.

3
josh.chavanne

J'ai écrit une bibliothèque Perl, CAM :: PDF , avec une interface de ligne de commande qui peut résoudre ce problème. J'ai essayé d'utiliser une solution FDF il y a des années, mais je l'ai trouvée beaucoup trop compliquée, c'est pourquoi j'ai écrit CAM :: PDF en premier lieu. Ma bibliothèque utilise quelques heuristiques pour remplacer le formulaire par le texte souhaité, donc ce n'est pas parfait. Mais cela fonctionne la plupart du temps, et il est rapide, gratuit et assez simple à utiliser.

1
Chris Dolan

On dirait que cela a été couvert avant . Cliquez sur le code correspondant à l'aide de Zend Framework PDF bibliothèque.

1
pix0r

Nous utilisons PDFLib au travail. La version payante n'est pas très chère, et il existe une édition open source plus limitée, si vous ne parvenez pas à décortiquer la version payante.

1
foxxtrot