Generating PDF in ASP.NET MVC by using HTML files for dynamic data

痞子三分冷 提交于 2020-08-09 07:00:44

问题


I am trying to generate the PDF on button click in asp.net-mvc and it's generating the data by using the .html() of the table

Here is the logic which I tried.

$(function () {
  $("#btnExportPDF").click(function () {                                           
     $("input[name='GridHtml']").val($("#grdCicleDatatable_wrapper").html());
  });
});
<input id="btnFilter1" type="button" value="Filter" class="button" />

@*<input id="btnExportPDF" type="button" value="Export to PDF" class="button" />*@

@using (Html.BeginForm("Export", "App", FormMethod.Post))
 {
   <input type="hidden" name="GridHtml" />
   <input type="submit" id="btnExportPDF" value="Export" />
 }
                            
                            
[HttpPost]
[ValidateInput(false)]
public FileResult Export(string GridHtml)
{
   using (MemoryStream stream = new System.IO.MemoryStream())
   {
       StringReader sr = new StringReader(GridHtml);
       Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
       PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
       pdfDoc.Open();
       XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
       pdfDoc.Close();
       return File(stream.ToArray(), "application/pdf", "SignOffSheet.pdf");
   }
}                            

Here is the link from where I tried.

But I want to use an Other HTML file to bring the show the data instead of GridHtml data container.

Here is my HTML which is more precise to use

<!doctype html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="description" content="" />
    <title>Signoffsheet PDF - Fiber Inventory Portal</title>
</head>

<body>
    <table cellspacing="" cellpadding="0" width="100%" border="1" style="font-family: Arial, Helvetica, sans-serif; font-size:11px;border-collapse: collapse;">
        <tbody>
            <tr>
                <td>
                    <table cellspacing="15" cellpadding="0" width="100%" border="0">
                        <tbody>
                            <tr>
                                <td>
                                    <table cellspacing="0" cellpadding="10" width="100%" border="1" style="border-collapse:collapse;">
                                        <tbody>
                                            <tr>
                                                <td align="center" style="font-size:16px;">
                                                    <b>FIBER SIGNOFF SHEET</b>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <table cellspacing="0" cellpadding="5" width="100%" border="0">
                                        <tbody>
                                            <tr>
                                                <td align="right" width="20%"><b>Circle Name :</b></td>
                                                <td align="left"><b>BR</b></td>
                                            </tr>
                                            <tr>
                                                <td align="right"><b>SP Name :</b></td>
                                                <td align="left"><b>NIPL</b></td>
                                            </tr>
                                            <tr>
                                                <td align="right"><b>Inventory For :</b></td>
                                                <td align="left"><b>Jun&apos;20</b></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <table cellspacing="0" cellpadding="5" width="100%" border="1" style="border-collapse:collapse;">
                                        <thead>
                                            <tr style="background-color:#002060;color:#ffffff;-webkit-print-color-adjust: exact;">
                                                <th bgcolor="#002060" align="center" rowspan="3">S.No.</th>
                                                <th bgcolor="#002060" align="center" rowspan="3">Maintenance Point</th>
                                                <th bgcolor="#002060" align="center" colspan="8">Billable Scope Approved by CMM</th>
                                                <th bgcolor="#002060" align="center" colspan="3">Commited Manpower</th>
                                            </tr>
                                            <tr bgcolor="#002060" style="background-color:#002060;color:#ffffff;-webkit-print-color-adjust: exact;">
                                                <th bgcolor="#002060" align="center" colspan="2">Intercity</th>
                                                <th bgcolor="#002060" align="center" colspan="2">Intracity</th>
                                                <th bgcolor="#002060" align="center" colspan="2">Enterprise</th>
                                                <th bgcolor="#002060" align="center" colspan="2">Overall</th>
                                                <th bgcolor="#002060" align="center" rowspan="2">FRT</th>
                                                <th bgcolor="#002060" align="center" rowspan="2">Fiber<br /> Supervisor</th>
                                                <th bgcolor="#002060" align="center" rowspan="2">Patroller</th>
                                            </tr>
                                            <tr bgcolor="#002060" style="background-color:#002060;color:#ffffff;-webkit-print-color-adjust: exact;">
                                                <th bgcolor="#002060" align="center">Aerial</th>
                                                <th bgcolor="#002060" align="center">UG</th>
                                                <th bgcolor="#002060" align="center">Aerial</th>
                                                <th bgcolor="#002060" align="center">UG</th>
                                                <th bgcolor="#002060" align="center">Aerial</th>
                                                <th bgcolor="#002060" align="center">UG</th>
                                                <th bgcolor="#002060" align="center">Aerial</th>
                                                <th bgcolor="#002060" align="center">UG</th>
                                            </tr>
                        </tbody>
                        <tbody>
                            <tr>
                                <td align="center" width="4%">1</td>
                                <td align="center" width="19%">Arrah</td>
                                <td align="center" width="7%">-</td>
                                <td align="center" width="7%">752.15</td>
                                <td align="center" width="7%">-</td>
                                <td align="center" width="7%">89.6</td>
                                <td align="center" width="7%">-</td>
                                <td align="center" width="7%">0.6</td>
                                <td align="center" width="7%">0.0</td>
                                <td align="center" width="7%">842.35</td>
                                <td align="center" width="7%"></td>
                                <td align="center" width="7%"></td>
                                <td align="center" width="7%"></td>
                            </tr>
                            <tr>
                                <td align="center">2</td>
                                <td align="center">Aurangabad-BH</td>
                                <td align="center">-</td>
                                <td align="center">1,651.3</td>
                                <td align="center">-</td>
                                <td align="center">104.4</td>
                                <td align="center">0.4</td>
                                <td align="center">5.0</td>
                                <td align="center">0.4</td>
                                <td align="center">1,760.7</td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                            </tr>
                            <tr>
                                <td align="center">3</td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                            </tr>
                            <tr>
                                <td align="center">4</td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                            </tr>
                        </tbody>
                        <tfoot>
                            <tr bgcolor="#002060" style="background-color:#002060;color:#ffffff;-webkit-print-color-adjust: exact;">
                                <td bgcolor="#002060" align="center"></td>
                                <td bgcolor="#002060" align="center">Total</td>
                                <td bgcolor="#002060" align="center">0.0</td>
                                <td bgcolor="#002060" align="center">14,580.8</td>
                                <td bgcolor="#002060" align="center">11.3</td>
                                <td bgcolor="#002060" align="center">2,054.8</td>
                                <td bgcolor="#002060" align="center">0.4</td>
                                <td bgcolor="#002060" align="center">16.1</td>
                                <td bgcolor="#002060" align="center">11.8</td>
                                <td bgcolor="#002060" align="center">16,651.6</td>
                                <td bgcolor="#002060" align="center"></td>
                                <td bgcolor="#002060" align="center"></td>
                                <td bgcolor="#002060" align="center"></td>
                            </tr>
                        </tfoot>
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table cellspacing="0" cellpadding="5" width="100%" border="1"
                           style="border-collapse:collapse;">
                        <tbody>
                            <tr>
                                <td align="center" width="25%">SP Circle Head</td>
                                <td align="center" width="25%">RJIL Fiber SME</td>
                                <td align="center" width="25%">RJIL CMM</td>
                                <td align="center" width="25%">RJIL CTO</td>
                            </tr>
                            <tr>
                                <td align="center" height="50px"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                            </tr>
                            <tr>
                                <td align="center">Signature &amp; Date</td>
                                <td align="center">Signature &amp; Date</td>
                                <td align="center">Signature &amp; Date</td>
                                <td align="center">Signature &amp; Date</td>
                            </tr>
                            <tr>
                                <td align="center" height="50px"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                                <td align="center"></td>
                            </tr>
                            <tr>
                                <td align="center">Name</td>
                                <td align="center">Name</td>
                                <td align="center">Name</td>
                                <td align="center">Name</td>
                            </tr>
                        </tbody>
                    </table>
                </td>
            </tr>
        </tbody>
    </table>
   
</body>

</html>

回答1:


you can just use this:

 <button type="button" onclick="window.print()">Print</button>



回答2:


You may use Response.Redirect to view with your 'clear' table and implement your export in controller of that view.



来源:https://stackoverflow.com/questions/62683493/generating-pdf-in-asp-net-mvc-by-using-html-files-for-dynamic-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!