52 votes

Écriture/dessin sur un document modèle PDF en PHP

J'aimerais pouvoir écrire/superposer du texte sur un document PDF existant en utilisant PHP. Ce que j'espère faire, c'est d'avoir un document pdf qui peut servir de modèle, et de combler les lacunes en ouvrant le document modèle, en superposant le texte pertinent, et en servant le résultat comme un nouveau document. Le document modèle est une page unique, donc la fusion/manipulation de pages n'est pas nécessaire.

Existe-t-il des bibliothèques gratuites qui peuvent faire cela ? Où devrais-je chercher ? La plupart des recherches que j'ai effectuées semblent porter sur la fusion de documents ou l'ajout de pages, plutôt que sur la superposition de contenu sur une page existante.

Merci.

*EDIT : Voici ce que j'ai fait : 1. Télécharger FPDF 2. Télécharger FPDI + FPDF_TPL à partir de

http://www.setasign.de/products/pdf-php-solutions/fpdi/downloads/

Voici quelques exemples de code pour les futurs vagabonds (adaptés des échantillons disponibles sur www.setasign.de) :

<?php 
include('fpdf.php'); 
include('fpdi.php'); 

// initiate FPDI 
$pdf =& new FPDI(); 
// add a page 
$pdf->AddPage(); 
// set the sourcefile 
$pdf->setSourceFile('templatedoc.pdf'); 
// import page 1 
$tplIdx = $pdf->importPage(1); 
// use the imported page as the template 
$pdf->useTemplate($tplIdx, 0, 0); 

// now write some text above the imported page 
$pdf->SetFont('Arial'); 
$pdf->SetTextColor(255,0,0); 
$pdf->SetXY(25, 25); 
$pdf->Write(0, "This is just a simple text"); 

$pdf->Output('newpdf.pdf', 'D'); 
?>

2 votes

Je suis heureux que vous ayez ajouté un exemple de réponse, +1 pour cela, facile n'est-ce pas ? :-)

0 votes

Oui ! Et cela m'aidera aussi quand, dans quelques semaines, j'oublierai ce que j'ai fait et que je le chercherai à nouveau :P (je ne l'ai pas encore mis en œuvre pour mon projet, je viens de découvrir comment faire).

0 votes

Avez-vous trouvé un moyen d'ajouter une image dans un document existant au lieu d'écrire du texte ?

24voto

Orbling Points 13319

Jetez un coup d'œil à la Bibliothèque FPDI un complément à FPDF pour l'annotation des modèles.

Il peut également être boulonné à TCPDF une autre bibliothèque PHP PDF populaire. Un PDF existant est utilisé comme base d'une page, au lieu d'une page vierge, après quoi les procédures sont les mêmes que pour la création d'un PDF ordinaire.

0 votes

Merci ! Joli et facile de superposer du texte à travers le code comme je le souhaite.

0 votes

Si vous souhaitez simplement remplir un formulaire, envisagez la voie FDF évoquée par moontear, car elle est préférable à l'annotation. Si vous avez besoin d'apporter des modifications plus substantielles, il faut alors utiliser FPDI sur TCPDF.

4voto

Dennis G Points 12050

Vous voulez probablement utiliser des formulaires PDF pour ce que vous voulez faire. Pour les remplir, vous pourriez utiliser la méthode FDF décrite ici : Utilisation de formulaires HTML pour remplir des champs PDF avec PHP et FDF .
Il y a en fait un autre bon article de SO sur le remplissage de formulaires PDF ici : Remplir des formulaires PDF avec PHP .

0 votes

+1 Parce que FDF est la meilleure méthode pour la modification de formulaires si vous n'avez pas besoin de faire des annotations que les formulaires ne peuvent pas prendre en charge.

0 votes

+1 C'est une approche élégante, mais mon document simple ne nécessite que quelques insertions de texte pour justifier d'aller jusqu'au bout, donc pour moi je pense que l'autre méthode proposée est un peu plus facile (et plus rapide). Merci quand même !

3voto

applicius Points 43

Lorsque vous voulez utiliser la librairie PDF pour écrire sur un document, le positionnement prend du temps et est ennuyeux. Dhek est utile pour cette tâche : https://github.com/applicius/dhek/releases .

Le mappage JSON des pages/coordonnées PDF est défini, de sorte que vous pouvez écrire avec l'API PDF que vous préférez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X