2012-08-03 75 views
4

如何导出的WebGrid为.pdf文件在MVC .NET Web应用程序?出口的WebGrid为PDF ASP MVC剃刀

+0

开始与见[此](http://forums.asp.net/t/1694235.aspx/1?Export+my+table+data+to+PDf+in+Asp+net)和[此](http://forums.asp.net/t/1694235.aspx/1?Export+my+table+data+to+PDf+in+Asp+net) – Yasser 2012-08-03 11:52:40

+0

所有of'em是“码后面“:/ – Kira 2012-08-04 12:00:15

+1

,你想......? – Yasser 2012-08-04 12:38:57

回答

1

这里有一对夫妇的方式做到这一点:

  • 您可以使用RazorPDF如前面响应
  • 可以使用Rotativa提及。其工作原理非常快,但你需要的权限来运行在完全信任的服务器,作为一个可执行文件时PDF转换
  • 您可以使用iTextSharp这将是最困难的/笨重实现,但在同一时间,你都可以灵活地写,你想

。希望helps-

0

有关完整的参考PDF文档,请按照How to Export Webgrid to PDF in MVC4 Application

创建一个动作链接到您的视图

页3210
<div> 
    Export Data : @Html.ActionLink("Export to PDF","GETPdf","Webgrid") 
</div> 

然后创建一个MVC行动出口的WebGrid数据PDF文件。这里iTextSharp.dll用于导出pdf文件。

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"); 
     }