网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

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

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

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

具体的实现步骤如下:

     一、准备工作


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

        2.Lodop web 打印控件,官方地址:/uploadfile/201101/20/96223434872.png" />

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

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

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

  1. public JsonResult Print() 
  2.        { 
  3.            //构造打印数据 
  4.            List<CustomerTest> list = new List<CustomerTest>(); 
  5.            for (int i = 0; i < 100; i++) 
  6.            { 
  7.                list.Add(new CustomerTest { CustomerName = "candy" + i, CustomerAddress = "思明区" + i, CustomerPhone = "13148484855" + i }); 
  8.                list.Add(new CustomerTest { CustomerName = "linda" + i, CustomerAddress = "湖里区" + i, CustomerPhone = "13847487545" + i }); 
  9.                list.Add(new CustomerTest { CustomerName = "ellie" + i, CustomerAddress = "海昌区" + i, CustomerPhone = "1359984665" + i }); 
  10.            } 
  11.  
  12.            //StringTemplate 打印模板文件,实际项目中为提高程序效率,应将打印模板文件缓存。 
  13.            string serverPath = System.Web.HttpContext.Current.Server.MapPath("~"); 
  14.            string path = Path.Combine(serverPath, @"PrintTemplate\"); 
  15.  
  16.            StringTemplateGroup group = new StringTemplateGroup("myGroup", path, typeof(TemplateLexer)); 
  17.            StringTemplate st = group.GetInstanceOf("template"); 
  18.            st.SetAttribute("customer", list); 
  19.  
  20.            //为打印提供html相关超文本内容。 
  21.            StringBuilder sb = new StringBuilder(); 
  22.            sb.Append(@"<html xmlns='http://www.w3.org/1999/xhtml' lang='zh-CN'>"); 
  23.            sb.Append("<head>"); 
  24.            sb.Append(@"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"); 
  25.            sb.Append(@"<meta http-equiv='Content-Language' content='zh-CN' />"); 
  26.            string cssContent = System.IO.File.ReadAllText(Path.Combine(serverPath, @"Content\CSS\CSSForPrint.css")); 
  27.            sb.Append(@"<style type='text/css'>"); 
  28.            sb.Append(cssContent); 
  29.            sb.Append(@"</style>"); 
  30.            sb.Append("</head>"); 
  31.            sb.Append("<body>"); 
  32.            sb.Append(st.ToString()); 
  33.            sb.Append(" "); 
  34.            sb.Append("</body>"); 
  35.            sb.Append("</html>"); 
  36.  
  37.            return Json(new { success = true, data = sb.ToString() }, JsonRequestBehavior.AllowGet); 
  38.        } 

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

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

  1. <asp:Content ID="Content3" ContentPlaceHolderID="Head" runat="server"> 
  2.     <script language="javascript" src="CheckActivX.js"></script> 
  3.     <object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width="0" 
  4.         height="0"> 
  5.     </object> 
  6.     <script type="text/javascript"> 
  7.  
  8.         function prn1_preview(data) { 
  9.             LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_打印表格"); 
  10.             //报表标题 
  11.             LODOP.ADD_PRINT_HTM(50, 300, 330, 300, 
  12.                       "<font color ='black' size ='6'>客户列表</font><font color ='blue' size ='2'>(制表人:张三)</font>"); 
  13.             //报表内容打印。 
  14.             LODOP.ADD_PRINT_TABLE(100, 150, 760, 900, data); 
  15.             LODOP.PREVIEW(); 
  16.         }; 
  17.  
  18.         $(function () { 
  19.             $("#btnPrint").click(function () { 
  20.                 var url = '<%=Url.Action("Print","Home") %>'
  21.                 $.ajax({ 
  22.                     type: "POST", 
  23.                     url: url, 
  24.                     cache: false, 
  25.                     dataType: 'json', 
  26.                     success: function (result) { 
  27.                         if (result.success) { 
  28.                             prn1_preview(result.data); 
  29.                         } 
  30.                     } 
  31.                 }); 
  32.             }); 
  33.         }) 
  34.     </script> 
  35. </asp:Content> 

 三、运行截图

最后一页打印预览:

打印机横向打印:

 

四、注意事项


     本文给出的web打印方案需要读者对MVC2.0 、jQuery 、StringTemplate 有一定的了解。另外本例只是在IE下实现了WEB打印

  • 下一篇资讯: 调试利器--VS
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师