Remplir des formulaires PDF avec PHP [fermé]
Question
Existe-t-il des bibliothèques PHP pouvant être utilisées pour remplir des formulaires PDF, puis les sauvegarder (les aplatir) en fichiers PDF?
La solution
Les bibliothèques et les frameworks mentionnés ici sont bons, mais si vous souhaitez simplement remplir un formulaire et l'aplatir, je vous recommande l'outil en ligne de commande appelé pdftk (PDF Toolkit).
Voir https://www.pdflabs.com/tools/pdftk- the-pdf-toolkit /
Vous pouvez appeler la ligne de commande depuis php, et la commande est
pdftk
fichierfichier.pdf formulaire_fichier
champinfo.fdf sortie
fichier de sortie.pdf aplatir
Vous devrez trouver le format d'un fichier FDF afin de générer les informations à remplir. Voici un bon lien pour cela:
http://www.tgreer.com/fdfServe.html
[Edit: 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 de 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 , une bibliothèque spécifique à PHP. Je ne l'ai pas utilisé, mais le commentateur Álvaro (ci-dessous) le recommande.
Autres conseils
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 fichier fields.fdf et lors de l’exécution
file -bi fields.fdf
vous obtenez
application/octet-stream; charset=binary
alors vous êtes probablement confronté à un problème de jeu de caractères UTF-16. Essayez de convertir le ftf avec
cat fields.fdf | sed -e's/\x00//g' | sed -e's/\xFE\xFF//g' > better.fdf
J'ai ensuite pu modifier et importer le fichier best.fdf dans mon formulaire PDF.
Espérons que cela épargnera à Google quelque chose sur Google
J'ai eu beaucoup de succès avec l'utilisation d'un formulaire qui est soumis à un script php qui utilise fpdf et passe dans les champs du formulaire sous forme de variables (peut-être pas une bonne pratique, mais cela fonctionne).
<?php
require('fpdf.php');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetY(30);
$pdf->SetX(100);
$pdf->MultiCell(10,4, J'ai eu beaucoup de succès avec l'utilisation d'un formulaire qui est soumis à un script php qui utilise fpdf et passe dans les champs du formulaire sous forme de variables (peut-être pas une bonne pratique, mais cela fonctionne).
<form action="fooPDF.php" method="post">
<p>PDF CONTENT: <textarea name="content" ></textarea></p>
<p><input type="submit" /></p>
</form>
et vous pourriez avoir quelque chose comme ça.
<*>
Cet exemple squelettique devrait vous aider à démarrer.
POST['content'],0,'J');
$pdf->Output();
?>
et vous pourriez avoir quelque chose comme ça.
<*>Cet exemple squelettique devrait vous aider à démarrer.
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)
Pour:
- Format d’entrée plus simple que XFDF
- Véritable prise en charge UTF-8 (russe)
- Exemple d'utilisation complet de php
N'hésitez pas à consulter mon PdfFormFillerUTF-8 .
On dirait que cela a été couvert avant . Cliquez sur le code correspondant à l'aide de la bibliothèque PDF de Zend Framework.
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 pouvez pas débourser pour la version payante.
J'ai écrit une bibliothèque Perl, CAM :: PDF , avec un < un href = "http://search.cpan.org/dist/CAM-PDF/bin/fillpdffields.pl" rel = "nofollow noreferrer"> interface de ligne de commande permettant de résoudre ce problème. J'ai essayé d'utiliser une solution FDF il y a plusieurs années, mais je l'ai trouvée trop compliquée, c'est pourquoi j'ai tout d'abord écrit CAM :: PDF. Ma bibliothèque utilise quelques méthodes heuristiques pour remplacer le formulaire par le texte souhaité. Ce n'est donc pas parfait. Mais cela fonctionne la plupart du temps et il est rapide, gratuit et simple à utiliser.