C#+一般处理程序+Lodop打印跨境电商电子面单(比利时、荷兰佛山小包)

效果图:


Aspx页面代码:

<table class="table table-bordered table-striped">
											 
												<tbody> 
												<tr class="even gradeC">
														<td >波次单号:</td>
														<td>
															<input type="text" runat="server"  id="txtWaveNo" value="SO1512150540" /></td>
														 <td >SO订单号:</td>
														<td>
                                                             <input type="text" runat="server"  id="txtSoNo" />
															 </td>
													</tr>
											    	<tr class="odd gradeA">
                                                       <td colspan="4"><input type="button" class="btn btn-info"  id="btnPrint" 
                                                           value="比利时小包打印" runat="server" />&nbsp;&nbsp;&nbsp;<input type="button" class="btn btn-info"  id="btnPrint" 
                                                           value="荷兰小包打印" runat="server" />   

                                                           <input type="button" class="btn btn-info"  id="btnFoShanPrint" 
                                                           value="佛山小包打印" runat="server" />   
                                                            <span style="color:red">友情提示:可选择扫描波次或者SO单号进行打印。</span>
                                                       </td>
											       </tr>
												</tbody>
											</table><div id="main-content">
                                    <div class="tab-content">
                                        <!--发运订单信息-->
                                        <div id="live" class="tab-pane active">
                                             <div class='row-fluid'>
                                                  <div class='span12 widget'>
                                                       <div class='widget-content summary-list'>
                                                            <div class='row-fluid' >
                                                                 <div class='span12 section '>
                                                                    <table class='table table-bordered table-striped'>
                                                                           <tbody id="divErrorMessage" runat="server">
                                                                           </tbody>
                                                                      </table>
                                                                 </div>
                                                            </div>
                                                       </div>
                                                  </div>
                                             </div>
                                        </div>
                                    </div>
                                </div>

 JS代码:

荷兰和佛山小包打印:   
 <input type="hidden" id="hfExpressHtml"/>
		<!-- Core Scripts -->
		<script src="http://www.orderonline.cn/js/jquery-1.7.2.js"></script>
	  <script src="assets/js/Lodop.js"></script>
        <script type="text/javascript">

            $(document).ready(function () {

                $("#btnPrint").click(function () {
                    if ($("#txtWaveNo").val() == "" && $("#txtSoNo").val() =="") {
                        alert('波次单号或SO订单号不能全为空,请任意输入一个进行打印。');
                    }
                    else {

                        var searchwhere = $("#txtWaveNo").val() + "_" + $("#txtSoNo").val();
                        $.ajax({
                            type: "get",
                            url: "ExpressPrint.ashx",
                            data: "getExpressInfo=" + encodeURIComponent(searchwhere),
                            datatype: "json",
                            async: false,
                            success: function (returnData, textstatus, xmlhttprequest) {

                                LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
                                LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD", 1);

                                $("#hfExpressHtml").html(returnData);
                                var html = $("#hfExpressHtml .main_all >div");
                                //  var strStyleCSS = "<!DOCTYPE html> <head>";
                                var strStyleCSS = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>";
                                strStyleCSS += "<link href='http://www.orderonline.cn/css/A4.css' type='text/css' rel='stylesheet'></head><body>";

                                //HTML格式用
                                // LODOP.SET_PRINT_PAGESIZE(1, "760px", "650px", "A5");

                                var num = 0; var strFormHtml = "";
                                for (var i = 0; i < html.length; i++) {
                                    if (num % 2 == 0) {
                                        LODOP.NewPage(); strFormHtml = "";
                                        strFormHtml += strStyleCSS + html[i].outerHTML;
                                    }
                                    else {

                                        strFormHtml += strStyleCSS + html[i].outerHTML;
                                    }
                                    LODOP.ADD_PRINT_HTM(15, 0, 800, 650, strFormHtml + "</body></html>");
                                    // LODOP.ADD_PRINT_HTM(30, 0, 800, 650, strFormHtml + "</body></html>");
                                    num++;
                                } LODOP.PREVIEW(); strFormHtml = "";

                            },
                            error: function (errorinfo) {
                                alert("快递单打印失败,请重新刷新后打印。");
                            }
                        });
                    }
                
                })


                $("#btnFoShanPrint").click(function () {
                    if ($("#txtWaveNo").val() == "" && $("#txtSoNo").val() == "") {
                        alert('波次单号或SO订单号不能全为空,请任意输入一个进行打印。');
                    }
                    else {

                        var searchwhere = $("#txtWaveNo").val() + "_" + $("#txtSoNo").val();
                        $.ajax({
                            type: "get",
                            url: "ExpressPrint.ashx",
                            data: "getExpressInfo=" + encodeURIComponent(searchwhere),
                            datatype: "json",
                            async: false,
                            success: function (returnData, textstatus, xmlhttprequest) {

                                LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
                                LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD", 1);

                                $("#hfExpressHtml").html(returnData);
                                var html = $("#hfExpressHtml .main_all >div");
                                //  var strStyleCSS = "<!DOCTYPE html> <head>";
                                var strStyleCSS = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>";
                                strStyleCSS += "<link href='http://www.orderonline.cn/css/A4.css' type='text/css' rel='stylesheet'></head><body>";

                                //HTML格式用
                                 LODOP.SET_PRINT_PAGESIZE(2, "760px", "650px", "A5");

                                var num = 0; var strFormHtml = "";
                                for (var i = 0; i < html.length; i++) {
                                    if (num % 2 == 0) {
                                        LODOP.NewPage(); strFormHtml = "";
                                        strFormHtml += strStyleCSS + html[i].outerHTML;
                                    }
                                    else {

                                        strFormHtml += strStyleCSS + html[i].outerHTML;
                                    }
                                    LODOP.ADD_PRINT_HTM(15, 0, 800, 650, strFormHtml + "</body></html>");
                                    // LODOP.ADD_PRINT_HTM(30, 0, 800, 650, strFormHtml + "</body></html>");
                                    num++;
                                } LODOP.PREVIEW(); strFormHtml = "";

                            },
                            error: function (errorinfo) {
                                alert("快递单打印失败,请重新刷新后打印。");
                            }
                        });
                    }
                    
                })
                //清除转向页面
                $("#txtWaveNo").val(''); $("#txtSoNo").val(''); $("#hfExpressHtml").html('');
            });
 
        </script>
比利时小包打印:
  <script type="text/javascript">

            $(document).ready(function () {

                $("#btnPrint").click(function () {
                    if ($("#txtWaveNo").val() == "" && $("#txtSoNo").val() == "") {
                        alert('波次单号或SO订单号不能全为空,请任意输入一个进行打印。');
                    }
                    else {

                        var searchwhere = $("#txtWaveNo").val() + "_" + $("#txtSoNo").val();
                        $.ajax({
                            type: "get",
                            url: "ExpressPrint.ashx",
                            data: "getBlsExpressInfo=" + encodeURIComponent(searchwhere),
                            datatype: "json",
                            async: false,
                            success: function (returnData, textstatus, xmlhttprequest) {

                                LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
                                LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD", 1);

                                $("#hfExpressHtml").html(returnData);
                                var html = $("#hfExpressHtml .main_all >div");
                                //  var strStyleCSS = "<!DOCTYPE html> <head>";
                                var strStyleCSS = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>";
                                strStyleCSS += "<link href='http://www.orderonline.cn/css/A4.css' type='text/css' rel='stylesheet'></head><body>";

                                //HTML格式用
                                // LODOP.SET_PRINT_PAGESIZE(1, "760px", "650px", "A5");

                                var num = 0; var strFormHtml = "";
                                for (var i = 0; i < html.length; i++) {
                                    if (num % 2 == 0) {
                                        LODOP.NewPage(); strFormHtml = "";
                                        strFormHtml += strStyleCSS + html[i].outerHTML;
                                    }
                                    else {

                                        strFormHtml += strStyleCSS + html[i].outerHTML;
                                    }
                                    LODOP.ADD_PRINT_HTM(15, 0, 800, 650, strFormHtml + "</body></html>");
                                    // LODOP.ADD_PRINT_HTM(30, 0, 800, 650, strFormHtml + "</body></html>");
                                    num++;
                                } LODOP.PREVIEW(); strFormHtml = "";

                            },
                            error: function (errorinfo) {
                                alert("快递单打印失败,请重新刷新后打印。");
                            }
                        });
                    }
                    //清除转向页面
                    $("#txtWaveNo").val(''); $("#txtSoNo").val(''); $("#hfExpressHtml").html('');
                })
 
             
            });

        </script>

ExpressPrint.ashx 代码:

public class ExpressPrint : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            if (!string.IsNullOrEmpty(context.Request["getExpressInfo"]))
               {
                   string[] strParm = context.Request["getExpressInfo"].Split('_');
                  StringBuilder sbExpressHtml = new StringBuilder();
                  var returnHtml = string.Empty;
                  using (ExpressPrintDataContext db = new ExpressPrintDataContext())
                  {
                      var getExpressList = from p in db.DOC_Wave_Details
                                           join pp in db.DOC_Order_Header
                                           on p.OrderNo equals pp.OrderNo
                                           where p.WaveNo.Contains(strParm[0]) && p.OrderNo.Contains(strParm[1])
                                           select new { p.WaveNo, p.OrderNo, pp.SOReference3 };
                      var expressNo = string.Empty;
                      returnHtml = @"<link href=""http://www.orderonline.cn/A4.css"" rel=""stylesheet"" type=""text/css"" />";
                      returnHtml += "<div class=\"wapper\" id=\"A4_print\"><div class=\"main_all\">";
                      foreach (var item in getExpressList)
                      {
                         // expressNo += item.SOReference3 + ',';

                          string strURL = "http://www.orderonline.cn/printNo.action?print=A4&remak=1&prType=W&hawbNos=" + item.SOReference3;

                          HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strURL);
                          request.Method = "GET";
                          request.ContentType = "text/html;charset=UTF-8";

                          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                          Stream myResponseStream = response.GetResponseStream();
                          StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                          string retString = myStreamReader.ReadToEnd();

                          myStreamReader.Close();
                          myResponseStream.Close();

                          returnHtml += Regex.Match(retString, @"(?is)<div class=""main p_r"">((?<o><div[^<>]*>)|(?<-o></div>)|(?!</?div>).)+(?(o)(?!))</div>").Groups[0].Value.Trim();
                          
                          Regex reg = new Regex("<td colspan=\"2\" class=\"bar-con tx-ce \">([\\s\\S]*?)<\\/td>", RegexOptions.IgnoreCase);
                          MatchCollection mac = reg.Matches(returnHtml);
                          var code="barbecue?fmt=png&height=40&type=code128&data="+item.SOReference3;
                          foreach (Match m in mac)
                          {
                              string f1 = m.Groups[1].Value.Replace("/[\r\n]/g", "");
                              returnHtml = returnHtml.Replace(f1, "<div style=\"float:left\"><img  style=\"width:260px;height:40px;\"  src="+code+"> </div><div style=\"float:right;\"><img src=\"/images/print/th.png\"  style=\"width:40px;height:40px;\" /></div>");
                          }    
                      }
                      Regex regex = new Regex("/images", RegexOptions.IgnoreCase);

                      returnHtml = regex.Replace(returnHtml, "http://www.orderonline.cn/images");
                      Regex regex1 = new Regex("barbecue", RegexOptions.IgnoreCase);
                      returnHtml = regex1.Replace(returnHtml, "http://www.orderonline.cn/barbecue");
                      sbExpressHtml.Append(returnHtml+"</div></div>");
                  }
                  context.Response.Write(sbExpressHtml.ToString());
            }
			if (!string.IsNullOrEmpty(context.Request["getBlsExpressInfo"]))
			{
				string[] strParm = context.Request["getBlsExpressInfo"].Split('_');
				StringBuilder sbExpressHtml = new StringBuilder();
				var returnHtml = string.Empty;
				using (ExpressPrintDataContext db = new ExpressPrintDataContext())
				{
					//var getExpressList = from p in db.DOC_Wave_Details
					//                     join pp in db.DOC_Order_Header
					//                     on p.OrderNo equals pp.OrderNo
					//                     where p.WaveNo.Contains(strParm[0]) && p.OrderNo.Contains(strParm[1])
					//                     select new { p.WaveNo, p.OrderNo, pp.SOReference3 };
					//数据放入ticket
					var apiToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", "mega", "bpost")));

					string url = "http://42.121.252.25/api/lvsparcels?productBarcode=BLVS1592170000004048";

					try
					{
						//配置请求header     
						HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
						request.Method = "GET";
						request.ContentType = "text/json; charset=utf-8";

						request.Headers.Add(HttpRequestHeader.Authorization, "basic " + apiToken);

						HttpWebResponse response = (HttpWebResponse)request.GetResponse();
						Stream myResponseStream = response.GetResponseStream();
						StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
						string retString = myStreamReader.ReadToEnd();

						LvsParcelJson getExpressInfo = (LvsParcelJson)JsonConvert.DeserializeObject<LvsParcelJson>(retString);

						myStreamReader.Close();
						myResponseStream.Close();
					}
					catch (Exception e)
					{
						context.Response.Write(e.Message);
					}

				}
			}
			context.Response.End();
		}
     public class LvsParcelJson
		{
			public int Id { get; set; }
 
			public string OrderNumber { get; set; }
			public string ProductBarcode { get; set; }
			public string RecipientName { get; set; }
			public string RecipientStreet { get; set; }
			public string RecipientHouseNumber { get; set; }
			public string RecipientBusnumber { get; set; }
			public string RecipientZipCode { get; set; }
			public string RecipientCity { get; set; }
			public string RecipientState { get; set; }
			public string RecipientCountry { get; set; }
			public string PhoneNumber { get; set; }
			public string SenderName { get; set; }
			public DateTime CreateTime { get; set; }
			public string SenderAddress { get; set; }

			public  List<Customers> Customs { get; set; }
		}

		public class Customers
		{
			public string Sku { get; set; }
			public string ChineseContentDescription { get; set; }
			public string ItemContent { get; set; }
			public int ItemCount { get; set; }
			public decimal Value { get; set; }
			public string Currency { get; set; }
			public decimal Weight { get; set; }
			public string SkuInInvoice { get; set; }

		}
		public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP(JavaServer Pages)是一种用于创建动态网页的技术,而Lodop是一款专业的打印控件,可实现浏览器端的打印功能。结合起来,可以实现自定义打印模板设计。 以下是一个简单的JSP页面示例,用于展示如何使用Lodop实现打印功能: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>打印测试</title> <!-- 引入Lodop打印控件 --> <script type="text/javascript" src="http://localhost:8000/CLodopfuncs.js"></script> <script type="text/javascript" src="http://localhost:18000/LodopFuncs.js"></script> <script type="text/javascript"> function print() { // 初始化Lodop打印控件 var LODOP = getLodop(); // 创建打印模板 LODOP.PRINT_INIT("打印测试"); // 设置打印模板 LODOP.ADD_PRINT_TEXT(50, 50, 100, 20, "打印测试"); // 打印模板 LODOP.PRINT(); } </script> </head> <body> <h1>打印测试</h1> <button onclick="print()">打印</button> </body> </html> ``` 在这个示例中,我们使用了Lodop打印控件来创建打印模板。首先,我们引入了Lodop的js文件,然后定义了一个名为“print”的函数,用于执行打印操作。在函数中,我们首先通过getLodop()方法获取Lodop打印控件的实例,然后使用PRINT_INIT()方法初始化打印控件,并设置打印模板。在这个示例中,我们添加了一个文本框,显示“打印测试”,并设置其位置和大小。最后,我们调用PRINT()方法打印模板。 当我们在浏览器中运行这个JSP页面并点击“打印”按钮时,就会调用print()函数并执行打印操作。由于我们已经使用Lodop打印控件创建了打印模板,所以打印操作会按照我们定义的模板进行。在实际应用中,您可以根据需要自定义打印模板,以满足不同的打印需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值