在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#开源模板引擎。官方地址: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:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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 代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<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>
分享到:
相关推荐
网页打印控件 Lodop 2.0 专业精致版
lodop取意自“load or print”,是一款优秀的Web打印控件。 在B/S系统中,传统打印控件总是“页面看到什么才能打印什么”,缺乏灵活性,使打印略显 呆板。而使用lodop则可以做到“只看想看的、打印想打的”,不仅...
使用lodop进行html打印,该资源包含了对应的JS和使用方式
lodop4.0 web打印控件
Lodop6 WEB打印插件,最好用的打印控件
在本资源中,我们将介绍如何使用Lodop在UniApp中打印标签,包括如何定义标签样式、打印内容和打印方式等。此外,我们还将提供一些示例代码和相关的技术资料,帮助读者更好地理解和掌握该技术的实现原理和应用场景。 ...
打印控件Lodop是一款专业共享软件,公开发行版本没有功能限制,多数用户可免费长期使用,仅如下功能需要注册使用权: 1、 (不经过预览的)“直接打印”功能; 2、 “导出数据到Excel文件” 功能; 其设计目标是简单...
Lodop是一款专业的WEB打印控件,其设计目标是简单易用、功能足够强大,...Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实现复杂的打印任务,尽量减少使用者的知识累赘。
Lodop是一款专业的WEB打印控件,其设计目标是简单易用、功能强大且短小精悍,开创WEB打印开发的新局面 这是一个完整的测试实例,包括安装包,打印实例,说明文档
里面包含 6.0.1.2和4.0 两个版本的 lodop WEB打印控件,附带4.0DEMO。
基于Lodop控件的Web打印,打印不用再借助报表,web页面直接打印,所见即所得,设置位置方便。只要left、top、right、bootm四个属性搞定
lodopweb打印控件,强大的web打印控件,好用
WEB打印控件Lodop,web项目开发打印推荐工具!!!!!!
web打印报表控件Lodop,很简单,实用的
使用手册 lodop5.0使用手册 lodop5.0使用手册 lodop5.0
lodop批量分页打印实现,方便省事快速,解决bs系统难题。
使用LODOP的控件打印其他的页面,LodopFuncs.js需要自己去下载,其他的CLodopPrint_Setup_for_Win64NT,install_lodop32需要自己安装,这样文档里代码才能使用
LODOP是目前流行的WEB控件 Lodop6.0技术手册.doc
lodop的exe,api,Sample的整合