Spire PDF for .NET 在ASP.NET中的使用 ---- 并非那么“美好”,有些挫折!
笔者注:看此文前,请您先看一下上一篇文章吧。
昨天的时候,我测试了一下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
程序运行逻辑

生成模拟数据源
[ActionName("Generate")]
public ActionResult GenerateDynamicDataSource()
{
return View(DynamicDataSourceDispatcher.GetDataSource());
}
DataSource
执行导出
PdfDocument documentInstance = new PdfDocument();
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”了一下,居然解决了上述问题。
protected void Page_Load(object sender, EventArgs e)
{
PdfDocument documentInstance = new PdfDocument();
documentInstance.LoadFromHTML(HttpUtility.UrlDecode(this.Request.QueryString["targetDataSourceUri"]), false, false, true);
this.Response.ContentType = "application/pdf";
this.Response.AddHeader("Content-Disposition", "attachment;filename=Spire PDF for ASPNET.pdf");
documentInstance.SaveToStream(this.Response.OutputStream, FileFormat.PDF);
}
ExportHandler.aspx.cs
建议
- Spire PDF for .NET在兼容ASP.NET方面还需要加强的。这也许是我没有深入了解这个组件,可能还有更好的使用方法。
- 执行效率可能会是一个问题。最开始,我尝试生成10000条数据的页面,生成PDF时死机了,无奈最终减少到10条数据。
运行效果

代码下载
https://sprepdfsdk2.codeplex.com/
最后,谢谢Yesi的邀请,也谢谢你们的团队的工作,期待Spire系列做的更好!
Spire PDF for .NET 在ASP.NET中的使用 ---- 并非那么“美好”,有些挫折!的更多相关文章
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
原文 [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵 ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 绘制矢量图
原文 [译]在Asp.Net中操作PDF - iTextSharp - 绘制矢量图 在上一篇iTextSharp文章中讲述了如何将现有的图片插入PDF中并对其进行操作.但有时,你需要在PDF中绘制不依 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 操作图片
原文 [译]在Asp.Net中操作PDF – iTextSharp - 操作图片 作为我的iTextSharp系列的文章的第七篇,开始探索使用iTextSharp在PDF中操作图片,理解本篇文章需要看 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 使用表格
原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用表格 使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并 ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版(转)
[译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵盖 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 使用链接和书签
原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用链接和书签 用户和PDF文档的交互可以通过锚(链接)和书签进行,接着我前面iTextSharp的系列文章,本篇文章主要讲通过 ...
- 【译】在Asp.Net中操作PDF – iTextSharp-列表
原文 [译]在Asp.Net中操作PDF – iTextSharp-列表 在前文中,我们已经知道了如何利用iTextSharp创建PDF文档,设置字体样式和风格.本文开始讲述iTextSharp中的有 ...
- 【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
原文 [译]在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本 本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过As ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
原文 [译]在Asp.Net中操作PDF - iTextSharp - 使用字体 紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方 ...
随机推荐
- 【具体数学 读书笔记】1.2 Lines in the Plane
本节介绍平面划分问题,即n条直线最多把一个平面划分为几个区域(region). 问题描述: "What is the maximum number Ln of regions defined ...
- hdu 5506 GT and set(dfs爆搜)
Problem Description You are given N sets.The i−th set has Ai numbers.You should divide the sets into ...
- Tree(prime)
Tree Time Limit : 6000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- android stuido 快捷键
Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码 ...
- web Form 表单method="get" method="post" 区别
get和post方法的不同 在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的.Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际 ...
- 蜗牛爱课 -- iOS 设置UIButton的字体的大小、显示位置、大小
/设置按钮上的自体的大小 //[btn setFont: [UIFont systemFontSize: 14.0]]; //这种可以用来设置字体的大小,但是可能会在将来的SDK版本中去除改方法 ...
- title:EL表达式获取Map里面的数值失败的问题
在控制器中定义了一个Map<Integer,String>集合,看似没有问题,将这个集合的对象map传递到一个JSP页面中,我们都知道,用EL表达式 ${map[key]}就可以取得key ...
- Android输入法 监听事件
登录界面有一个输入用户名和密码的编辑框: private EditText et_userName;// 账户 private EditText et_password;// 密码 布局文件如下: & ...
- Android_Dialog cancle 和dismiss 区别
AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同? AlertDialog继承与Dialog,现在各位看看结构图: 然后在Dialog类中找到了 ...
- 把WCF服务部署服务器IIS异常(详细:处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”)
详细:处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 原因: vs2010默认的是4.0框架,4.0的框架是独立的CLR,和2.0 ...