zoukankan      html  css  js  c++  java
  • 用Code128字体打印条码

    项目已经到了尾声了,开发业快完了,拿到正是的条码纸和碳带,开打,加了'-'的128码,读取得速度不是很快,也不是很好读,因为是使用生成条码图片的方式打印,看来还是有问题,之前用过指令直接打印,条码倒是读的快,但是其他的文字的大小不可控,放弃了。

    现在有找到个好方法,就是是用128字体来打印。当然还没测试读取的效果,先把方法贴上,明天去测试速度。

    有两种转换128码的方式,有待明天测试......

    方式A:

     1 private string StringToCode128(string String)
     2         {
     3             try
     4             {
     5                 char endChar = (char)0;
     6                 Int64 total = 104;
     7                 int tmp;
     8                 Int64 endAsc;
     9                 for (int i = 0; i < String.Length; i++)
    10                 {
    11                     tmp = (int)(Convert.ToChar(String.Substring(i, 1)));
    12                     if (tmp >= 32)
    13                     {
    14                         total += (tmp - 32) * (i + 1);
    15                     }
    16                     else
    17                     {
    18                         total += (tmp + 64) * (i + 1);
    19                     }
    20                 }
    21                 endAsc = total % 103;
    22                 if (endAsc >= 95)
    23                 {
    24                     switch (endAsc)
    25                     {
    26                         case 95:
    27                             endChar = '?';
    28                             break;
    29                         case 96:
    30                             endChar = '?';
    31                             break;
    32                         case 97:
    33                             endChar = '?';
    34                             break;
    35                         case 98:
    36                             endChar = '?';
    37                             break;
    38                         case 99:
    39                             endChar = '?';
    40                             break;
    41                         case 100:
    42                             endChar = 'è';
    43                             break;
    44                         case 101:
    45                             endChar = 'é';
    46                             break;
    47                         case 102:
    48                             endChar = 'ê';
    49                             break;
    50                     }
    51                 }
    52                 else
    53                 {
    54                     endAsc += 32;
    55                     endChar = (char)endAsc;
    56                 }
    57                 return "ì" + String + endChar.ToString() + "?";
    58 
    59             }
    60             catch (Exception ex)
    61             {
    62                 MessageBox.Show("Error:" + ex.Message);
    63                 return string.Empty;
    64             }
    65 
    66         }

    方法B:

     1 private string Get128CodeString(string inputData)
     2         {
     3             string result;
     4             int checksum = 104;
     5             for (int ii = 0; ii < inputData.Length; ii++)
     6             {
     7                 if (inputData[ii] >= 32)
     8                 {
     9                     checksum += (inputData[ii] - 32) * (ii + 1);
    10                 }
    11                 else
    12                 {
    13                     checksum += (inputData[ii] + 64) * (ii + 1);
    14                 }
    15             }
    16             checksum = checksum % 103;
    17             if (checksum < 95)
    18             {
    19                 checksum += 32;
    20             }
    21             else
    22             {
    23                 checksum += 100;
    24             }
    25             result = Convert.ToChar(204) + inputData.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);
    26             return result;
    27         }
      Font ft_BarCode = new System.Drawing.Font("Code 128", 43, FontStyle.Regular, GraphicsUnit.World);
    
      Font ft1 = new System.Drawing.Font("Times New Roman", 14, FontStyle.Regular, GraphicsUnit.World);
    
    
    
    gB.DrawString(Get128CodeString(this.gridView1.GetRowCellValue(e.RowHandle, "BARCODE").ToString()),
    ft_BarCode, b1, new Point(40, 138));// new Rectangle(40, 138, 230, 40));
    
    gB.DrawString("*"+this.gridView1.GetRowCellValue(e.RowHandle, "BARCODE").ToString()+"*",
    new Font(this.Font.FontFamily, 10, FontStyle.Regular), b1, new Point(100, 177));// new Rectangle(80, 180, 230, 20));
  • 相关阅读:
    How to Integrate JCaptcha in Spring Security
    精简的webservice
    linux时间与Windows时间不一致的解决
    java泛型
    spring全局变量引起的并发问题
    ByteBuffer常用方法详解
    cindy
    NIO之Buffer的clear()、rewind()、flip()方法的区别
    Java NIO(New I/O)的三个属性position、limit、capacity
    技术选型
  • 原文地址:https://www.cnblogs.com/lzh_527/p/2883749.html
Copyright © 2011-2022 走看看