通过好友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功能_打印表格");
//报表标题
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>

  三、运行截图

  最后一页打印预览:

  打印机横向打印:

  四、注意事项

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

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

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

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

    安装VS2010 首先安装VS2010,安装过程请参考文章: http://www.cnblogs.com/ywqu/archive/2010/01/27/1657450.html. 创建第一个MVC ...

  2. 通过 pip 安装软件时提示 0.1.36ubuntu1,0.23ubuntu1 is an invalid version 的完美解决方案。

    通过 pip 安装软件时提示 0.1.36ubuntu1,0.23ubuntu1 is an invalid version and will not be supported in a future ...

  3. 一起谈.NET技术,NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询

    系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...

  4. 一起谈.NET技术,.NET4.0 之 Dynamic VS Reflection 效率

    在我先前的文章中,不断的推广.NET4.0新特性.特别是.NET4.0 Dynamic 这个新特性.随之而来的问题也出现了-Dynamic 执行效率如何? 我们做开发的不光需要代码简洁,能够希望自己能 ...

  5. 一起谈.NET技术,也玩MVC3.0 Razor自定义视图引擎来修改默认的Views目录结构

    刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣.今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问.随手贴出来希望大家指教指教. MVC的视图文件目录被固定/Views目录内 ...

  6. 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发

    日前微软已经发布ASP.NET MVC 2框架RC版,究竟这次RC版本的发布对于WEB开发者带来怎样的改变?以及未来ASP.NET MVC 2正式版还会有哪些改进?带着这样的问题,我们51CTO记者彭 ...

  7. Asp.Net MVC2.0 Url 路由入门---实例篇

    本篇主要讲述Routing组件的作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术. 接着上一篇开始讲,我们在Global.asax中注册一条路由后,我们的请求是怎么转到相应的Vi ...

  8. Asp.net MVC2.0系列文章-MVC简介篇

    使用微软VS工具开发Web应用程序主要有两种方式:一种是常用的创建Asp.net Web Forms,另外一种就是今天着重介绍的Asp.net  MVC. <?XML:NAMESPACE PRE ...

  9. 浅谈Hybrid技术的设计与实现【转】

    https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...

最新文章

  1. (剑指Offer)面试题61:按之字形顺序打印二叉树
  2. DD_belatedPNG
  3. cocos2dx 3.x(屏幕截图的两种方法)
  4. asp.net core新特性(1):TagHelper
  5. 使用Druid数据库连接池整合MyBatis Plus时,出现Error attempting to get column 'startTime' from result set. 类似错误
  6. matlab 多项式提取,matlab提取多项式系数
  7. 批量部署windows和linux系统,使用Cobbler批量部署Linux和Windows:Windows系统批量安装(三)...
  8. 配色教程,学习RGB配色,最简单的配色基础。
  9. 使用HEVC官方编码器HM
  10. uni-app 实现简单登录注册demo
  11. 五一就要到了,我用Python制作一款钉钉低价机票提示器!
  12. Js获取中国农历,用于确定非固定的农历节假日
  13. excel查重技巧:如何用组合函数快速统计重复数据(上)
  14. 生活中什么因素会诱发滑膜炎?
  15. java保存cookie在本地_Java保存Cookie
  16. android 严振杰权限管理,MyAndroidFrameWork
  17. QT信号槽与connect的常见写法
  18. 代码整洁之道(上篇)
  19. TCL 语言——12 条语法和语义规则
  20. kettle 大数据整合(三)

热门文章

  1. thinkphp框架起步认识
  2. NLP复习资料(2)-三~五章:形式语言、语料库、语言模型
  3. linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...
  4. Ubuntu配置IPFS的环境
  5. sqliteorm的sync_schema介绍
  6. 启动linux的rpc服务的命令
  7. 深入理解Solidity
  8. 安卓布局参数类LayoutParams
  9. 如何吸引财富呢?请做这六件事吧!
  10. Springboot 项目中过滤器的使用