Articles in this section
Category / Section

How to add QR code to word using C#, VB.NET.docx

5 mins read

Syncfusion Essential DocIO is a .NET Word library used to create, read, and edit Word documents programmatically without Microsoft Word or interop dependencies.

Using this library, you can add QR code to Word document in C# and VB.NET. Below steps should be followed.

  • Design your template Word document with the required layout and merge fields using Microsoft Word
  • Using Syncfusion PDF library you can generate a QR code.
  • Insert the generated QR code as an image into the Word document with MergeImageField event using Essential DocIO.

Steps to add QR code to Word document using C# and VB.NET:

  1. Create a new C# console application project.Create Console application in Visual Studio
  2. Install Syncfusion.DocIO.WinForms NuGet package as a reference to your .NET Framework applications from the NuGet.org.Add DocIO NuGet package reference to the project
  3. Include the following namespace in the Program.cs file.

C#

using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.Pdf.Barcode;
using Syncfusion.Pdf.Graphics;

VB

Imports Syncfusion.DocIO
Imports Syncfusion.DocIO.DLS
Imports Syncfusion.Pdf.Barcode
Imports Syncfusion.Pdf.Graphics
  1. Use the following code to add QR code to Word document.

C#

//Open an existing document.
using (WordDocument document = new WordDocument(Path.GetFullPath(@"../../Template.docx"), FormatType.Automatic))
{
//Create mail merge events handler for image fields
document.MailMerge.MergeImageField += new MergeImageFieldEventHandler(InsertQRBarcode);
//Get data to perform mail merge
DataTable table = GetDataTable();
//Perform the mail merge
document.MailMerge.ExecuteGroup(table);
//Save and close the Word document instance
document.Save("Result.docx", FormatType.Docx);
}
System.Diagnostics.Process.Start("Result.docx");

VB

'Open an existing document.
Using document As WordDocument = New WordDocument(Path.GetFullPath("../../Template.docx"), Syncfusion.DocIO.FormatType.Automatic)
'Create mail merge events handler for image fields
AddHandler document.MailMerge.MergeImageField, AddressOf InsertQRBarcode
Dim table As DataTable = GetDataTable()
'Perform the mail merge
document.MailMerge.ExecuteGroup(table)
'Save and close the Word document instance
document.Save("Result.docx", Syncfusion.DocIO.FormatType.Docx)
End Using
System.Diagnostics.Process.Start("Result.docx")
  1. Include the following helper method to insert QR code image using MergeImageField event.

C#

private static void InsertQRBarcode(object sender, MergeImageFieldEventArgs args)
{
    WParagraph paragraph = new WParagraph(args.Document);
    if (args.FieldName == "QRBarcode")
    {
        //Generate barcode image for field value.
        Image barcodeImage = GenerateQRBarcodeImage(args.FieldValue.ToString());
        //Set barcode image for merge field
        args.Image = barcodeImage;
    }
}

VB

Private Sub InsertQRBarcode(ByVal sender As Object, ByVal args As MergeImageFieldEventArgs)
    Dim paragraph As WParagraph = New WParagraph(args.Document)
    If (args.FieldName = "QRBarcode") Then
        'Generate barcode image for field value.
        Dim barcodeImage As Image = GenerateQRBarcodeImage(args.FieldValue.ToString)
        'Set barcode image for merge field
        args.Image = barcodeImage
    End If
End Sub
  1. Include the following helper method to generate QR code image using Syncfusion PDF library.

C#

private static Image GenerateQRBarcodeImage(string qrBarcodeText)
{
    //Drawing QR Barcode
    PdfQRBarcode barcode = new PdfQRBarcode();
    //Set Error Correction Level
    barcode.ErrorCorrectionLevel = PdfErrorCorrectionLevel.High;
    //Set XDimension
    barcode.XDimension = 3;
    barcode.Text = qrBarcodeText;
    //Convert the barcode to image
    Image barcodeImage = barcode.ToImage(new SizeF(125.5f, 135.5f));
    return barcodeImage;
}

VB

Private Function GenerateQRBarcodeImage(ByVal qrBarcodeText As String) As Image
        'Drawing QR Barcode
        Dim barcode As PdfQRBarcode = New PdfQRBarcode
        'Set Error Correction Level
        barcode.ErrorCorrectionLevel = PdfErrorCorrectionLevel.High
        'Set XDimension
        barcode.XDimension = 3
        barcode.Text = qrBarcodeText
        'Convert the barcode to image
        Dim barcodeImage As Image = barcode.ToImage(New SizeF(125.5f, 135.5f))
        Return barcodeImage
    End Function
  1. Include the following helper method to get data for Mail merge execution process.

C#

private static DataTable GetDataTable()
{
    // List of products name.
    string[] products = { "Apple Juice", "Grape Juice", "Hot Soup", "Tender Coconut", "Vennila", "Strawberry", "Cherry", "Cone",
"Butter", "Milk", "Cheese", "Salt", "Honey", "Soap", "Chocolate", "Edible Oil", "Spices", "Paneer", "Curd", "Bread", "Olive oil", "Vinegar", "Sports Drinks",
"Vegetable Juice", "Sugar", "Flour", "Jam", "Cake", "Brownies", "Donuts", "Egg", "Tooth Brush", "Talcum powder", "Detergent Soap", "Room Spray", "Tooth paste",
"Apple Juice", "Grape Juice", "Hot Soup", "Tender Coconut", "Vennila", "Strawberry", "Cherry", "Cone",
"Butter", "Milk", "Cheese", "Salt", "Honey", "Soap", "Chocolate", "Edible Oil", "Spices", "Paneer", "Curd", "Bread", "Olive oil", "Vinegar", "Sports Drinks",
"Vegetable Juice", "Sugar", "Flour", "Jam", "Cake", "Brownies", "Donuts", "Egg", "Tooth Brush", "Talcum powder", "Detergent Soap", "Room Spray", "Tooth paste"};
 
    DataTable table = new DataTable("Product_PriceList");
 
    // Add fields to the Product_PriceList table.
    table.Columns.Add("ProductName");
    table.Columns.Add("Price");
    table.Columns.Add("QRBarcode");
    DataRow row;
 
    int Id = 10001;
    // Insert values to the table.
    foreach (string product in products)
    {
       row = table.NewRow();
       row["ProductName"] = product;
       switch (product)
       {
          case "Apple Juice":
          row["Price"] = "$12.00";
          break;
          case "Grape Juice":
          case "Milk":
          row["Price"] = "$15.00";
          break;
          case "Hot Soup":
          row["Price"] = "$20.00";
          break;
          case "Tender coconut":
          case "Cheese":
          row["Price"] = "$10.00";
          break;
          case "Vennila Ice Cream":
          row["Price"] = "$15.00";
          break;
          case "Strawberry":
          case "Butter":
          row["Price"] = "$18.00";
          break;
          case "Cherry":
          case "Salt":
          row["Price"] = "$25.00";
          break;
          default:
          row["Price"] = "$20.00";
          break;
       }
       //Add barcode text
       row["QRBarcode"] = Id.ToString();
       table.Rows.Add(row);
       Id++;
    }
    return table;
}

VB

Private Function GetDataTable() As DataTable
        ' List of products name.
        Dim products() As String = New String() {"Apple Juice", "Grape Juice", "Hot Soup", "Tender Coconut", "Vennila", "Strawberry", "Cherry", "Cone", "Butter", "Milk", "Cheese", "Salt", "Honey", "Soap", "Chocolate", "Edible Oil", "Spices", "Paneer", "Curd", "Bread", "Olive oil", "Vinegar", "Sports Drinks", "Vegetable Juice", "Sugar", "Flour", "Jam", "Cake", "Brownies", "Donuts", "Egg", "Tooth Brush", "Talcum powder", "Detergent Soap", "Room Spray", "Tooth paste", "Apple Juice", "Grape Juice", "Hot Soup", "Tender Coconut", "Vennila", "Strawberry", "Cherry", "Cone", "Butter", "Milk", "Cheese", "Salt", "Honey", "Soap", "Chocolate", "Edible Oil", "Spices", "Paneer", "Curd", "Bread", "Olive oil", "Vinegar", "Sports Drinks", "Vegetable Juice", "Sugar", "Flour", "Jam", "Cake", "Brownies", "Donuts", "Egg", "Tooth Brush", "Talcum powder", "Detergent Soap", "Room Spray", "Tooth paste"}
        Dim table As DataTable = New DataTable("Product_PriceList")
        ' Add fields to the Product_PriceList table.
        table.Columns.Add("ProductName")
        table.Columns.Add("Price")
        table.Columns.Add("QRBarcode")
        Dim row As DataRow
        Dim Id As Integer = 10001
        ' Insert values to the table.
        For Each product As String In products
            row = table.NewRow
            row("ProductName") = product
            Select Case (product)
                Case "Apple Juice"
                    row("Price") = "$12.00"
                Case "Grape Juice", "Milk"
                    row("Price") = "$15.00"
                Case "Hot Soup"
                    row("Price") = "$20.00"
                Case "Tender coconut", "Cheese"
                    row("Price") = "$10.00"
                Case "Vennila Ice Cream"
                    row("Price") = "$15.00"
                Case "Strawberry", "Butter"
                    row("Price") = "$18.00"
                Case "Cherry", "Salt"
                    row("Price") = "$25.00"
                Case Else
                    row("Price") = "$20.00"
            End Select
 
            'Add barcode text
            row("QRBarcode") = Id.ToString
            table.Rows.Add(row)
            Id = (Id + 1)
        Next
        Return table
    End Function

A complete working example of how to add QR code to Word document using C# can be downloaded from add QR code to Word.zip

Input Word document with merge fields as follows.

Graphical user interface, application, Word

Description automatically generated

By executing the program, you will get the output Word document with QR code labels as follows.

Table

Description automatically generated with medium confidence

Take a moment to peruse the documentation, where you can find basic Word document processing options along with features like mail merge, merge and split documents, find and replace text in the Word document, protect the Word documents, and most importantly PDF and Image conversions with code examples.

Explore more about the rich set of Syncfusion Word Framework features.

Note:

Starting with v16.2.0.x, if you reference Syncfusion assemblies from trial setup or from the NuGet feed, include a license key in your projects. Refer to link to learn about generating and registering Syncfusion license key in your application to use the components without trail message.

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied