C#打印小票(连续自动打印)
作者:互联网
注意前端需要引用(LodopFuncs.js,JsBarcode.all.min.js,jquery.js)当然还有安装打印机驱动还有Lodop的驱动
前端代码调用打印方法部分
json.printinfo是后端传向前端的生成好的打印代码。
//执行打印小票
var orderids = "";
if (json.printinfo != "")
{
var imgsrc = "\"../../../Content/img/wjywx.jpg\"";
function print() {
let jsCode = eval(json.printinfo)
//打印小票完成根据订单id去修改订单在数据库中的状态
$.ajax({
type: 'POST',
url: "../Home/UpdateOrderStatic?Orderid=" + orderids,
data: "",
dataType: 'json',
async: false,
cache: false,
success: function (json) {
if (json.responseText == "True") {
alert("打印完成")
} else {
alert("修改订单状态失败")
}
}
})
}
print();
}
打印小票用到的实体
/// <summary>
/// 打印小票实体
/// </summary>
public class Printmodel
{
/// <summary>
/// 小票顶部标题例如【含处方药】
/// </summary>
private string title;
/// <summary>
/// 平台例如【京东到家】
/// </summary>
private string platform;
/// <summary>
/// 订单序号例如【#4】顾客联
/// </summary>
private string number;
/// <summary>
/// 门店名称【例如阳光小镇24H店】
/// </summary>
private string storeName;
/// <summary>
/// 下单时间
/// </summary>
private string orderCreateTime;
/// <summary>
/// 预计送达时间
/// </summary>
private string deliveryTime;
/// <summary>
/// 订单id
/// </summary>
private string orderId;
/// <summary>
/// 客户名称
/// </summary>
private string userName;
/// <summary>
/// 客户联系电话
/// </summary>
private string userTel;
/// <summary>
/// 客户备注
/// </summary>
private string userNote;
/// <summary>
/// 用户地址
/// </summary>
private string userAddress;
/// <summary>
/// 商品信息
/// </summary>
private List<GoodsModel> goods;
/// <summary>
/// 商品优惠金额
/// </summary>
private decimal preferential;
/// <summary>
/// 配送全额
/// </summary>
private decimal distribution;
/// <summary>
/// 包装费
/// </summary>
private decimal packaging;
/// <summary>
/// 门店联系电话
/// </summary>
private string storeTel;
/// <summary>
/// 投诉电话
/// </summary>
private string complaintsTel;
/// <summary>
/// 温馨·提示内容
/// </summary>
private string prompt;
/// <summary>
/// 微信二维码路径
/// </summary>
private string wxImg;
/// <summary>
/// 图片下面的消息
/// </summary>
private string message;
/// <summary>
/// 标题
/// </summary>
public string Title { get => title; set => title = value; }
/// <summary>
/// 平台
/// </summary>
public string Platform { get => platform; set => platform = value; }
/// <summary>
/// 订单序号例如【#4】
/// </summary>
public string Number { get => number; set => number = value; }
/// <summary>
/// 门店名称
/// </summary>
public string StoreName { get => storeName; set => storeName = value; }
/// <summary>
/// 下单时间
/// </summary>
public string OrderCreateTime { get => orderCreateTime; set => orderCreateTime = value; }
/// <summary>
/// 预计到达时间
/// </summary>
public string DeliveryTime { get => deliveryTime; set => deliveryTime = value; }
/// <summary>
/// 订单id
/// </summary>
public string OrderId { get => orderId; set => orderId = value; }
/// <summary>
/// 顾客姓名
/// </summary>
public string UserName { get => userName; set => userName = value; }
/// <summary>
/// 顾客联系电话
/// </summary>
public string UserTel { get => userTel; set => userTel = value; }
/// <summary>
/// 顾客地址
/// </summary>
public string UserAddress { get => userAddress; set => userAddress = value; }
/// <summary>
/// 商品信息
/// </summary>
public List<GoodsModel> Goods { get => goods; set => goods = value; }
/// <summary>
/// 计算商品总价
/// </summary>
/// <param name="goods">商品集合</param>
/// <returns></returns>
private decimal Suninfull(List<GoodsModel> goods)
{
decimal sun = 0;
if (goods.Count > 0 && goods != null)
{
foreach (GoodsModel item in goods)
{
sun += item.Money;
};
};
return sun;
}
/// <summary>
/// 商品全额
/// </summary>
public decimal SumInFull { get => Suninfull(this.Goods); }
/// <summary>
/// 商品优惠金额
/// </summary>
public decimal Preferential { get => preferential; set => preferential = value; }
/// <summary>
/// 配送费
/// </summary>
public decimal Distribution { get => distribution; set => distribution = value; }
/// <summary>
/// 包装费
/// </summary>
public decimal Packaging { get => packaging; set => packaging = value; }
/// <summary>
/// 获取商品总件数
/// </summary>
/// <param name="goods">商品实体集合</param>
/// <returns></returns>
private int getGoodsNum(List<GoodsModel> goods)
{
int num = 0;
foreach (GoodsModel item in goods)
{
num += item.Number;
}
return num;
}
/// <summary>
/// 商品总件数
/// </summary>
public int GoodsNum { get => getGoodsNum(this.goods); }
/// <summary>
/// 实付金额[总金额-优惠金额+配送费+包装费]
/// </summary>
public decimal ActualMoney { get => (SumInFull - Preferential + Distribution + Packaging); }
/// <summary>
/// 门店电话
/// </summary>
public string StoreTel { get => storeTel; set => storeTel = value; }
/// <summary>
/// 投诉电话
/// </summary>
public string ComplaintsTel { get => complaintsTel; set => complaintsTel = value; }
/// <summary>
/// 温馨提示内容
/// </summary>
public string Prompt { get => prompt; set => prompt = value; }
/// <summary>
/// 微信二维码路径(相对路径)
/// </summary>
public string WxImg { get => wxImg; set => wxImg = value; }
/// <summary>
/// 二维码下部信息
/// </summary>
public string Message { get => message; set => message = value; }
/// <summary>
/// 客户备注
/// </summary>
public string UserNote { get => userNote; set => userNote = value; }
}
打印小票的方法
M_Order_Info实体是订单相关信息。根据自己需求而定
/// <summary>
/// 打印小票方法
/// </summary>
/// <returns></returns>
public string Print_Receipts(List<M_Order_Info> orderInfo)
{
#region 打印小票
int magin = 0;
string orderids = string.Empty;
string html = "";
html += " var LODOP;";
html += " function tprint(){";
html += " LODOP = getLodop();";
html += "LODOP.PRINT_INIT('');";
html += "LODOP.SET_PRINT_PAGESIZE('3', '58mm', '', '热敏');";
D_Order_Info doi = new D_Order_Info();
D_WX_StoreInfos StoreInfos = new D_WX_StoreInfos();
foreach (M_Order_Info item in orderInfo)
{
if (item.isprint == 0&&item.deliveryStationNoIsv!="19176")
{
Printmodel model = new Printmodel();
if(item.businessTag!=null&& item.businessTag.Contains("dj_prescription_order"))
{
model.Title = "含处方药";
}
else
{
model.Title = "";
}
model.Platform = GetEnumByValue(typeof(OrderSourceType), item.orderType.ToString()).ToString(); ;
model.Number = item.orderNum.ToString();
model.StoreName = item.deliveryStationName;
model.OrderCreateTime = item.orderStartTime.ToString();
model.DeliveryTime = item.orderPreEndDeliveryTime.ToString();
model.OrderId = item.orderId;
orderids += "'" + model.OrderId + "',";
model.UserName = item.buyerFullName;
model.UserTel = item.buyerMobile;
model.UserNote = GetRealRemark(item.orderBuyerRemark).Trim();
model.UserAddress = Regex.Replace(item.buyerFullAddress,@"[^a-zA-Z0-9\u4e00-\u9fa5\s]", "");
List<GoodsModel> goodslist = new List<GoodsModel>();
foreach (Order_Products item2 in doi.get_Products(item.orderId))
{
GoodsModel gmodel = new GoodsModel();
gmodel.GoodsName = item2.skuName;
gmodel.Number = item2.skuCount;
gmodel.Price = Convert.ToInt32(item2.skuStorePrice)/100M;
gmodel.SKU = item2.skuId.ToString();
gmodel.UPC = item2.upcCode.ToString();
goodslist.Add(gmodel);
}
model.Goods = goodslist;
model.Preferential = Convert.ToInt32(item.orderDiscountMoney)/100M;
model.Packaging = Convert.ToInt32(item.packagingMoney)/100M;
model.Distribution = Convert.ToInt32(item.orderFreightMoney)/100M;
model.StoreTel = StoreInfos.GetStoreInfoByStoreID(item.deliveryStationNoIsv).telephone;
model.ComplaintsTel = "4000239900";
model.Prompt = "此商品属于特殊商品,非质量问题概不退换";
model.WxImg ="\'+imgsrc+\'";
model.Message = "小票底部信息";
html += Print(model, ref magin);
magin += magin;
}
}
html += " LODOP.PREVIEW();";
//LODOP.PRINT();
html += "}tprint();orderids=" + orderids.Substring(0, orderids.Length - 1)+";";
return html;
#endregion
}
生成打印小票的前端代码
/// <summary>
/// 生成前端打印小票代码
/// </summary>
/// <param name="per"></param>
/// <returns></returns>
public string Print(Printmodel per,ref int magin)
{
string html = "";
int topmagin = 5+ magin;
//html += " var LODOP;";
//html += " function tprint(){";
//html += " LODOP = getLodop();";
//html += "LODOP.PRINT_INIT('');";
//html += "LODOP.SET_PRINT_PAGESIZE('3', '58mm', '', '热敏');";
if (!string.IsNullOrWhiteSpace(per.Title))
{
html += "LODOP.ADD_PRINT_TEXT('" + topmagin + "mm', 0,183, 100, '※" + per.Title + "※');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 13);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 1);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2); ";
}
else
{
topmagin=topmagin - 5;
}
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 7) + "mm', 0, 183, 100, '" + per.Platform + "|#" + per.Number + "顾客联');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 11);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 1);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 6) + "mm', 0, 183, 100, '" + per.StoreName + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 6) + "mm', 5, 183, 100, '下单时间:" + per.OrderCreateTime + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '预计送达:" + per.DeliveryTime + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '订单编号:" + per.OrderId + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_BARCODE('" + (topmagin += 4) + "mm','5','25%', 90, '128Auto', '" + per.OrderId + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'AlignJustify', 2);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 34) + "mm', 0, 183, 100, '***顾客信息***');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '客户:" + per.UserName + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '联系电话:" + per.UserTel + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
if (!string.IsNullOrWhiteSpace(per.UserNote))
{
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 8) + "mm', 5, 183, 100, '备注:" + per.UserNote + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 2);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
}
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 8) + "mm', 5, 183, 100, '地址:" + per.UserAddress + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 11) + "mm', 5, 183, 100, '* ');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '* ');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 8) + "mm', 5, 183, 100, '裁剪线:✂↘️ ');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_LINE('" + (topmagin += 11) + "mm', 0, '" + topmagin + "mm', 183, 1, 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '* ');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '* ');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 12) + "mm', 0, 183, 100, '***商品信息***');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '商品名称');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + topmagin + "mm', '35%', 183, 100, '数量');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + topmagin + "mm', '55%', 183, 100, '单价');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + topmagin + "mm', '75%', 183, 100, '金额');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_LINE('" + (topmagin += 3) + "mm', 0, '" + topmagin + "mm', 183, 2, 1);";
foreach (GoodsModel item in per.Goods)
{
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 1) + "mm', 5, 183, 100,'" + item.GoodsName + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 8) + "mm', '35%', 183, 100, 'X" + item.Number + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + topmagin + "mm', '55%', 183, 100, '" + item.Price + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + topmagin + "mm', '75%', 183, 100, '" + item.Money + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, 'SKU码:" + item.SKU + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, 'UCP码:" + item.UPC + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
topmagin += 4;
}
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 0, 183, 100, '***结算信息***');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 0, 183, 100, '商品金额:¥" + per.SumInFull + " 商品优惠:¥" + per.Preferential + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7.5);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 3);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('"+ (topmagin += 4) + "mm', 0, 183, 100, '配送金额:¥" + per.Distribution + " 包装费:¥" + per.Packaging + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7.5);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 3);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_LINE('" + (topmagin += 5) + "mm', 0, '" + topmagin + "mm', 183, 2, 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 1) + "mm', 0, 183, 100, '总件数:" + per.GoodsNum + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 12);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 1);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += "LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 0, 183, 100, '实付:" + per.ActualMoney + "');";
html += "LODOP.SET_PRINT_STYLEA(0, 'FontSize', 12);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Bold', 1);";
html += "LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 6) + "mm', 5, 183, 100, '门店电话:" + per.StoreTel + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '投诉电话:" + per.ComplaintsTel + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
if (!string.IsNullOrWhiteSpace(per.Prompt))
{
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 4) + "mm', 5, 183, 100, '温馨提示:" + per.Prompt + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
}
html += "LODOP.ADD_PRINT_IMAGE('" + (topmagin += 14) + "mm', 0, 183, '60mm', '<img src=" + per.WxImg + " />');";
html += "LODOP.SET_PRINT_STYLEA(0, 'Stretch', 2);";
html += " LODOP.ADD_PRINT_TEXT('" + (topmagin += 70) + "mm', 5, 183, 100, '" + per.Message + "');";
html += " LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);";
html += " LODOP.SET_PRINT_STYLEA(0, 'Alignment', 1);";
LODOP.PRINT();
//html += "}";
//html += " tprint()";
magin=topmagin;
return html;
}
标签:SET,小票,C#,打印,topmagin,STYLEA,html,LODOP,PRINT 来源: https://blog.csdn.net/qq_42455262/article/details/115618175