使用ZXing.net生成二維碼和一維碼圖片,再使用PrintDocument打印圖片
具體代碼:
private string GenerateBarCodeImage(string barCode, int width, int height, BarcodeFormat format) { BarcodeWriter writer = new BarcodeWriter { Format = format }; QrCodeEncodingOptions options = new QrCodeEncodingOptions(); //設置內容編碼 options.CharacterSet = "UTF-8"; //設置二維碼的寬度和高度 options.Width = width; options.Height = height; //設置二維碼的邊距,單位不是固定像素 options.Margin = 1; writer.Options = options; string fileName = _printImageDirectory + Guid.NewGuid().ToString(); Bitmap map = writer.Write(barCode); map.Save(fileName, ImageFormat.Png); map.Dispose(); return fileName; }
private void PrintImage(string imagePath) { if (File.Exists(imagePath)) { PrintDocument pd = new PrintDocument(); //pd.DefaultPageSettings.PrinterSettings.PrinterName = "Printer Name"; pd.DefaultPageSettings.Landscape = true; //or false! pd.PrintPage += (sender, args) => { Image i = Image.FromFile(imagePath); System.Drawing.Rectangle m = args.MarginBounds; if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) // image is wider { m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width); } else { m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height); } args.Graphics.DrawImage(i, m); }; var printPriview = new PrintPreviewDialog { Document = pd, WindowState = FormWindowState.Maximized }; printPriview.ShowDialog(); } }
使用的命名空間:
using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Printing; using System.IO; using System.Windows; using System.Windows.Controls; using ZXing; using ZXing.QrCode; using Image = System.Drawing.Image; using System.Windows.Forms;