Creation de pdf

saphir54321 Messages postés 28 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 14 novembre 2007 - 14 nov. 2007 à 11:34
Evil_Gouki_X Messages postés 19 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 22 mai 2010 - 5 déc. 2007 à 10:42
Bonjour a tous,

J'ai un petit probleme dans la creation de pdf.
Je m'explique, je suis en train de creer une application en c# avec visual studio 2005.
Et j'en suis a la creation de rapport pdf. J'ai trouve une solution qui fonctionne plutot bien pour creer des pdf. Ce que je voudrais faire en fait, c'est creer un pdf a partir d'autre pdf. Une solution que j'avais trouve a plusieurs endroits sur le net, etait de convertir mes pdf en binaire et les stocker dans ma BD en tant qu'image. Ce que j'ai fait. Le probleme c'est que quand je veux recuperer mes pdf de ma BD, cela marche tres bien mais seulement pour un seul pdf, cad le dernier pdf ajouter. La taille de mon pdf genere est la bonne mais les donnees ne sont pas dedans, juste les donnees du dernier pdf ajouter ce trouvent dedans.
Je suis a cours d'idee, et j'ai besoin d'une solution le plus rapidement possible.

Voici mon code :

        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "Application/msword"; //"application/pdf";
        Response.AddHeader("content-disposition", "attachment; filename=Hello.doc");
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString);
        cnn.Open();
        SqlCommand cmd = new SqlCommand("SELECT Size FROM TestTable", cnn);
        SqlDataReader DR = cmd.ExecuteReader();
        int size = 0;
        while (DR.Read())
            size += (int)DR["Size"];
        byte[] all = new byte[size];
        DR.Close();
        cmd = new SqlCommand("SELECT Contents,Size FROM TestTable", cnn);
        DR = cmd.ExecuteReader();
        size = 0;
        while (DR.Read())
        {
            Array.Copy((byte[])DR["Contents"], 0, all, size, (int)DR["size"]);
            size += (int)DR["Size"];
        }
       
        Response.BinaryWrite(all);
        Response.Flush();
        HttpContext.Current.ApplicationInstance.CompleteRequest();

Merci bcp d'avance pour votre aide.

1 réponse

Evil_Gouki_X Messages postés 19 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 22 mai 2010 1
5 déc. 2007 à 10:42
Salut je ne sais pas si ca va t'aider mais je pense que :

1) Il faut que tu precises au "Buffer" de se remplir avec toutes les informations (en lisant ton code j'ai l'impression que ton buffer ne garde que la derniere infos effectuer lors du select). meme si tu lui dit "Response.BinaryWrite(all);", etant donner que tes donnees sont ecrasees et non pas ajoutees tu n'auras que la derniere donnee.

2) je pense aussi que pour ton cas (ce n'est pas une appli web n'est ce pas) tu devrais plutot utiliser un dataset afin de le remplir avec toutes test infos.

est ce que tu as avance depuis le 14?
0
Rejoignez-nous