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

简介:   通过好友CallHot介绍Lodopweb打印控件。由于是国人开发的,故这两天认真了研究下,打算在未来的项目中使用。现将学习成果与园友分享。如果存在不足的地方,希望您指出。  具体的实现步骤如下:  一、准备工作   1.MVC2.0 + jQuery1.4.1 开发环境。

  通过好友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作者

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

目录
相关文章
|
18天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
158 3
|
4月前
|
编解码 前端开发 JavaScript
.NET_web前端框架_layui_栅格布局
【8月更文挑战第27天】
52 4
|
18天前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
3月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
3月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
111 3
|
3月前
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
67 5
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
48 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
75 0
|
4月前
|
开发框架 监控 .NET
开发者的革新利器:ASP.NET Core实战指南,构建未来Web应用的高效之道
【8月更文挑战第28天】本文探讨了如何利用ASP.NET Core构建高效、可扩展的Web应用。ASP.NET Core是一个开源、跨平台的框架,具有依赖注入、配置管理等特性。文章详细介绍了项目结构规划、依赖注入配置、中间件使用及性能优化方法,并讨论了安全性、可扩展性以及容器化的重要性。通过这些技术要点,开发者能够快速构建出符合现代Web应用需求的应用程序。
70 0