C# 在用于打印的网页中,将单据号转为条码

把单据号转为条码,就可以直接用RF设备扫描,降低工作量了

要新建一个页面,这里用BarCgBill作为文件名

BarCgBill.aspx中啥都不用改

BarCgBill.aspx.cs中放入画条码的函数,并且在page_load中调用它

这样BarCgBill这个网页就可以作为图片这样调用了<img src="BarCgBill.aspx" alt="采购单据号条码"/>

又及:BillNo存进Session在这边取。。我也懒了。。ORZ

 protected void Page_Load(object sender, EventArgs e)
    {
        string sBillNo = "";
        this.Response.Clear();
        if (Session["sBarcode"].ToString()!="")
        {
           sBillNo=Session["sBarcode"].ToString();
        }
        else
        {
            sBillNo="0";
        }
        Bitmap sBillNoBarCode;
        sBillNoBarCode = GetCode39(sBillNo);
        sBillNoBarCode.Save(this.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        sBillNoBarCode.Dispose();
        this.Response.End();
    }
    private Bitmap GetCode39(string strSource)
    {
        int x = 5; //左邊界
        int y = 0; //上邊界
        int WidLength = 2; //粗BarCode長度
        int NarrowLength = 1; //細BarCode長度
        int BarCodeHeight = 40; //BarCode高度
        int intSourceLength = strSource.Length;
        string strEncode = "010010100"; //編碼字串 初值為 起始符號 *  
        string AlphaBet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*"; //Code39的字母  
        string[] Code39 = //Code39的各字母對應碼
            {
                /**//* 0 */ "000110100", 
                /**//* 1 */ "100100001", 
                /**//* 2 */ "001100001", 
                /**//* 3 */ "101100000",
                /**//* 4 */ "000110001", 
                /**//* 5 */ "100110000", 
                /**//* 6 */ "001110000", 
                /**//* 7 */ "000100101",
                /**//* 8 */ "100100100", 
                /**//* 9 */ "001100100", 
                /**//* A */ "100001001", 
                /**//* B */ "001001001",
                /**//* C */ "101001000", 
                /**//* D */ "000011001", 
                /**//* E */ "100011000", 
                /**//* F */ "001011000",
                /**//* G */ "000001101", 
                /**//* H */ "100001100", 
                /**//* I */ "001001100", 
                /**//* J */ "000011100",
                /**//* K */ "100000011", 
                /**//* L */ "001000011", 
                /**//* M */ "101000010", 
                /**//* N */ "000010011",
                /**//* O */ "100010010", 
                /**//* P */ "001010010", 
                /**//* Q */ "000000111", 
                /**//* R */ "100000110",
                /**//* S */ "001000110", 
                /**//* T */ "000010110", 
                /**//* U */ "110000001", 
                /**//* V */ "011000001",
                /**//* W */ "111000000", 
                /**//* X */ "010010001", 
                /**//* Y */ "110010000", 
                /**//* Z */ "011010000",
                /**//* - */ "010000101", 
                /**//* . */ "110000100", 
                /**//*' '*/ "011000100",
                /**//* $ */ "010101000",
                /**//* / */ "010100010", 
                /**//* + */ "010001010", 
                /**//* % */ "000101010", 
                /**//* * */ "010010100" 
            };
        strSource = strSource.ToUpper();
        //實作圖片
        Bitmap objBitmap = new Bitmap(((WidLength * 3 + NarrowLength * 7) * (intSourceLength + 2)) + (x * 2), BarCodeHeight + (y * 2));
        Graphics objGraphics = Graphics.FromImage(objBitmap); //宣告GDI+繪圖介面  
        //填上底色
        objGraphics.FillRectangle(Brushes.White, 0, 0, objBitmap.Width, objBitmap.Height);
        for (int i = 0; i < intSourceLength; i++)
        {
            //檢查是否有非法字元
            if (AlphaBet.IndexOf(strSource[i]) == -1 || strSource[i] == '*')
            {
                objGraphics.DrawString("含有非法字元", SystemFonts.DefaultFont, Brushes.Red, x, y);
                return objBitmap;
            }
            //查表編碼
            strEncode = string.Format("{0}0{1}", strEncode, Code39[AlphaBet.IndexOf(strSource[i])]);
        }
        strEncode = string.Format("{0}0010010100", strEncode); //補上結束符號 *  
        int intEncodeLength = strEncode.Length; //編碼後長度
        int intBarWidth;
        for (int i = 0; i < intEncodeLength; i++) //依碼畫出Code39 BarCode
        {
            intBarWidth = strEncode[i] == '1' ? WidLength : NarrowLength;
            objGraphics.FillRectangle(i % 2 == 0 ? Brushes.Black : Brushes.White, x, y, intBarWidth, BarCodeHeight);
            x += intBarWidth;
        }
        return objBitmap;
    }

条码打印函数是转载的。。忘记从哪看到的了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值