筆者注:看此文前,請您先看一下上一篇文章吧。
昨天的時候,我測試了一下Spire PDF在WinForm程序中的應用,可以說用起來很簡單(請忽略效率問題,沒有進行測試)。不過在互聯網如此發達的今天,適用WEB才是王道啊。因此,在今天我又在ASP.NET MVC4中體驗了一下。准備看看在使用中有沒有什么不同。
開發環境
- Microsoft Windows 7 With SP1 Ultimate Edition x86
- Microsoft VisialStudio 2013 With Update 4 Ultimate Edition
- Spire PDF for .NET Free Edition
- ASP.NET MVC 4
程序運行邏輯
生成模擬數據源

1 [ActionName("Generate")] 2 public ActionResult GenerateDynamicDataSource() 3 { 4 return View(DynamicDataSourceDispatcher.GetDataSource()); 5 }
執行導出

1 PdfDocument documentInstance = new PdfDocument(); 2 documentInstance.LoadFromHTML("http://localhost:1/mvc4/controller/action=Generate", false, false, true);
異常初現
按照昨天的代碼,到此時這段代碼基本上就已經結束了,只剩下寫入到HttpResponse的輸出流,等待下載就好了。結果卻並不是這樣的。
久違的小黃頁!這是什么鬼?
按照異常的字面意思應該是在Spire PDF中訪問了什么Active插件或者COM組件。
沒辦法,這能求助萬能的度娘了(為啥不是谷歌?原因你懂的)。查了好久,終於在CSDN的一篇博文中看到了一個解決方案。就是在@Page指令中指定AspCompat屬性的值為true。
ExportHandler.aspx 無奈之舉
無奈,先試試吧,看看能否滅掉小黃頁。
將上面的代碼CtrlX+V到這個頁面的Page_Load里,“F5”了一下,居然解決了上述問題。

1 protected void Page_Load(object sender, EventArgs e) 2 { 3 PdfDocument documentInstance = new PdfDocument(); 4 documentInstance.LoadFromHTML(HttpUtility.UrlDecode(this.Request.QueryString["targetDataSourceUri"]), false, false, true); 5 this.Response.ContentType = "application/pdf"; 6 this.Response.AddHeader("Content-Disposition", "attachment;filename=Spire PDF for ASPNET.pdf"); 7 documentInstance.SaveToStream(this.Response.OutputStream, FileFormat.PDF); 8 }
建議
- Spire PDF for .NET在兼容ASP.NET方面還需要加強的。這也許是我沒有深入了解這個組件,可能還有更好的使用方法。
- 執行效率可能會是一個問題。最開始,我嘗試生成10000條數據的頁面,生成PDF時死機了,無奈最終減少到10條數據。
運行效果
代碼下載
https://sprepdfsdk2.codeplex.com/
最后,謝謝Yesi的邀請,也謝謝你們的團隊的工作,期待Spire系列做的更好!