none
Converstion des données recuperés d'un tableau html en fichier PDF RRS feed

  • Discussion générale

  • Bonjour La Communauté,

    Depuis quelques jours, j'ai un probleme lié à la conversion des données que j'ai recuperé d'un tableau html en fichier PDF.

    je m'explique:

    j'ai un tableau qui recupere les données d'un Api apres un click sur boutton, chaque ligne du tableau dispose d'un bouton qui au click de ce boutoon, les donnees de la ligne selectionnée envoyés au controlleur avec la fonction AJAX, je veux maintenant convertir ces données recuperées dans un fichier pdf, voici comment j'ai fait:

    Mon tableau Html:

      
     <table id="table_id" class="table table-bordered table-striped">
                <thead>
                    <tr>
                        <th>TransactionID</th>
                        <th>Montant</th>
                        <th>Narration</th>
                        <th>Date Trans</th>
                        <th>Actions</th>
                    </tr>
                </thead>
    
                @if (Model != null)
                {
                    <tbody>
                        @foreach (var item in Model)
                        {
                            <tr>
                                <td>
                                    @item.tranId
                                </td>
                                <td>
                                    @item.tranAmt
                                </td>
                                <td>
                                    @item.tranParticular
                                </td>
                                <td>
                                    @item.tranDate
                                </td>
                                <td>
                                    <div class="input-group-btn">
                                        <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown">
                                            Envoyer
                                            <span class="fa fa-caret-down"></span>
                                        </button>
    
                                        <ul class="dropdown-menu">
                                            <li><a href="#" class="btn btn-default" data-toggle="modal" onclick="convertpdf('@datanum','@item.tranId', '@item.tranAmt','@item.tranParticular','@item.tranDate','@item.valueDate')">Client</a></li>
                                            <li><a href="#">Pdf</a></li>
                                            <li><a href="#">Imprimer</a></li>
    
                                        </ul>
    
                                        <!--modaal-->
                                        <div class="modal fade" id="modal-default">
                                            <div class="modal-dialog" role="document">
                                                <div class="modal-content">
                                                    <div class="modal-header">
                                                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                            <span aria-hidden="true">&times;</span>
                                                        </button>
                                                        <h4 class="modal-title">Email</h4>
                                                    </div>
                                                    <div class="modal-body">
                                                        <div class="row">                   
                                                            <div class="col-lg-2">
                                                                <label for="exampleInputEmail1">Email address</label>
                                                            </div>
                                                            <div class="col-lg-10">
                                                                <input type="email" class="form-control form-control-lg" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email" style="width:281px">
                                                            </div>
                                                        </div>
    
                                                    </div>
                                                    <div class="modal-footer">
                                                        <button type="button" name="pdfbutton" onclick="location.href='@Url.Action("ExportPdf","AvisdCredit",new { TransID=item.tranId})'" id="pdfbutton" class="btn btn-default pull-left">Envoyer</button>
    
                                                       
    
                                                    </div>
                                                </div>
                                                <!-- /.modal-content -->
                                            </div>
                                            <!-- /.modal-dialog -->
                                        </div>
    
                                        <!-- fin du modaal-->
                                    </div>
                                   
                                </td>
    
                            </tr>
                        }
    
                    </tbody>
                }
                else
                {
    
                    <tbody></tbody>
    
                }
            </table>

    Voici la funcition JavaScrip avec ajax qui me permet de recuper les données du tableaux:

    function convertpdf(Numcpt,TransID, Trasa,Transn,Transd,TransVd) {
        
            $.ajax({
                url: "/AvisdCredit/ExportPdf",
                data: { 'Numcpt': Numcpt, 'TranId': TransID, 'Trasa': Trasa, 'Transn': Transn, 'Transd': Transd, 'TransVd': TransVd },
                type: "POST",
                dataType: "JSON",
                success: function () {
                    alert("Message Envoye");
                }
        });

    Ensuit une fois les donées recuperés voici dans mon controllerur la fonction de converstion en pdf

     [HttpPost]
            [ValidateInput(false)]
            public FileResult ExportPdf(string Numcpt, string TranId, string Trasa, string Transn, string Transd, string TransVd)
            {
                // string TID = Request.QueryString["TransID"];
                string numcpt_pdf = Numcpt;
                string tranid_pdf = TranId;
                string trasa_pdf = Trasa;
                string transn_pdf = Transn;
                string transd_pdf = Transd;
                string transvD_pdf = TransVd;
    
                StringBuilder sb = new StringBuilder();
                sb.Append("<h1>Avis de Credit</h1><br>");
                sb.Append("Numero de Compte:" + Numcpt);
                sb.Append("<br>Trans ID:" + TranId);
                sb.Append("<br>Trans Amount:" + Trasa);
                sb.Append("<br>Trans Narration:" + Transn);
                sb.Append("<br>Trans Date:" + Transd);
                sb.Append("<br>Trans Value Date:" + TransVd);
                sb.Append("<br><h1>Avis de Credit</h1>");
                sb.Append("Pour tout renseignement prière de contacter votre gestionnaire de compte");
    
                using (MemoryStream stream = new System.IO.MemoryStream())
                {
                    try
                    {
                        System.IO.StringReader sr = new StringReader(sb.ToString());
                        iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 10f, 10f, 10f, 10f);
                        PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
                        pdfDoc.Open();
                        XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
                        pdfDoc.Close();
                    }catch(FileFormatException e)
                    {
                        return File(e.Message,"Erreur");
                    }
                    
                    return File(stream.ToArray(), "application/pdf", "AvisdCredit.pdf");
                }
                
            }

    Je recupere les données de la fonction Javascrip dans la fonction ExportPdf, je cree un stringBuilder ou j'ajoutes touts les champs avec quelques elements html et la suit, mais apres plusieurs tantatives l'erreur que je recois au niveau du deboguage est:

    ReadTimeout = 'stream.ReadTimeout' a levé une exception de type 'System.InvalidOperationException'+MemoryStream

    et

    WriteTimeout = 'stream.WriteTimeout' a levé une exception de type 'System.InvalidOperationException'

    au niveau de MemoryStream stream = new System.IO.MemoryStream()

    pourtant j'ai de l'espace dans mon Ordinateur, je ne comprends pas.

    J'ai besoin de l'aide SVP.

    samedi 30 mars 2019 14:16