生成条形码代码

//该段代码为 生成条形码代码

//生成效果

 

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace Paabo.WordProcessing.Common
{
    
public class BarCodeProvider
    {
        
#region 单例
        
private static BarCodeProvider _Intance;
        
public static BarCodeProvider Intance
        {
            
get
            {
                
if (_Intance == null)
                {
                    _Intance 
= new BarCodeProvider();
                }
                
return _Intance;
            }
        }
        
#endregion

        
#region Size
        
/// <summary>
        
/// 图片宽度
        
/// </summary>
        private int _Width = 200;
        
public int Width
        {
            
get { return _Width; }
            
set { _Width = value; }
        }


        
/// <summary>
        
/// 图片高度
        
/// </summary>
        private int _Height = 80;
        
public int Height 
        {
            
get { return _Height; }
            
set { _Height = value; }
        }

        
/// <summary>
        
/// 明文高度
        
/// </summary>
        private int _TextHeight = 25;
        
public int TextHeight
        {
            
get { return _TextHeight; }
            
set { _TextHeight = value; }
        }

        
#endregion

        
#region 边距
        
private int _Margin_Top = 5;

        
/// <summary>
        
/// 上边距
        
/// </summary>
        public int Margin_Top
        {
            
get { return _Margin_Top; }
            
set { _Margin_Top = value; }
        }

        
private int _Margin_Left = 5;

        
/// <summary>
        
/// 左边距
        
/// </summary>
        public int Margin_Left
        {
            
get { return _Margin_Left; }
            
set { _Margin_Left = value; }
        }


        
private int _Margin_Right = 5;

        
/// <summary>
        
/// 右边距
        
/// </summary>
        public int Margin_Right
        {
            
get { return _Margin_Right; }
            
set { _Margin_Right = value; }
        }

        
private int _Margin_Bottom = 5;
        
/// <summary>
        
/// 下边距
        
/// </summary>
        public int Margin_Bottom
        {
            
get { return _Margin_Bottom; }
            
set { _Margin_Bottom = value; }
        }
        
#endregion

        
private Font _TextFont = new Font("宋体"12);

        
/// <summary>
        
/// 明文字体
        
/// </summary>
        public Font TextFont
        {
            
get { return _TextFont; }
            
set { _TextFont = value; }
        }

        
private Pen _BlackPen = new Pen(Brushes.Black);
        
private Pen _WhitePen = new Pen(Brushes.White);

        
/// <summary>
        
/// 将明文装换为编码
        
/// </summary>
        
/// <param name="text">明文内容</param>
        
/// <returns>编码</returns>
        private string ConvertToBarCode(string text)
        {
            
string code = string.Empty;
            
foreach (char item in text)
            {
                
int itemValue = item;
                code 
+= Convert.ToString(itemValue, 2+ ",";
            }
            
return code;
        }

        
/// <summary>
        
/// 将字符串生成条形图片
        
/// </summary>
        
/// <param name="text">明文内容</param>
        
/// <returns></returns>
        public Bitmap CreateBarCodeImage(string text)
        {
            Bitmap map 
= new Bitmap(Width, Height);
            Graphics g 
= Graphics.FromImage(map);
            
try
            {
                
string code = ConvertToBarCode(text);
                code 
= string.Format("101{0}101", code);
                
char[] array = code.ToCharArray();
                
char[] textArray = text.ToCharArray();
                
int lineWidth = (Width - Margin_Left-Margin_Right) / (array.Length - textArray.Length);
                
int lineHeight = Height - TextHeight - Margin_Bottom;

                _BlackPen.Width 
= lineWidth;
                _WhitePen.Width 
= lineWidth;

                
int x = 5;
                
int topY = 5;
                
int bottonY = Height - Margin_Bottom - TextHeight;

                
int index = 0;
                
char pItem = ' ';
                Pen pen 
= null;
                
foreach (char item in array)
                {

                    
if (item == ',')
                    {
                        
string t = textArray[index].ToString();
                        g.DrawString(t, TextFont, Brushes.Black, 
new PointF(x - (lineWidth * 5), bottonY + 3));
                        index
++;
                    }
                    
else
                    {
                        
if (pItem == ' ')
                        {
                            pen 
= _BlackPen;
                        }
                        
else
                        {
                            
if (item != pItem)
                            {
                                pen 
= pen == _BlackPen ? _WhitePen : _BlackPen;
                            }
                        }
                        pItem 
= item;
                        g.DrawLine(pen, 
new Point(x, topY), new Point(x, bottonY));
                    }
                    x 
+= lineWidth;
                }
            }
            
catch (Exception ex)
            {
                g.Clear(Color.White);
                g.DrawString(ex.Message, TextFont, Brushes.Black, 
new PointF(00));
            }
            g.Save();
            
return map;
        }
    }
}

要在Java中生成条形码,您可以使用第三方库,比如ZXing(Zebra Crossing)。下面是一个使用ZXing库生成条形码的示例代码: 首先,您需要将ZXing库添加到您的Java项目中。您可以在Maven或Gradle中添加以下依赖项: Maven: ```xml <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version> </dependency> ``` Gradle: ```groovy implementation 'com.google.zxing:core:3.4.1' implementation 'com.google.zxing:javase:3.4.1' ``` 然后,您可以使用以下代码生成条形码: ```java import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class BarcodeGenerator { private static final String PATH = "barcode.png"; // 条形码保存路径 public static void main(String[] args) { String barcodeData = "123456789"; // 条形码数据 try { generateBarcode(barcodeData, PATH); System.out.println("条形码生成并保存到文件: " + PATH); } catch (Exception e) { System.out.println("生成条形码时出错: " + e.getMessage()); } } private static void generateBarcode(String barcodeData, String filePath) throws WriterException, Exception { int width = 300; // 条形码宽度 int height = 100; // 条形码高度 // 设置条形码参数 com.google.zxing.EncodeHintType hintType = EncodeHintType.ERROR_CORRECTION; com.google.zxing.EncodeHintType hintType2 = EncodeHintType.CHARACTER_SET; java.util.Map<EncodeHintType, Object> hints = new java.util.HashMap<>(); hints.put(hintType, ErrorCorrectionLevel.H); hints.put(hintType2, "UTF-8"); // 生成条形码 BitMatrix bitMatrix = new MultiFormatWriter().encode(barcodeData, BarcodeFormat.CODE_128, width, height, hints); // 将条形码保存为图片文件 File outputFile = new File(filePath); OutputStream outputStream = new FileOutputStream(outputFile); MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream); outputStream.close(); } } ``` 在示例代码中,我们使用ZXing库生成Code 128格式的条形码。您可以将`barcodeData`变量替换为您想要的条形码数据。生成条形码将保存为PNG格式的图片文件,并保存在指定的路径(`PATH`变量)中。 请确保将ZXing库正确添加到项目依赖项中,并根据您的需求进行相应的修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值