Print Labels - C#
BarCode SDK sample in C# demonstrating ‘Print Labels’
Form1.Designer.cs
namespace PrintLabels
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.buttonPrint = new System.Windows.Forms.Button();
this.printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog();
this.printDocument1 = new System.Drawing.Printing.PrintDocument();
this.printDialog1 = new System.Windows.Forms.PrintDialog();
this.SuspendLayout();
//
// buttonPrint
//
this.buttonPrint.Location = new System.Drawing.Point(12, 12);
this.buttonPrint.Name = "buttonPrint";
this.buttonPrint.Size = new System.Drawing.Size(260, 57);
this.buttonPrint.TabIndex = 0;
this.buttonPrint.Text = "Draw And Print Cards";
this.buttonPrint.UseVisualStyleBackColor = true;
this.buttonPrint.Click += new System.EventHandler(this.buttonPrint_Click);
//
// printPreviewDialog1
//
this.printPreviewDialog1.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.printPreviewDialog1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.printPreviewDialog1.ClientSize = new System.Drawing.Size(400, 300);
this.printPreviewDialog1.Document = this.printDocument1;
this.printPreviewDialog1.Enabled = true;
this.printPreviewDialog1.Icon = ((System.Drawing.Icon)(resources.GetObject("printPreviewDialog1.Icon")));
this.printPreviewDialog1.Name = "printPreviewDialog1";
this.printPreviewDialog1.UseAntiAlias = true;
this.printPreviewDialog1.Visible = false;
//
// printDocument1
//
this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
//
// printDialog1
//
this.printDialog1.Document = this.printDocument1;
this.printDialog1.UseEXDialog = true;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 156);
this.Controls.Add(this.buttonPrint);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button buttonPrint;
private System.Windows.Forms.PrintPreviewDialog printPreviewDialog1;
private System.Drawing.Printing.PrintDocument printDocument1;
private System.Windows.Forms.PrintDialog printDialog1;
}
}
Form1.cs
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
using System.Windows.Forms;
using Bytescout.BarCode;
namespace PrintLabels
{
/// <summary>
/// This example demonstrates drawing and printing of mutiple cards (e.g. stickers) on a single page.
/// Cards contain variable labels and barcodes.
/// </summary>
public partial class Form1 : Form
{
SizeF PaperSize = new SizeF(5.5f, 8.75f); // 5.5 x 8.75 inches
const int PrintingResolution = 300; // 300 dots per inch
public Form1()
{
InitializeComponent();
// Make the print preview dialog larger by default
printPreviewDialog1.MinimumSize = new Size(800, 600);
}
private void buttonPrint_Click(object sender, EventArgs e)
{
// Show print setup dialog, then print preview
if (printDialog1.ShowDialog() == DialogResult.OK)
printPreviewDialog1.ShowDialog();
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
// Draw page on the printer device context
Bitmap pageBitmap = DrawPage();
e.Graphics.DrawImage(pageBitmap, 0, 0);
}
// Draw cards on a bitmap of custom size
private Bitmap DrawPage()
{
SizeF cardSize = new SizeF(PaperSize.Width / 4, PaperSize.Height / 4); // 4 x 4 cards on a page
// Prepare constant and variable labels
string strBrand = "CJ SHOES";
string strModel = "ARTHUR-1N";
string strColor = "BLK";
float shoeSizeStart = 5.5f;
float shoeSizeStep = 0.5f;
long barcodeStartValue = 4611030000;
int barcodeValueStep = 1;
// Prepare fonts
Font font1 = new Font("Arial", 0.12f, GraphicsUnit.Inch);
Font font2 = new Font("Arial", 0.10f, GraphicsUnit.Inch);
Font font3 = new Font("Arial", 0.09f, GraphicsUnit.Inch);
Font font4 = new Font("Arial", 0.15f, GraphicsUnit.Inch);
// Prepare barcode generator
Barcode barcode = new Barcode("demo", "demo");
barcode.Symbology = SymbologyType.I2of5;
barcode.NarrowBarWidth = 2;
barcode.DrawCaption = false;
int cardIndex = 0;
// Create bitmap for the page
Bitmap pageBitmap = new Bitmap((int) (PaperSize.Width * PrintingResolution), (int) (PaperSize.Height * PrintingResolution));
pageBitmap.SetResolution(PrintingResolution, PrintingResolution);
using (Graphics pageCanvas = Graphics.FromImage(pageBitmap))
{
pageCanvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
pageCanvas.CompositingQuality = CompositingQuality.HighQuality;
// Setup page units to inches
pageCanvas.PageUnit = GraphicsUnit.Inch;
// Fill background with white color
pageCanvas.Clear(Color.White);
// Draw cards
for (int row = 0; row < 4; row++)
{
for (int column = 0; column < 4; column++)
{
// Create bitmap for card
Bitmap cardBitmap = new Bitmap((int) (cardSize.Width * PrintingResolution), (int) cardSize.Height * PrintingResolution);
cardBitmap.SetResolution(PrintingResolution, PrintingResolution);
using (Graphics cardCanvas = Graphics.FromImage(cardBitmap))
{
// Setup page units to inches
cardCanvas.PageUnit = GraphicsUnit.Inch;
// Setup drawing quality
cardCanvas.SmoothingMode = SmoothingMode.HighQuality;
cardCanvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
cardCanvas.CompositingQuality = CompositingQuality.HighQuality;
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
// Draw static labels
cardCanvas.DrawString(strBrand, font1, Brushes.Black, cardSize.Width / 2, 0.1f, stringFormat);
cardCanvas.DrawString(strModel, font2, Brushes.Black, cardSize.Width / 2, 0.4f, stringFormat);
cardCanvas.DrawString(strColor, font1, Brushes.Black, cardSize.Width / 2, 0.7f, stringFormat);
// Generate barcode image
barcode.Value = (barcodeStartValue + cardIndex * barcodeValueStep).ToString();
barcode.PreserveMinReadableSize = false;
barcode.ResolutionX = barcode.ResolutionY = PrintingResolution;
barcode.FitInto(cardSize.Width, 0.5f, UnitOfMeasure.Inch);
Image barcodeImage = barcode.GetImage();
// Draw barcode
cardCanvas.DrawImage(barcodeImage, 0, 1.0f);
// Draw barcode label
cardCanvas.DrawString(barcode.Value, font3, Brushes.Black, cardSize.Width / 2, 1.4f, stringFormat);
// Draw shoe size label
cardCanvas.DrawString((shoeSizeStart + cardIndex * shoeSizeStep).ToString(), font4, Brushes.Black,
cardSize.Width / 2, 1.7f, stringFormat);
}
// Draw card on the page
pageCanvas.DrawImage(cardBitmap, column * cardSize.Width, row * cardSize.Height);
cardIndex++;
}
}
}
return pageBitmap;
}
}
}
Program.cs
using System;
using System.Windows.Forms;
namespace PrintLabels
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Resources.Designer.cs
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace PrintLabels.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PrintLabels.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}
Settings.Designer.cs
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace PrintLabels.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}