2012-08-03 107 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"); 
     }