笔者注:看此文前,请您先看一下上一篇文章吧。
昨天的时候,我测试了一下Spire PDF在WinForm程序中的应用,可以说用起来很简单(请忽略效率问题,没有进行测试)。不过在互联网如此发达的今天,适用WEB才是王道啊。因此,在今天我又在ASP.NET MVC4中体验了一下。准备看看在使用中有没有什么不同。
开发环境
程序运行逻辑
生成模拟数据源
class="code_img_closed" src="/Upload/Images/2015030619/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('dead8b6a-a658-41e5-8b7c-9649749bdc24',event)" src="/Upload/Images/2015030619/2B1B950FA3DF188F.gif" alt="" />
1 [ActionName("Generate")] 2 public ActionResult GenerateDynamicDataSource() 3 { 4 return View(DynamicDataSourceDispatcher.GetDataSource()); 5 }DataSource
执行导出
1 PdfDocument documentInstance = new PdfDocument(); 2 documentInstance.LoadFromHTML("http://localhost:1/mvc4/controller/action=Generate", false, false, true);Spire PDF
异常初现
按照昨天的代码,到此时这段代码基本上就已经结束了,只剩下写入到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 }ExportHandler.aspx.cs
建议
运行效果
代码下载
https://sprepdfsdk2.codeplex.com/
最后,谢谢Yesi的邀请,也谢谢你们的团队的工作,期待Spire系列做的更好!