Link Search Menu Expand Document

Split PDF Document By Found Barcode - C#

BarCode Reader SDK sample in C# demonstrating ‘Split PDF Document By Found Barcode’

Program.cs
using System;
using System.IO;
using System.Text;
using Bytescout.BarCodeReader;

namespace SplitDocumentByFoundBarcode
{
    class Program
    {
        const string InputFIle = "Barcodes.pdf";

        static void Main()
        {
            Console.WriteLine("Reading barcode(s) from PDF document {0}", Path.GetFullPath(InputFIle));

            // Create Bytescout.BarCodeReader.Reader instance
            Reader reader = new Reader();
            reader.RegistrationName = "demo";
            reader.RegistrationKey = "demo";

            // Set barcode type to find
            reader.BarcodeTypesToFind.Code39 = true;

            /* -----------------------------------------------------------------------
            NOTE: We can read barcodes from specific page to increase performance.
            For sample please refer to "Decoding barcodes from PDF by pages" program.
            ----------------------------------------------------------------------- */

            // Find barcode in PDF document
            reader.ReadFrom(InputFIle);


            // Method 1: Split PDF document in two parts by found barcode
            // NOTE: In Full version of the SDK this method is unlocked in "PRO" license type only.

            reader.SplitDocument(@"barcodes.pdf", @"part1.pdf", @"part2.pdf", reader.FoundBarcodes[0].Page + 1);


            // Method 2: Extract page containing the barcode from PDF document
            // NOTE: In Full version of the SDK this method is unlocked in "PRO" license type only.

            reader.ExtractPageFromDocument(@"barcodes.pdf", @"extracted_page.pdf", reader.FoundBarcodes[0].Page + 1);


            // Method 3: Split PDF document into parts in one pass.
            // NOTE: In Full version of the SDK this method is unlocked in "PRO" license type only.

            StringBuilder pageRanges = new StringBuilder();

            // Create string containing page ranges to extract in the form "1-4,6-8,10-11,12-". Page numbers are 1-based!
            for (int i = 0; i < reader.FoundBarcodes.Length; i++)
            {
                FoundBarcode barcode = reader.FoundBarcodes[i];

                // Add pages before the first barcode found
                if (i == 0 && barcode.Page > 0)
                {
                    pageRanges.Append("1");
                    if (barcode.Page > 1)
                    {
                        pageRanges.Append("-");
                        pageRanges.Append(barcode.Page);
                    }
                    pageRanges.Append(",");
                }

                // Add page with barcode
                pageRanges.Append(barcode.Page + 1); // +1 because we skip the page with barcode and another +1 because need 1-based page numbers
                
                // Add range untill the next barcode
                if (i < reader.FoundBarcodes.Length - 1)
                {
                    if (reader.FoundBarcodes[i + 1].Page - barcode.Page > 1)
                    {
                        pageRanges.Append("-");
                        pageRanges.Append(reader.FoundBarcodes[i + 1].Page);
                    }

                    pageRanges.Append(",");
                }
                else // for the last found barcode add ending "-" meaning "to the last page"
                {
                    pageRanges.Append("-");
                }
            }

            // Split document 
            string[] splittedParts = reader.SplitDocument(@"barcodes.pdf", pageRanges.ToString());
            // The method returns array of file names. Rename files as desired.

            foreach (var fileName in splittedParts)
            {
                Console.WriteLine(fileName);
            }

            // Cleanup
            reader.Dispose();

            Console.Read();
            Console.WriteLine("Press enter key to exit...");
        }
    }
}

Download Source Code (.zip)

Return to the previous page Explore BarCode Reader SDK