志铭-2022年2月15日 22:15:46

0. 背景说明

在.net程序中生成69码的条形码很容易

生成的条形码使用手机扫码和扫码枪都是可以准确的扫描

但是,这次我需要生成69码的条形码

可是我发现,我生成的69码对应的条形码和超市商品的打印的不一样,

一般商品上的69码的条形码两边的和中间的线条都会长出一段的

之前程序中的生成的条形码都是仓库和内部使用不需要在意这些细节,

而这次打印的吊牌需要直接展示给用户,所以需要注意一些细节

一般搜索.net创建条形码都是使用Zxing,但是达不到我所期望

最终发现使用字体实现效果极好,而且使用字体在报表中展示时无需要使用图片,直接使用文字即可

测试了三种方法,将三种方法记录于此

1. 使用ZXing.NET

PM>Install-Package ZXing.Net -Version 0.16.8


using ZXing;
using ZXing.Common; /// <summary>
/// 使用ZXing创建条形码
/// </summary>
/// <param name="barCode">条码</param>
/// <param name="height">高度</param>
/// <param name="width">宽度</param>
/// <returns>Bitmap图片</returns>
public static Bitmap GenerateBarCodeByZXing(string barCode,string height=310,string width=120)
{
EncodingOptions encoding = new EncodingOptions()
{
GS1Format = true,
Height = height,//设置一维码宽高
Width = widht,
Margin = 0,//图片空白边距
PureBarcode = false//在条码下显示条码,true则不显示
}; //生成条形码的图片
BarcodeWriter wr = new BarcodeWriter()
{
//进行指定规格
Options = encoding,
Format = BarcodeFormat.EAN_13 // BarcodeFormat.CODE_128//
}; Bitmap img = wr.Write(barCode);//生成一维码图片
return img;
}

2. 使用BarcodeLib

PM>Install-Package BarcodeLib -Version 2.4.0


using BarcodeLib; /// <summary>
/// 使用BarcodeLib生成条形码
/// </summary>
/// <param name="barCode">内容</param>
/// <returns></returns>
public static Image GenerateBarCodeByBarcodeLib(string barCode)
{
Barcode barcode = new Barcode()
{
IncludeLabel = true,//是否包含图片下面的文字信息
Alignment = AlignmentPositions.CENTER,//一维码在图片居中
Width = 250,
Height = 100,
RotateFlipType = RotateFlipType.RotateNoneFlipNone,//图像反转
BackColor = Color.White,//背景色
ForeColor = Color.Black,//前景色
}; return barcode.Encode(TYPE.EAN13, barCode);
}

3. 使用字体

internal class EAN13Class
{
public static string Barcode13Digits = "";
/// <summary>
/// 12位条码补齐校验位生成13位的条码
/// </summary>
/// <param name="chaine"></param>
/// <returns></returns>
public static string EAN13(string chaine)
{
int i;
int first;
int checkSum = 0;
string Barcode = "";
bool tableA;
if (Regex.IsMatch(chaine, "^\\d{12}$"))
{
for (i = 1; i < 12; i += 2)
{
System.Diagnostics.Debug.WriteLine(chaine.Substring(i, 1));
checkSum += Convert.ToInt32(chaine.Substring(i, 1));
}
checkSum *= 3;
for (i = 0; i < 12; i += 2)
{
checkSum += Convert.ToInt32(chaine.Substring(i, 1));
}
chaine += (10 - checkSum % 10) % 10;
Barcode13Digits = chaine.ToString();
Barcode = chaine.Substring(0, 1) + (char)(65 + Convert.ToInt3(chaine.Substring(1, 1)));
first = Convert.ToInt32(chaine.Substring(0, 1));
for (i = 2; i <= 6; i++)
{
tableA = false;
switch (i)
{
case 2:
if (first >= 0 && first <= 3)
{
tableA = true;
}
break;
case 3:
if (first == 0 || first == 4 || first == 7 || first== 8)
{
tableA = true;
}
break;
case 4:
if (first == 0 || first == 1 || first == 4 || first== 5 || first == 9)
{
tableA = true;
}
break;
case 5:
if (first == 0 || first == 2 || first == 5 || first== 6 || first == 7)
{
tableA = true;
}
break;
case 6:
if (first == 0 || first == 3 || first == 6 || first== 8 || first == 9)
{
tableA = true;
}
break;
}
if (tableA)
{
Barcode += (char)(65 + Convert.ToInt32(chaine.Substrin(i, 1)));
}
else
{
Barcode += (char)(75 + Convert.ToInt32(chaine.Substrin(i, 1)));
}
}
Barcode += "*";
for (i = 7; i <= 12; i++)
{
Barcode += (char)(97 + Convert.ToInt32(chaine.Substring(i, 1));
}
Barcode += "+";
}
return Barcode;
}
}
string Check12Digits = txtForFont.Text.PadRight(12, '0');//不足12位用0总右侧补齐
string Barrcode = EAN13Class.EAN13(Check12Digits);
labForFont.Text = Barrcode;

4. 参考

C# Programming How to Create EAN-13 Barcode Generator

备忘录——关于C#生成条形码的更多相关文章

  1. C# 在Word文档中生成条形码

    C# 在Word文档中生成条形码 简介 条形码是由多个不同的空白和黑条按照一定的顺序组成,用于表示各种信息如产品名称.制造商.类别.价格等.目前,条形码在我们的日常生活中有着很广泛的应用,不管是在图书 ...

  2. 使用html2canvas实现批量生成条形码

    /*前台代码*/ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Generat ...

  3. JAVA生成条形码

    1.下载生成条形码所需要的jar包barcode4j.jar: 2.java生成条形码代码 import java.awt.image.BufferedImage;import java.io.Fil ...

  4. C# 生成条形码

    原文地址:http://www.cnblogs.com/xcsn/p/4514759.html 引用BarcodeLib.dll(百度云中有)生成条形 protected void Button2_C ...

  5. C# 利用BarcodeLib.dll生成条形码(一维,zxing,QrCodeNet/dll二维码)

    原文:http://blog.csdn.net/kongwei521/article/details/17588825 首先效果: 一.下载BarcodeLib.dll 下载地址 :http://do ...

  6. PHP5生成条形码器

    前阵子在做一个商家优惠券的功能,需要用到条形码,于是将资料重新整理下. 1.什么是条形码? 百度百科定义:条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息 ...

  7. PHP生成条形码

    前阵子在做一个商家优惠券的功能,需要用到条形码,于是将资料重新整理下. 1.什么是条形码? 百度百科定义:条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息 ...

  8. C# 利用BarcodeLib.dll生成条形码

    首先效果: 1:首先下载BarcodeLib.dll 下载地址 http://pan.baidu.com/share/link?shareid=2590968386&uk=2148890391 ...

  9. 使用PHP-Barcode轻松生成条形码(一)

    最近由于工作需要,研究了一下PHP如何生成条形码.虽然二维码时下比较流行,但是条形码依然应用广泛,不可替代.园子里有很多讲利用PHP生成条形码的文章,基本上都是围绕Barcode Bakery的,它虽 ...

随机推荐

  1. Centos6.8安装并配置VNC

    一般服务器都会在IDC或云端,为了可以看到服务器的图形化界面,需要安装配置VNC,本例为Centos6.8上安装配置VNC. [root@hostname ~]#yum install -y tige ...

  2. BitMap算法知识笔记以及在大数据方向的使用

    概述 所谓的BitMap算法就是位图算法,简单说就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间,这是很常用的 ...

  3. MCU软件最佳实践——矩阵键盘驱动

    1.矩阵键盘vs独立按键 在mcu应用开发过程中,独立按键比较常见,但是在需要的按键数比较多时,使用矩阵键盘则可以减少io占用,提高系统资源利用率.例如,某mcu项目要求有16个按钮,如果采用独立按键 ...

  4. MATLAB绘图入门

    %%%1.运算符:(1).% mean() -->平均值 1.对于一个数组,mean(数组名)则返回均值2.对于一个矩阵,mean(数组名,1或2) 1代表返回矩阵每列的平均值 2代表返回矩阵每 ...

  5. 开源数据可视化BI工具SuperSet(安装)

    本次安装教程共分两大步骤,因为Superset 基于python3编写的web应用(flask) 所以要求python3环境,故首先要将linux系统自带的环境进行升级,已经是python3的可跳过- ...

  6. 使用PostGIS完成两点间的河流轨迹及流经长度的计算

    基础准备工作 1.PostGIS 的安装 在安装PostGIS前首先必须安装PostgreSQL,然后再安装好的Stack Builder中选择安装PostGIS组件.具体安装步骤可参照 PostGI ...

  7. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练.在本节,你将会对autograd如何帮助神经网络训练的概念有所理解. 背景 神经网络(NNs)是在输入数据上执行的嵌 ...

  8. gin框架中使用jwt

    生成解析token 如今有很多将身份验证内置到API中的方法 -JSON Web令牌只是其中之一.JSON Web令牌(JWT)作为令牌系统而不是在每次请求时都发送用户名和密码,因此比其他方法(如基本 ...

  9. 哪些是GET请求,哪些是POST请求

    GET请求: 1,form标签 method=get 2,a标签 3,link标签引入css 4,Script标签引入js文件 5,img标签引入图片 6,iframe引入html页面 7,在浏览器地 ...

  10. 集合框架-工具类-JDK5.0特性-函数可变参数

    1 package cn.itcast.p4.news.demo; 2 3 public class ParamterDemo { 4 5 public static void main(String ...