ByteScout Barcode Reader SDK – ASP.NET – Split PDF by Barcode (C#)

  • Home
  • /
  • Articles
  • /
  • ByteScout Barcode Reader SDK – ASP.NET – Split PDF by Barcode (C#)

ByteScout Barcode Reader SDK – ASP.NET – Split PDF by Barcode (C#)

Default.aspx.cs

using System;
using System.IO;
using Bytescout.BarCodeReader;

namespace WebTestSharp
{
	public partial class _Default : System.Web.UI.Page
	{
	    protected void Page_Load(object sender, EventArgs e)
	    {
            LabelInputFile.Text = MapPath("barcodes.pdf");
	    }

	    protected void UploadButton_Click(object sender, EventArgs e)
		{
			String savePath = @"\uploads\";

			if (FileUpload1.HasFile)
			{
				String fileName = FileUpload1.FileName;
                fileName = savePath + fileName;
                // remove if already exists
                if (File.Exists(fileName))
                    File.Delete(fileName);
                    
				FileUpload1.SaveAs(Server.MapPath(fileName));

				Reader barcodeReader = new Reader();

				// Limit search to 1D barcodes only (exclude 2D barcodes to speed up the search).
				// Change to barcodeReader.BarcodeTypesToFind.SetAll() to scan for all supported 1D and 2D barcodes 
				// or select specific type, e.g. barcodeReader.BarcodeTypesToFind.PDF417 = True
                barcodeReader.BarcodeTypesToFind.SetAll1D();

				// reader.MediumTrustLevelCompatible = true; // uncomment this line to enable Medium Trust compatible mode (slows down the recognition process as direct image data access is disabled in Medium Trust mode)
				UploadStatusLabel.Visible = false;

				ListBox1.Items.Clear();
				ListBox1.Visible = true;
				ListBox1.Items.Add("Searching for barcode(s) from PDF file \"" + fileName + "\"");

                FoundBarcode[] barcodes = barcodeReader.ReadFrom(Server.MapPath(fileName));

				if (barcodes.Length == 0)
				{
					ListBox1.Items.Add("No barcodes found");
				}
				else
				{
                    // saving filename of the pdf file 
                    string lastFilename = fileName;
                    
                    int partIndex = 0;

					foreach (FoundBarcode barcode in barcodes)
					{
                        // Split PDF document in two parts by found barcode
                        partIndex++;
                        barcodeReader.SplitDocument(
                            Server.MapPath(lastFilename), 
                            Server.MapPath(savePath+@"part-" + partIndex + ".pdf"),
                            Server.MapPath(savePath + @"part-last.pdf"), 
                            barcode.Page + 1);

                        ListBox1.Items.Add(String.Format("Splitting " + fileName + " file into 2 by barcode with type '{0}' and value '{1}' on page {2} at {3} ", barcode.Type, barcode.Value, barcode.Page, barcode.Rect.ToString()));
                        ListBox1.Items.Add("Saved:" + savePath + @"part-" + partIndex + ".pdf");

                        lastFilename = savePath + @"part-last.pdf";

					}
				}
			}
			else
			{
				// Notify the user that a file was not uploaded.
				UploadStatusLabel.Text = "You did not specify a file to upload.";
			}
		}
	}
}

Web.config

<?xml version="1.0"?>

<configuration>
  
    <appSettings/>
    <connectionStrings/>
  
    <system.web>
        <!-- 
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.
        -->
        <compilation debug="true" />
        <!--
            The <authentication> section enables configuration 
            of the security authentication mode used by 
            ASP.NET to identify an incoming user. 
        -->
        <authentication mode="Windows" />
        <!--
            The <customErrors> section enables configuration 
            of what to do if/when an unhandled error occurs 
            during the execution of a request. Specifically, 
            it enables developers to configure html error pages 
            to be displayed in place of a error stack trace.

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
    </system.web>
</configuration>


  Click here to get your Free Trial version of the SDK

prev
next