Bonjour,

Je veux créer une facture en format PDF qui peut contenir plusieurs pages grâce à ITextSharp.
Seulement lorsque je ferme le document, j'ai l'erreur
Tentative de lecture au-delà de la fin du flux.
Je ne sais pas trop ce que cela veut dire. Pouvez-vous m'éclairer, s'il vous plait ?

Lorsque je copie un template sur deux pages, cela marche très bien mais pas quand il y a trois pages à écrire dans le fichier. Est-ce un problème de byte ou de mémoire d'écriture ?

Voici le code :

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
 
 // Ouverture du document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(filename, FileMode.Create));
            doc.Open();
 
            try
            {
 
                // Création du template
                PdfContentByte cb = writer.DirectContent;
                PdfTemplate template = cb.CreateTemplate(50, 50);
 
                BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
 
 
                for (int i = 0; i < nbPages; i++)
                {                   
 
                    // Ecriture de la page à partir du modèle                 
 
                        string chemin = "C:\\Modele.pdf";
 
                        PdfReader readerModele = new PdfReader(chemin);
 
                        string pdfFichier = "C:\\fichier.pdf";
                        FileStream pdfOutputFileMere = new FileStream(pdfFichier, FileMode.Create);
 
                        //Ecriture de la page
			(...)
 
                        PdfReader rdr = new PdfReader(pdfFichier);
                        PdfTemplate temp = writer.GetImportedPage(rdr, 1);
 
                        cb.AddTemplate(temp, -10, 50);
 
                        readerModele.Close();
                        rdr.Close();
 
 
                    String text = "Page " + writer.PageNumber + " of ";
                    float len = bf.GetWidthPoint(text, 9);
                    cb.BeginText();
                    cb.SetFontAndSize(bf, 9);
                    cb.SetTextMatrix(280, 45);
                    cb.ShowText(text);
                    cb.EndText();
                    cb.AddTemplate(template, 280 + len, 45);
 
                        doc.NewPage();
                }
 
                template.BeginText();
                template.SetFontAndSize(bf, 9);
                template.ShowText((writer.PageNumber - 1).ToString());
                template.EndText();
 
                doc.Close();
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
Merci d'avance,
Gwen Zephyr.