zoukankan      html  css  js  c++  java
  • 一维条码打印的C#实现(Code128)

    1、CODE128基础知识

    CODE128有三个版本: CODE128A: 标准数字和字母, 控制符, 特殊字符 CODE128B: 标准数字和字母, 小写字母, 特殊字符 CODE128C: [00]-[99]的数字对集合, 共100个

    这里采用CODE128B版本,系统内需要安装Code 128字体

    2、条码编码规则

    条码由开始位、数据、校验位、停止位组成

    条码=Convert.ToChar(204)+数据+Convert.ToChar(校验码)+Convert.ToChar(206);

    需要计算的就是校验码了,下面直接给出转换函数:

    private string Get128CodeString(string inputData)
    {
        string result;
        int checksum=104;
        for(int ii=0;ii<inputData.Length;ii++)
        {
            if(inputData[ii]>=32)
            {
                checksum+=(inputData[ii]-32)*(ii+1);
            }
            else        
            {
                checksum+=(inputData[ii]+64)*(ii+1);
            }            
        }
        checksum=checksum%103;        
        if(checksum<95)
        {
            checksum+=32;
        }
        else
        {
            checksum+=100;        
        }
        result=Convert.ToChar(204)+inputData.ToString()+Convert.ToChar(checksum)+Convert.ToChar(206); 
        return result;
    } 


     

    3、打印

    public void PrintLable()
    {
        PrintDocument pd = new PrintDocument();
        StandardPrintController controler = new StandardPrintController();
    
        try
        {    
            pd.PrintPage+=new PrintPageEventHandler(this.PrintCustomLable);
            pd.PrintController = controler;
            pd.Print();                    
            return;
        }
        catch(Exception err)
        {
            Console.WriteLine(err.Message);
            return;
        }
        finally
        {
            pd.Dispose();
        }
    
    }
    public void PrintCustomLable(Object Sender,PrintPageEventArgs av)
    {
        Font ft1 = new System.Drawing.Font("Times New Roman",18,FontStyle.Regular,GraphicsUnit.World);
        Font ft2 = new System.Drawing.Font("Code 128",64,FontStyle.Regular,GraphicsUnit.World);
        Brush br = new SolidBrush(Color.Black);
        Margins margins = new Margins(50,50,50,145);
        av.PageSettings.Margins = margins;
        
        av.Graphics.DrawString(Get128CodeString(inputString),ft2,br,50,-3);
        av.Graphics.DrawString(inputString,ft1,br,110,60);
        av.HasMorePages = false;
    } 

    代码用到打印的东西需要引用:

    using System.Drawing.Printing;

     定义全局变量:

    string inputString;


    在按钮click中测试:

    inputString = "0123456789";
    
    //查看Code128码的值:
    
    //lblBarCode.Text = Get128CodeString(inputString);
    
    PrintLable();
  • 相关阅读:
    [Dijkstra+堆优化]
    沈阳市 全国 沈阳市社会保险经办机构 信息查询 办保险用
    MS SQL 启用标识插入
    DataGridView导出到Word
    sql生成一个日期表
    精通BIRT:Eclipse商务智能报表工具开发实践指南
    BIRT-商务智能报表工具开发案例指南
    网页状态码
    javascript变量的作用域
    KAL1 LINUX 官方文档之工具---kali工具
  • 原文地址:https://www.cnblogs.com/xxaxx/p/4408798.html
Copyright © 2011-2022 走看看