For full help, please follow How to Export Webgrid to PDF in MVC4 Application
Create an action link to the watch page
<div> Export Data : @Html.ActionLink("Export to PDF","GETPdf","Webgrid") </div>
then create an MVC action to export the webgrid data to a pdf file. Here iTextSharp.dll is used to export the pdf file.
public FileStreamResult GETPdf() { List<CustomerInfo> all = new List<CustomerInfo>(); using (MyDatabaseEntities dc = new MyDatabaseEntities()) { all = dc.CustomerInfoes.ToList(); } WebGrid grid = new WebGrid(source: all, canPage: false, canSort: false); string gridHtml = grid.GetHtml( columns: grid.Columns( grid.Column("CustomerID", "Customer ID"), grid.Column("CustomerName", "Customer Name"), grid.Column("Address", "Address"), grid.Column("City", "City"), grid.Column("PostalCode", "Postal Code") ) ).ToString(); string exportData = String.Format("<html><head>{0}</head><body>{1}</body></html>", "<style>table{ border-spacing: 10px; border-collapse: separate; }</style>", gridHtml); var bytes = System.Text.Encoding.UTF8.GetBytes(exportData); using (var input = new MemoryStream(bytes)) { var output = new MemoryStream(); var document = new iTextSharp.text.Document(PageSize.A4, 50, 50, 50, 50); var writer = PdfWriter.GetInstance(document, output); writer.CloseStream = false; document.Open(); var xmlWorker = iTextSharp.tool.xml.XMLWorkerHelper.GetInstance(); xmlWorker.ParseXHtml(writer, document, input, System.Text.Encoding.UTF8); document.Close(); output.Position = 0; return new FileStreamResult(output, "application/pdf"); }
source share