Spire PDF for .NET 在ASP.NET中的使用 ---- 并非那么“美好”,有些挫折!

8/10/2015来源:ASP.NET技巧人气:3818

Spire PDF for .NET 在asp.net中的使用 ---- 并非那么“美好”,有些挫折!

笔者注:看此文前,请您先看一下上一篇文章吧。

昨天的时候,我测试了一下Spire PDF在WinForm程序中的应用,可以说用起来很简单(请忽略效率问题,没有进行测试)。不过在互联网如此发达的今天,适用WEB才是王道啊。因此,在今天我又在ASP.NET MVC4中体验了一下。准备看看在使用中有没有什么不同。


开发环境

  1. Microsoft Windows 7 With SP1 Ultimate Edition x86
  2. Microsoft VisialStudio 2013 With Update 4 Ultimate Edition
  3. Spire PDF for .NET Free Edition
  4. ASP.NET MVC 4

程序运行逻辑

1


生成模拟数据源

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的输出流,等待下载就好了。结果却并不是这样的。

2015-03-06_143250

久违的小黄页!这是什么鬼?

按照异常的字面意思应该是在Spire PDF中访问了什么Active插件或者COM组件

没办法,这能求助万能的度娘了(为啥不是谷歌?原因你懂的)。查了好久,终于在CSDN的一篇博文中看到了一个解决方案。就是在@Page指令中指定AspCompat属性的值为true。

2015-03-06_170607


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


建议

  1. Spire PDF for .NET在兼容ASP.NET方面还需要加强的。这也许是我没有深入了解这个组件,可能还有更好的使用方法。
  2. 执行效率可能会是一个问题。最开始,我尝试生成10000条数据的页面,生成PDF时死机了,无奈最终减少到10条数据。

运行效果

2015-03-06_171422


代码下载

https://sprepdfsdk2.codeplex.com/


最后,谢谢Yesi的邀请,也谢谢你们的团队的工作,期待Spire系列做的更好!