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=;
for(int ii=;ii<inputData.Length;ii++)
{
if(inputData[ii]>=)
{
checksum+=(inputData[ii]-)*(ii+);
}
else
{
checksum+=(inputData[ii]+)*(ii+);
}
}
checksum=checksum%;
if(checksum<)
{
checksum+=;
}
else
{
checksum+=;
}
result=Convert.ToChar()+inputData.ToString()+Convert.ToChar(checksum)+Convert.ToChar();
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",,FontStyle.Regular,GraphicsUnit.World);
Font ft2 = new System.Drawing.Font("Code 128",,FontStyle.Regular,GraphicsUnit.World);
Brush br = new SolidBrush(Color.Black);
Margins margins = new Margins(,,,);
av.PageSettings.Margins = margins; av.Graphics.DrawString(Get128CodeString(inputString),ft2,br,,-);
av.Graphics.DrawString(inputString,ft1,br,,);
av.HasMorePages = false;
}

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

using System.Drawing.Printing;

定义全局变量:

string inputString;

在按钮click中测试:

inputString = "";

//查看Code128码的值:

//lblBarCode.Text = Get128CodeString(inputString);

PrintLable();

一维条码打印的C#实现(Code128)的更多相关文章

  1. C# GDI+绘制一维条码打印模糊的解决办法

    最近遇到使用zxing生成的一维条码打印出来的条码图形很模糊根本识别不了.其实原因只有一句话: bitmap没有直接使用PrintDocument的Graphics画布进行绘制,而是中间处理了一下外部 ...

  2. Code 128 规则解析

    1.CODE 128 标准 1.1 code 128码格式:   格式:   从左起: 空白区域,起始字符(Start),数据区域(data),校验码(check),结束字符(Stop),空白区域. ...

  3. SAP smartform 实现打印条形码

    先在SE73里定义一个新的BARCODE,注意一定要用新的才可以,旧的是打印不出来的. 然后定义一个SMARTFORM的样式,把你定义的BARCODE放到字符样式里面去. 再做SMARTFORM就可以 ...

  4. Code128

    条形码 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案.条形 ...

  5. 基于Metronic的Bootstrap开发框架经验总结(14)--条码和二维码的生成及打印处理

    在很多项目里面,对条形码和二维码的生成和打印也是一种很常见的操作,在Web项目里面,我们可以利用JS生成条形码和二维码的组件有很多.本文引入两个比较广泛使用的JS组件,用来处理条形码和二维码的生成处理 ...

  6. Web打印--Lodop API

    Lodop是一款专业的WEB打印控件,其设计目标是简单易用.功能足够强大,开创WEB打印开发的新局面. Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实 ...

  7. [原创]Lodop打印, 以及Lodop引用css文件控制打印样式的问题.

    最近在做Lodop打印功能: 思路是:  用MasterPage搭个打印页面的框架, 然后在具体的页面中填入数据, 打印的样式由母版页和CSS来控制. 困扰了一天的问题是:  在打印的JS文件中, 引 ...

  8. 利用Code128字体将文本转换为code128条形码

    利用Code128字体将文本转换为code128条形码[转]   最近在做仓储的项目,许多的打印文件都包含条形码,之前一直使用C39P24DhTt字体直接转换为39码,但是最近要求使用code128编 ...

  9. 问题解决——使用GP-3120TN打印条形码标签

    终于大致的尝试出了参数和编程手册里指令的使用. 在这里,感谢佳博中一个叫做"Gprinter 陶玮"的工程师所提供的技术支持.非常感谢,如果没有你,在写这篇文章之前我可能换别的打印 ...

随机推荐

  1. 07---Net基础加强

    第六节复习 泛型和非泛型集合的区别 通常情况下,建议您使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员.此外,如果集合元素为值类型,泛型集合类型的性能通常优 ...

  2. Javascript中的json操作

    <!doctype html> <html> <head> <title>extjs-json</title> <script typ ...

  3. 查看linux的出错信息

    先执行:dmesg -c > /dev/null 该命令是把之前的一些信息删除,-c选项表示:Clear the ring buffer after first printing its con ...

  4. zw·准专利·高保真二值图细部切分算法

    zw·准专利·高保真二值图细部切分算法     高保真二值图细部切分算法,是中国字体协会项目的衍生作品.     说准专利算法,是因为对于图像算法的标准不了解,虽然报过专利,但不是这方面的,需要咨询专 ...

  5. 【转】The Attached Behavior Pattern

    原文:http://www.bjoernrochel.de/2009/08/19/the-attached-behavior-pattern/ The Attached Behavior Patter ...

  6. android 百度地图定位开发2

    先下载了示例代码 进行配置(可查看开发 指南 Hello BaiDuMap) 第一步:创建并配置工程(具体方法参见工程配置部分的介绍): 第二步:在AndroidManifest中添加开发密钥.所需权 ...

  7. Asp.net的post提交方式

    //建立WebRequest对象,url目标地址HttpWebRequest req =(HttpWebRequest)WebRequest.Create(url); //将LoginInfo转换为b ...

  8. 【python cookbook】【数据结构与算法】7.让字典保持有序

    问题:创建一个字典,同时对字典做迭代或序列化操作时,也能控制其中元素的顺序: 解决方案:可以使用collections模块中的OrderedDict类来控制字典中元素的顺序.当对字典做迭代时,他会严格 ...

  9. Loadrunner 接口测试的两种方法

    其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程. 方法一.用Lo ...

  10. Google Map: JavaScript API RefererNotAllowedMapError

    visite https://console.developers.google.com/apis/credentials and select the project you use. http:/ ...