一维条码打印的C#实现(Code128)

1、CODE128基础知识

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

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

2、条码编码规则

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

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

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

 

ContractedBlock.gif ExpandedBlockStart.gif Code
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、打印

 

ContractedBlock.gif ExpandedBlockStart.gif Code
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;
}

 

看到评论说是不能用,今天测试了一下,发现写错了一个地方:

 

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

代码:

result=Convert.ToChar(204)+checksum.ToString()+Convert.ToChar(checksum)+Convert.ToChar(206);

应该改为:
result=Convert.ToChar(204)+inputData.ToString()+Convert.ToChar(checksum)+Convert.ToChar(206);

 

简单测试程序:

Vs2008测试程序

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

using System.Drawing.Printing;

 

定义全局变量:

string inputString;

在按钮click中测试:

inputString = "0123456789";

//查看Code128码的值:

//lblBarCode.Text = Get128CodeString(inputString);

PrintLable();

 

 

 

 

如果还有问题,那是系统里没有安装Code 128字体 Code128字体下载

 

转载于:https://www.cnblogs.com/wbo168/archive/2009/06/02/1494128.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#的条形码打印程序,带源码和测试程序 ......\WindowsApplication2 ......\...................\debug ......\...................\.....\BarCode.dll ......\...................\WebSite1 ......\...................\........\App_Data ......\...................\........\BarCode.aspx ......\...................\........\BarCode.aspx.cs ......\...................\........\Bin ......\...................\........\...\BarCode.dll ......\...................\........\...\BarCode.dll.refresh ......\...................\........\Default.aspx ......\...................\........\Default.aspx.cs ......\...................\........\Web.Config ......\...................\WindowsApplication1 ......\...................\...................\bin ......\...................\...................\...\Debug ......\...................\...................\...\.....\BarCode.dll ......\...................\...................\...\.....\WindowsApplication1.exe ......\...................\...................\...\.....\WindowsApplication1.pdb ......\...................\...................\...\.....\WindowsApplication1.vshost.exe ......\...................\...................\...\.....\WindowsApplication1.xml ......\...................\...................\Form1.Designer.vb ......\...................\...................\Form1.resx ......\...................\...................\Form1.vb ......\...................\...................\My Project ......\...................\...................\..........\Application.Designer.vb ......\...................\...................\..........\Application.myapp ......\...................\...................\..........\AssemblyInfo.vb ......\...................\...................\..........\Resources.Designer.vb ......\...................\...................\..........\Resources.resx ......\...................\...................\..........\Settings.Designer.vb ......\...................\...................\..........\Settings.settings ......\...................\...................\obj ......\...................\...................\...\Debug ......\...................\...................\...\.....\ResolveAssemblyReference.cache ......\...................\...................\...\.....\TempPE ......\...................\...................\...\.....\......\My Project.Resources.Designer.vb.dll ......\...................\...................\...\.....\WindowsApplication1.exe ......\...................\...................\...\.....\WindowsApplication1.Form1.resources ......\...................\...................\...\.....\WindowsApplication1.pdb ......\...................\...................\...\.....\WindowsApplication1.Resources.resources ......\...................\...................\...\.....\WindowsApplication1.vbproj.GenerateResource.Cache ......\...................\...................\...\.....\WindowsApplication1.xml ......\...................\...................\...\WindowsApplication1.vbproj.FileList.txt ......\...................\...................\WindowsApplication1.vbproj ......\...................\...................\WindowsApplication1.vbproj.user ......\...................\WindowsApplication2 ......\...................\...................\bin ......\...................\...................\...\Debug ......\...................\...................\...\.....\BarCode.dll ......\...................\...................\...\.....\WindowsApplication2.exe ......\...................\...................\...\.....\WindowsApplication2.pdb ......\...................\...................\...\.....\WindowsApplication2.vshost.exe ......\...................\...................\Form1.cs ......\...................\...................\Form1.designer.cs ......\...................\...................\Form1.resx ......\...................\...................\obj ......\...................\...................\...\Debug ......\...................\...................\...\.....\ResolveAssemblyReference.cache ......\...................\...................\...\.....\TempPE ......\...................\...................\...\.....\......\Properties.Resources.Designer.cs.dll ......\...................\...................\...\.....\WindowsApplication2.csproj.GenerateResource.Cache ......\...................\...................\...\.....\WindowsApplication2.exe ......\...................\...................\...\.....\WindowsApplication2.Form1.resources ......\...................\...................\...\.....\WindowsApplication2.pdb ......\...................\...................\...\.....\WindowsApplication2.Properties.Resources.resources ......\...................\...................\...\WindowsApplication2.csproj.FileList.txt ......\...................\...................\Program.cs ......\...................\...................\Properties ......\...................\...................\..........\AssemblyInfo.cs ......\...................\...................\..........\Resources.Designer.cs ......\...................\...................\..........\Resources.resx ......\...................\...................\..........\Settings.Designer.cs ......\...................\...................\..........\Settings.settings ......\...................\...................\WindowsApplication2.csproj ......\...................\...................\WindowsApplication2.csproj.user ......\...................\WindowsApplication2.ncb ......\...................\WindowsApplication2.sln ......\...................\WindowsApplication2.suo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值