Bonjour,
j'ai un petit soucis en programmation, j'ai un programme qui a pour but de traiter des des fichiers d'un dossier, et pour une question d'optimisation , j'ai modifié ma procédure que j'appel quand je clique sur un bouton.

Je vous explique , sans trop entrer dans les détails :
j'ai ma page et une zone de texte pour indiquer le nombre de document à traiter, voici un extrait de ma procédure de traitement :
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
 
//je creer mon fichier pdf qui va contenir les pdf fusionné
        string FichierUnique = appSettings["UriDocument"] + "ListePDF_" + dateIndexationFichierUnique + ".pdf"; //chemin du fichier qui contiendra les pdf concatener 
        FileStream fichier = File.Create(FichierUnique);  //creation du fichier
        fichier.Close();//Libère les ressources du fichier 
 
//j'ouvre mon fichier
    FileStream FSvehicuUnique= File.Open(FichierUnique, FileMode.Open);
            PdfCopyFields copy = new PdfCopyFields(FSvehicuUnique);
 
 for (compteurDocument = 0; compteurDocument < nbDocs; compteurDocument++)
{
//nbdocs etant le nombre de document saisie par l'utilisateur
 
//............ code sans interet
  //creation du PDF concaténé
                try
                {
                    //documents[actualDocument] contient l'url du fichier
 
                    if (IsValidPdf(documents[actualDocument]))
                    {
                        PdfReader reader1 = new PdfReader(documents[actualDocument]);
                        copy.AddDocument(reader1); 
                       //j'ajoute un document pdf au fichier qui contient les pdf fusionnés
 
                    }
                    log.Info("<><> => SUccès de la contatenation des pdf !!! <= <><>");
                }
                catch (Exception erreurpdf)
                {
                    log.Error("<><> => Erreur de la contatenation des pdf !!! <= <><>" + erreurpdf.ToString());
 
                    veriftraitement = false;
 
                }
 
 
}//fin for
 
....
     copy.Close();
            fichier.Close();
 
//procedure pour verifié si mon pdf est correct 
    private bool IsValidPdf(string filepath)
    {
        bool Ret = true;
        PdfReader reader = null;
        try
        {
            //en gros je verifie si tout se passe bien 
            reader = new PdfReader(filepath, new System.Text.ASCIIEncoding().GetBytes(""));
        }
        catch(Exception erreurpdf)
        {
            log.Error("Erreur pdf" + erreurpdf.ToString());
            Ret = false;
        }
        return Ret;
    }
le principe est que si dans la zone de texte je saisie 5 par ex, les 5 fichiers suivants seront fusionnés en un seul pdf. Le problème étant que sur ma vm, j'ai fais pas mal de test et les 3/4 du temps tout va bien, mais lorsque je test sur le serveur de recette, j'obtiens parfois ce type de message d'erreur :
" iTextSharp.text.exceptions.InvalidPdfException: PDF header signature not found. "
et recemment j'ai obtenue ce message suivant :
"
iTextSharp.text.pdf.BadPasswordException: PdfReader not opened with owner password
at iTextSharp.text.pdf.PdfCopyFieldsImp.AddDocument(PdfReader reader)
"
J'ai fais pas mal de recherche mais j'ai pas très bien compris pourquoi j'ai ces erreurs, est une erreur dans ma façon de crée mon pdf ??
A quoi correspond cette erreur ( pdf header signature not found " et savez vous pourquoi maintenant il me renvoie "bad password " ?
Pourtant sur ma vm tout va bien , on m'a dit d'utiliser cette procedure "isvalidpdf" en attendant, mais y a til un moyen de créer ma fusion des pdf plus proprement et éviter ce genre de bug ?

Je vous remercie par avance pour tous les conseils que vous pourrez m'apporter sur le sujet.