Bonjour,
Je dois effectuer une fusion d'un modèle PDF (formulaire) à l'aide d'informations d'une base de données.
J'utilise iTextSharp sous .NET 2.0 et un algorithme dérivé de celui trouvé sur le blog suivant.
Je cherche à vérifier le bon fonctionnement de l'algorithme sur un modèle de formulaire PDF, mais je n'ai encore rien sous la main. J'ai donc téléchargé la version d'essai d'Adobe Acrobat 7.0 pour en créer un rapidement et tester l'ensemble.
Mon problème est le suivant : je n'arrive pas à mes fins malgré l'apparent bon fonctionnement de l'algorithme (aucune erreur et le fichier PDF est généré, mais il ne contient pas les informations de fusion). Je me demande s'il ne s'agit pas d'un problème dû au modèle lui même (j'ai enregistré un formulaire dynamique contenant un champ texte nommé "Champ" auquel j'associe la valeur "Test" dans l'algorithme)
Quelqu'un aurait-il :
Ci-joint l'algorithme en question :
- Un modèle PDF de test fonctionnel qui me permettrait d'aller plus loin (Google n'a pas été très bavard à ce sujet)
- Une méthode éprouvée avec iTextSharp ou autre (CrystalReports ?)
et le code utilisé pour le test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class PDFFusion { public static void Fusion(string templatePath, string generatedPath, Dictionary<string,string> fieldsData, Hashtable pdfInfos) { if (!File.Exists(templatePath)) throw new IOException("Template file doesn't exist"); PdfReader reader = new PdfReader(templatePath); PdfStamper stamper = new PdfStamper(reader, new FileStream(generatedPath, FileMode.Create)); AcroFields fields = stamper.AcroFields; // set form fields foreach (KeyValuePair<string, string> fieldInfo in fieldsData) { fields.SetField(fieldInfo.Key, fieldInfo.Value); } // set document info stamper.MoreInfo = pdfInfos; // flatten form fields and close document stamper.FormFlattening = true; stamper.Close(); } }
Merci d'avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 string templatePath = Request.PhysicalApplicationPath + "FR/Test.pdf"; string finalPath = Request.PhysicalApplicationPath + "FR/TestFusionne.pdf"; Dictionary<string,string> fields = new Dictionary<string,string>(); fields.Add("Champ", "Test"); Hashtable infos = new Hashtable(); infos.Add("Title","Titre"); infos.Add("Author","Auteur"); infos.Add("Creator","Programme"); PDFFusion.Fusion(templatePath, finalPath, fields, infos);
Partager