生成条码有很多控件,大部分好的控件,做出来的条码精确清晰,但是往往该部分的控件费用都很高,这里推荐大家使用6.0版本的破解版,可以生成无水印,下方也可以不显示文字。
1、下图是 onbarcode 控件,的费用图,取自官网。
2、下图是 Aspose.BarCode for .NET 的官网费用
总结:这些控件可以使用,因为需要付费。给免费使用的,条码中夹杂水印,可见,好的控件都是比较难获取的。
今天使用 Aspose.BarCode for .NET 6.0 来生成各种的二维码(这里只介绍PDF417码生成,其他更简单且类似)
下图是最简单的返回Bitmap格式的方法,可以调用:
public static Bitmap CreateBitmap() { // ExStart:CreatePDF417Barcode // The path to the documents directory. // string dataDir = RunExamples.GetDataDir_ManageBarCodes(); //// Instantiate BarCodeBuilder object //BarCodeBuilder barCodeBuilder = new BarCodeBuilder(); //barCodeBuilder.CodeText = "ffffffffffffffffffffffi"; // Set the Code text for the barcode //barCodeBuilder.SymbologyType = Symbology.Code128; // Set the SymbologyType for the barcode BarCodeBuilder barCodeBuilder = new BarCodeBuilder("ffffffffffffffffffffffi", Symbology.Code128); //上三行,和该行效果相同 return barCodeBuilder.GenerateBarCodeImage(); // Save file to disk //barCodeBuilder.Save(dataDir + "pdf417-barcode_out.jpg", BarCodeImageFormat.Jpeg); }
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
实际中,我们创建一个项目,通过一个按钮,在 pictureBox1 中显示二维码,代码如下
private void button1_Click(object sender, EventArgs e) { // Instantiate barcode object BarCodeBuilder barCodeBuilder = new BarCodeBuilder(); // Set Barcode Symbology barCodeBuilder.SymbologyType = Symbology.Pdf417; barCodeBuilder.CodeTextSpace = 1; //二维码下方文字与图形的距离,我们也可以不要文字 // set Pdf417 Error correction level barCodeBuilder.Pdf417ErrorLevel = Pdf417ErrorLevel.Level8; // Set Pdf417 Compaction Mode to Text barCodeBuilder.Pdf417CompactionMode = Pdf417CompactionMode.Text; // set CodeText for barcode barCodeBuilder.CodeText = "1234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C01234512345678901234567890678E9C0"; //带下方显示文字 //this.pictureBox1.Width = (int)barCodeBuilder.ImageWidth + 100; //显示大小,长宽 //this.pictureBox1.Height = (int)barCodeBuilder.ImageHeight; //barCodeBuilder.Save(@"C:\AA.bmp", BarCodeImageFormat.Bmp); //以图片形式生成,保存本地 this.pictureBox1.Image = barCodeBuilder.GenerateBarCodeImage(); // GenerateBarCodeImage 创建图片,下方显示文字信息 //this.pictureBox1.Image = barCodeBuilder.GetOnlyBarCodeImage(); //不显示下方文字,仅仅显示图片,对于非破解版,该步不行
}
同样的,也可以利用到PrintDocument之中,我们将Bitmap以图片格式进行压缩或者放大显示,如下:
// Instantiate barcode object BarCodeBuilder barCodeBuilder = new BarCodeBuilder(); // Set Barcode Symbology barCodeBuilder.SymbologyType = Symbology.Pdf417; barCodeBuilder.CodeTextSpace = 2; //文字与图形的距离 // set Pdf417 Error correction level barCodeBuilder.Pdf417ErrorLevel = Pdf417ErrorLevel.Level8; //校验等级 // Set Pdf417 Compaction Mode to Text barCodeBuilder.Pdf417CompactionMode = Pdf417CompactionMode.Text; // set CodeText for barcode barCodeBuilder.CodeText = pdf417_text; ///barCodeBuilder.Save(@"C:\AA.png", BarCodeImageFormat.Png); //以图片形式生成 //Bitmap bitmap = barCodeBuilder.GenerateBarCodeImage(); //获取Bitmap图片格式, 下方带文字,对于小型二维码是很好的显示 Bitmap bitmap = barCodeBuilder.GetOnlyBarCodeImage(); //获取Bitmap图片格式, barCodeBuilder.GetOnlyBarCodeImage e.Graphics.DrawImage(bitmap, 20, 35, 140, 80); //将二维码图片 打印出来,缩放
结构图:
测试结果(其他格式条码类似):
分享共进步,谢谢阅读。