主要用到第三方库ZXing.net来生成各种条码。用PrintDocument来打印。很简单也很实用。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using ZXing;
using ZXing.Common;
using ZXing.QrCode;
namespace Printtest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
EncodingOptions encodeOption = new EncodingOptions();
encodeOption.Height = 50; // 高度、宽度
encodeOption.Width = 120;
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Options = encodeOption;
wr.Format = BarcodeFormat.CODE_39; // 条形码规格
Bitmap img = wr.Write("D1234B678A"); // 生成图片
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + "test" + ".jpg";
img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
private void button2_Click(object sender, EventArgs e)
{
ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions();
qrEncodeOption.CharacterSet = "UTF-8"; // 设置编码格式,否则读取'中文'乱码
qrEncodeOption.Height = 30;
qrEncodeOption.Width = 30;
qrEncodeOption.Margin = 1; // 设置周围空白边距
// 2.生成条形码图片并保存
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Format = BarcodeFormat.DATA_MATRIX; // 二维码
wr.Options = qrEncodeOption;
Bitmap img = wr.Write("D1234B678A");
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + "test2" + ".jpg";
img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
pictureBox1.Load(filePath);
}
private void button3_Click(object sender, EventArgs e)
{
this.printDocument1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom",220, 120);
//PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
//printPreviewDialog.Document = printDocument1; 打印预览代码
try
{
printDocument1.Print();
}
catch(Exception excep)
{
MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap img = new Bitmap(Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + "test" + ".jpg"));
e.Graphics.DrawString("A1234B678A", new Font(new FontFamily("黑体"), 11), System.Drawing.Brushes.Black, 5, 5);
e.Graphics.DrawImage(img, 10, 30);
//e.Graphics.DrawString("D1234B678A", new Font(new FontFamily("黑体"), 11), System.Drawing.Brushes.Black, 10, 90);
e.Graphics.DrawImage(pictureBox1.Image, 150, 80);
}
}
}
最终效果