barcode reader API in C# using PDF.co Web API

Write code in C# to make barcode reader API with this How-To tutorial

These source code samples are listed and grouped by their programming language and functions they use. PDF.co Web API was made to help with barcode reader API in C#. PDF.co Web API is the flexible Web API that includes full set of functions from e-signature requests to data extraction, OCR, images recognition, pdf splitting and pdf splitting. Can also generate barcodes and read barcodes from images, scans and pdf.

C#, code samples for C#, developers help to speed up the application development and writing a code when using PDF.co Web API. C# sample code is all you need: copy and paste the code to your C# application’s code editor, add a reference to PDF.co Web API (if you haven’t added yet) and you are ready to go! Enhanced documentation and tutorials are available along with installed PDF.co Web API if you’d like to dive deeper into the topic and the details of the API.

Free trial version of PDF.co Web API is available on our website. Get it to try other samples for C#.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

ByteScoutWebApiExample.csproj

      
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{1E1C2C34-017E-4605-AE2B-55EA3313BE51}</ProjectGuid> <OutputType>Exe</OutputType> <RootNamespace>ByteScoutWebApiExample</RootNamespace> <AssemblyName>ByteScoutWebApiExample</AssemblyName> <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="Program.cs" /> </ItemGroup> <ItemGroup> <None Include="packages.config" /> <None Include="profile.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> --> </Project>

ByteScoutWebApiExample.sln

      
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.40629.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ByteScoutWebApiExample", "ByteScoutWebApiExample.csproj", "{1E1C2C34-017E-4605-AE2B-55EA3313BE51}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Debug|Any CPU.Build.0 = Debug|Any CPU {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Release|Any CPU.ActiveCfg = Release|Any CPU {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal

Program.cs

      
using System; using System.Collections.Generic; using System.IO; using System.Net; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace ByteScoutWebApiExample { class Program { // The authentication key (API Key). // Get your own by registering at https://app.pdf.co/documentation/api const String API_KEY = "***********************************"; // Direct URL of source file (image or PDF) to search barcodes in. const string SourceFileURL = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/barcode-reader/sample.pdf"; // Comma-separated list of barcode types to decode. // See the documentation: https://apidocs.pdf.co/?#barcode-reader const string BarcodeTypes = "Code39,Code128,Interleaved2of5,EAN13"; // Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'. const string Pages = ""; /* Some of advanced options available through profiles: (JSON can be single/double-quoted and contain comments.) { "profiles": [ { "profile1": { "ScanArea": "WholePage", // Values: "TopLeftQuarter", "TopRightQuarter", "BottomRightQuarter", "BottomLeftQuarter", "TopHalf", "BottomHalf", "WholePage". "RequireQuietZones": true, // Whether the quite zone is obligatory for 1D barcodes. Values: true / false "MaxNumberOfBarcodesPerPage": 0, // 0 - unlimited. "MaxNumberOfBarcodesPerDocument": 0, // 0 - unlimited. "ScanStep": 1, // Scan interval for linear (1-dimensional) barcodes. "MinimalDataLength": 0, // Minimal acceptable length of decoded data. "FastMode": true // Faster decoding mode for good quality documents } } ] } */ // Sample profile that sets advanced conversion options // Advanced options are properties of Reader class from Bytescout BarCodeReader used in the back-end: // https://cdn.bytescout.com/help/BytescoutBarCodeReaderSDK/html/T_Bytescout_BarCodeReader_Reader.htm static string Profiles = File.ReadAllText(@".\profile.json"); static void Main(string[] args) { // Create standard .NET web client instance WebClient webClient = new WebClient(); // Set API Key webClient.Headers.Add("x-api-key", API_KEY); // Prepare requests params as JSON // See documentation: https://apidocs.pdf.co/?#barcode-reader Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("pages", Pages); parameters.Add("url", SourceFileURL); parameters.Add("type", BarcodeTypes); parameters.Add("profiles", Profiles); // Convert dictionary of params to JSON string jsonPayload = JsonConvert.SerializeObject(parameters); try { // URL of "Barcode Reader" endpoint string url = "https://api.pdf.co/v1/barcode/read/from/url"; // Execute POST request with JSON payload string response = webClient.UploadString(url, jsonPayload); // Parse JSON response JObject json = JObject.Parse(response); if (json["error"].ToObject<bool>() == false) { // Display found barcodes in console foreach (JToken token in json["barcodes"]) { Console.WriteLine("Found barcode:"); Console.WriteLine(" Type: " + token["TypeName"]); Console.WriteLine(" Value: " + token["Value"]); Console.WriteLine(" Document Page Index: " + token["Page"]); Console.WriteLine(" Rectangle: " + token["Rect"]); Console.WriteLine(" Confidence: " + token["Confidence"]); Console.WriteLine(); } } else { // Display service reported error Console.WriteLine(json["message"].ToString()); } } catch (WebException e) { // Display request error Console.WriteLine(e.ToString()); } finally { webClient.Dispose(); } Console.WriteLine(); Console.WriteLine("Press any key..."); Console.ReadKey(); } } }

packages.config

      
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net40" /> </packages>

profile.json

      
{ "profiles": [ { "profile1": { "ScanStep": 5 } } ] }

VIDEO

ON-PREMISE OFFLINE SDK

Get 60 Day Free Trial

See also:

ON-DEMAND REST WEB API

Get Your API Key

See also:

Related Samples: