筆者注:看此文前,請您先看一下上一篇文章吧。
昨天的時候,我測試了一下Spire PDF在WinForm程序中的應(yīng)用,可以說用起來很簡單(請忽略效率問題,沒有進(jìn)行測試)。不過在互聯(lián)網(wǎng)如此發(fā)達(dá)的今天,適用WEB才是王道啊。因此,在今天我又在ASP.NET MVC4中體驗了一下。準(zhǔn)備看看在使用中有沒有什么不同。
開發(fā)環(huán)境
程序運行邏輯
生成模擬數(shù)據(jù)源
1 [ActionName("Generate")]2 public ActionResult GenerateDynamicDataSource()3 {4 return View(DynamicDataSourceDispatcher.GetDataSource());5 }DataSource
執(zhí)行導(dǎo)出
1 PdfDocument documentInstance = new PdfDocument();2 documentInstance.LoadFromHTML("http://localhost:1/mvc4/controller/action=Generate", false, false, true);Spire PDF
異常初現(xiàn)
按照昨天的代碼,到此時這段代碼基本上就已經(jīng)結(jié)束了,只剩下寫入到HttPResponse的輸出流,等待下載就好了。結(jié)果卻并不是這樣的。
久違的小黃頁!這是什么鬼?
按照異常的字面意思應(yīng)該是在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 }ExportHandler.aspx.cs
建議
運行效果
代碼下載
https://sprepdfsdk2.codeplex.com/
最后,謝謝Yesi的邀請,也謝謝你們的團(tuán)隊的工作,期待Spire系列做的更好!
新聞熱點
疑難解答