在MVC2.0使用Lo“.NET研究”dop为WEB打印提出完美解决方案

  通过好友CallHot介绍Lodopweb打印控件。由于是国人开发的,故这两天认真了研究下,打算在未来的项目中使用。现将学习成果与园友分享。如果存在不足的地方,希望您指出。

  具体的实现步骤如下:

  一、准备工作

   1.MVC2.0 + jQuery1.4.1 开发环境。

  2.Lodop web 打印控件,官方地上海闵行企业网站设计与制作址:http://mtsoftware.v053.gokao.net/download.html  (注:国人开发,免费软件)。

  3.StringTemplate,C#开源模板引擎。官方地址:http://www.stringtemplate.org。

  本文主要给出WEB下打印步骤实现方案,具体的技术实现细节,请查看官方API。lodop,stringtemplate 官方已给出了详尽的文档说明。

  二、MVC2.0使用StringTemplate构造打印模板

  StringTemplate 文中简称st。网络上有相关文档介绍st效率还不错。本文将st作为报表打印模板。在实际项目开发中将繁杂的报表打印工作内容,部分分配给美工来处理。而开发人员只需提供数据源接口。使用st可以减轻开发人员的工作量。并将报表开发任务分工更细致。给项目带来的好处就不多论了。具体实现如下:

  1.在MVC2.0项目中引用st核心dll:

  2.建立st的模板文件,template.st(st模板专用文件):

  也可以认为st文件就是一个普通的html文件。该部分主要由美工负责处理,比如CSS。

  3.在MVC2.0 controller 内建立提供数据源的 JsonResult:


public JsonResult Print()
{
//构造打印数据
List<CustomerTest> list = new List<CustomerTest>();
for (int i = 0; i < 100; i++)
{
list.Add(上海企业网站制作>new CustomerTest { CustomerName = "candy" + i, CustomerAddress = "思明区" + i, CustomerPhone = "13148484855" + i });
list.Add(new CustomerTest { CustomerName = "linda" + i, CustomerAddress = "湖里区" + i, CustomerPhone = "13847487545" + i });
list.Add(new CustomerTest { CustomerName = "ellie" + i, CustomerAddress = "海昌区" + i, CustomerPhone = "1359984665" + i });
}

//StringTemplate 打印模板文件,实际项目中为提高程序效率,应将打印模板文件缓存。
string serverPath = System.Web.HttpContext.Current.Server.MapPath("~");
string path = Path.Combine(serverPath, @"PrintTemplate\");

StringTemplateGroup group = new StringTemplateGroup("myGroup", path, typeof(TemplateLexer));
StringTemplate st = group.GetInstanceOf("template");
st.SetAttribute("customer", list);

//为打印提供html相关超文本内容。
StringBuilder sb = new StringBuilder();
sb.Append(@"<html xmlns='http://www.w3.org/1999/xhtml' lang='zh-CN'>");
sb.Append("<head>");
sb.Append(@"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
sb.Append(@"<meta http-equiv='Content-Language' content='zh-CN' />");
string cssContent = System.IO.File.ReadAllText(Path.Combine(serverPath, @"Content\CSS\CSSForPrint.css"));
sb.Append(@"<style type='text/css'>");
sb.Append(cssContent);
sb.Append(@"</style>");
sb.Append("</head>");
sb.Append("<body>");
sb.Append(st.ToString());
sb.Append(" ");
sb.Append("</body>");
sb.Append("</html>");

return Json(new { success = true, data = sb.ToString() }, JsonRequestBehavior.AllowGet);
}

  其中CustomerTest是自定义数据类,已经给出详细的注释了。仔细阅读不难理解。

  4.MVC2.0 view html head 内加入js 代码:


<asp:Content ID="Content3" ContentPlaceHolderID="Head" runat="server">
<script language="javascript" src="CheckActivX.js"></script>
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width="0"
height="0">
</object>
<script type="text/javascript">
上海闵行企业网站制作>
function prn1_preview(data) {
LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_打印表格上海网站建设style="color: #000000;">");
//报表标题
LODOP.ADD_PRINT_HTM(50, 300, 330, 300,
"<font color ='black' size ='6'>客户列表</font><font color ='blue' size ='2'>(制表人:张三)</font>");
//报表内容打印。
LODOP.ADD_PRINT_TABLE(100, 150, 760, 900, data);
LODOP.PREVIEW();
};

$(function () {
$("#btnPrint").click(function () {
var url = '<%=Url.Action("Print","Home") %>';
$.ajax({
type: "POST",
url: url,
cache: false,
dataType: 'json',
success: function (result) {
if (result.success) {
prn1_preview(result.data);
}
}
});
});
})
</script>
</asp:Content>

  三、运行截图

  最后一页打印预览:

  打印机横向打印:

上海徐汇企业网站设计与制作c="http://pic002.cnblogs.com/images/2010/102419/2010122616182939.png" alt="" width="660" />

  四、注意事项

   本文给出的web打印方案需要读者对MVC2.0 、jQuery 、StringTemplate 有一定的了解。另外本例只是在IE下实现了WEB打印,如果需要Firefox或其他浏览器下支持web打印请联系Lodop作者

  希望本篇文章可以给您带来帮助,如有不足之处欢迎指出,谢谢!

时间: 2024-09-08 19:28:19

在MVC2.0使用Lo“.NET研究”dop为WEB打印提出完美解决方案的相关文章

在MVC2.0使用Lodop为WEB打印提出完美解决方案

通过好友CallHot介绍Lodopweb打印控件.由于是国人开发的,故这两天认真了研究下,打算在未来的项目中使用.现将学习成果与园友分享.如果存在不足的地方,希望您指出. 具体的实现步骤如下: 一.准备工作 1.MVC2.0 + jQuery1.4.1 开发环境. 2.Lodop web 打印控件,官方地址:http://mtsoftware.v053.gokao.net/download.html  (注:国人开发,免费软件). 3.StringTemplate,C#开源模板引擎.官方地址:

一起谈.NET技术,在MVC2.0使用Lodop为WEB打印提出完美解决方案

通过好友CallHot介绍Lodopweb打印控件.由于是国人开发的,故这两天认真了研究下,打算在未来的项目中使用.现将学习成果与园友分享.如果存在不足的地方,希望您指出. 具体的实现步骤如下: 一.准备工作   1.MVC2.0 + jQuery1.4.1 开发环境. 2.Lodop web 打印控件,官方地址:http://mtsoftware.v053.gokao.net/download.html  (注:国人开发,免费软件). 3.StringTemplate,C#开源模板引擎.官方地

Tine 2.0 Maischa(2011/05)Build 1基于Web的群件解决方案

Tine 是一个基于Web的群件解决方案,侧重于实用性和正确性.为了实现这些目标,该项目采用的可用性专家和涵盖了大部分的代码单元测试.Tine 2.0包含支持联系人,任务,http://www.aliyun.com/zixun/aggregation/8856.html">客户关系管理,网络电话集成, timetracker ,以及灵活的权限管理系统. 此次更新重点在在于提供整合第三方应用,增强可用性和管理功能. Tine 2.0 Maischa (2011/05) Build 1更新日志

MVC2.0本“.NET研究”地化(另类解决方案)&amp;lt;上&amp;gt;

前不久看见一篇文章:在asp.net中使用Response.Filter 过滤网站敏感字符的解决方案.于是我借题发挥用Response.Filter 为MVC2.0 进行多国语言本地化.如果存在不足的地方,希望您指出. 本文主要给出具体思路,希望能给读者带来一定的启发:日常开发中不是所有的方案要中规中矩用常用方法解决问题.比如本文的本地化就不用resource文件来处理. 具体步骤: 一.建立自定义的LocalizationHandler类 LocalizationHandler 继承Syste

MVC2.0本地化(另类解决方案)&amp;“.NET研究”lt;下&amp;gt;

本文是对MVC2.0本地化(另类解决方案)上这篇文章内介绍的MVC2.0本地化功能进行加强.细化的结尾篇.如果存在不足的地方,希望您指出. 如何对上篇文章进行加强以及细化呢?主要从以下三点开始. 1.根据用户浏览器自动语言判断,同时也可由用户自定义站点语言. 2.多语言加入,类似resource文件,可以有多个语言资源库. 3.全局本地化,可以本地化非页面内容,比如为台异步到前台的json数据本地化等. 主要步骤如下: 一.根据用户浏览器自动语言判断,同时也可由用户自定义站点语言 这个实现思路为

MVC2.0 用Area 扩展项目的目录结构

Area是MVC2.0里新特性,但是感觉在项目中应用的不是很多,也许是项目比较小吧,没有在意目录结构的整理,举个例子来说吧,比如我们在管理自己项目的后台时候需要建立一个Admin目录,总感觉Admin建在View目录下不是很好,而且对URL显示也不是很完美..比如/Admin/index.aspx- 如果能有一个目录来单独管理Admin 是很完美滴- 在 MVC1.0时没办法实现这个功能,MVC2.0 提供了Area 特性,用来管理越来越庞大的项目目录结构.. 在VS2010里面项目上右键.添加

使用VS2010和MVC2.0增强验证功能

在开始之前,我不得不说明我已经安装了VS 2010 RC1,并使用它将老版本转换为ASP.Net 4.0 大多数情况下,当你接收到来自用户从form表单post来的信息后,你的验证代码往往会检查相应的值是否存在,数据类型是否正确以及数据的范围是否正确.至少,你应该保证每当一个函数接受用户输入时,就应该执行相应的验证逻辑.这意味着有些时候在整个程序中的不同位置,你会对同一个或者相似的值进行多次验证.比如说你想限制用户的姓氏不大于20个字符,那这样的验证需要在程序的好几个部分实现.直到Jan Ven

MVC2.0:用Area扩展项目的目录结构

Area是MVC2.0里新特性,但是感觉在项目中应用的不是很多,也许是项目比较小吧,没有在意目录结构的 整理,举个例子来说吧,比如我们在管理自己项目的后台时候需要建立一个Admin目录,总感觉Admin建在 View目录下不是很好,而且对URL显示也不是很完美..比如/Admin/index.aspx- 如果能有一个目录来单独 管理Admin 是很完美滴- 在 MVC1.0时没办法实现这个功能,MVC2.0 提供了Area 特性,用来管理越来越庞大的项目目录结 构.. 在VS2010里面项目上右

Asp.net MVC2.0系列文章-运行Web MVC2.0 Demo

安装VS2010 首先安装VS2010,安装过程请参考文章: http://www.cnblogs.com/ywqu/archive/2010/01/27/1657450.html. 创建第一个MVC2.0程序 新建一个asp.net MVC2.0网站程序,如下图: 提示是否新建单元测试工程,选择创建Unit Test Project MVC2.0网站结构图