diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample.sln b/How to/Download start event/PDFViewerSample/PDFViewerSample.sln
new file mode 100644
index 0000000..fcca1a3
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample.sln	
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.34607.79
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PDFViewerSample", "PDFViewerSample\PDFViewerSample.csproj", "{3936B843-A035-424E-BA4B-990436AC60BD}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {31245B35-82FC-4C3B-A888-4730D0AD8EE0}
+	EndGlobalSection
+EndGlobal
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj b/How to/Download start event/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj
new file mode 100644
index 0000000..16876f5
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj	
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Syncfusion.EJ2.AspNet.Core" Version="24.2.8" />
+  </ItemGroup>
+
+</Project>
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml
new file mode 100644
index 0000000..6f92b95
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml	
@@ -0,0 +1,26 @@
+@page
+@model ErrorModel
+@{
+    ViewData["Title"] = "Error";
+}
+
+<h1 class="text-danger">Error.</h1>
+<h2 class="text-danger">An error occurred while processing your request.</h2>
+
+@if (Model.ShowRequestId)
+{
+    <p>
+        <strong>Request ID:</strong> <code>@Model.RequestId</code>
+    </p>
+}
+
+<h3>Development Mode</h3>
+<p>
+    Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
+</p>
+<p>
+    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+    It can result in displaying sensitive information from exceptions to end users.
+    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+    and restarting the app.
+</p>
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs
new file mode 100644
index 0000000..c008cae
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs	
@@ -0,0 +1,28 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using System.Diagnostics;
+
+namespace PDFViewerSample.Pages
+{
+    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+    [IgnoreAntiforgeryToken]
+    public class ErrorModel : PageModel
+    {
+        public string? RequestId { get; set; }
+
+        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+
+        private readonly ILogger<ErrorModel> _logger;
+
+        public ErrorModel(ILogger<ErrorModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+            RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
+        }
+    }
+
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml
new file mode 100644
index 0000000..8b35310
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml	
@@ -0,0 +1,17 @@
+@page "{handler?}"
+@model IndexModel
+@{
+    ViewData["Title"] = "Home page";
+}
+
+<div class="text-center">
+    <ejs-pdfviewer id="pdfviewer" style="height:600px"  documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" downloadStart="downloadStart" resourceUrl="https://cdn.syncfusion.com/ej2/24.1.41/dist/ej2-pdfviewer-lib">
+    </ejs-pdfviewer>
+</div>
+
+<script type="text/javascript">
+    function downloadStart(args) { 
+        // Your custom logic here
+        args.cancel = true; // Prevent download action
+    };
+</script>
\ No newline at end of file
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs
new file mode 100644
index 0000000..ef356dd
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs	
@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class IndexModel : PageModel
+    {
+        private readonly ILogger<IndexModel> _logger;
+
+        public IndexModel(ILogger<IndexModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+
+        }
+    }
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml
new file mode 100644
index 0000000..46ba966
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml	
@@ -0,0 +1,8 @@
+@page
+@model PrivacyModel
+@{
+    ViewData["Title"] = "Privacy Policy";
+}
+<h1>@ViewData["Title"]</h1>
+
+<p>Use this page to detail your site's privacy policy.</p>
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs
new file mode 100644
index 0000000..cd60641
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs	
@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class PrivacyModel : PageModel
+    {
+        private readonly ILogger<PrivacyModel> _logger;
+
+        public PrivacyModel(ILogger<PrivacyModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+        }
+    }
+
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml
new file mode 100644
index 0000000..b5648cd
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml	
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>@ViewData["Title"] - PDFViewerSample</title>
+    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
+    <link rel="stylesheet" href="~/PDFViewerSample.styles.css" asp-append-version="true" />
+    <!-- Syncfusion ASP.NET Core controls styles -->
+    <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/24.2.3/fluent.css" />
+    <!-- Syncfusion ASP.NET Core controls scripts -->
+    <script src="https://cdn.syncfusion.com/ej2/24.2.3/dist/ej2.min.js"></script>
+</head>
+<body>
+    <header>
+        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+            <div class="container">
+                <a class="navbar-brand" asp-area="" asp-page="/Index">PDFViewerSample</a>
+                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+                        aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
+                    <ul class="navbar-nav flex-grow-1">
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </nav>
+    </header>
+    <div class="container">
+        <main role="main" class="pb-3">
+            @RenderBody()
+        </main>
+    </div>
+
+    <footer class="border-top footer text-muted">
+        <div class="container">
+            &copy; 2024 - PDFViewerSample - <a asp-area="" asp-page="/Privacy">Privacy</a>
+        </div>
+    </footer>
+
+    <script src="~/lib/jquery/dist/jquery.min.js"></script>
+    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+    <script src="~/js/site.js" asp-append-version="true"></script>
+
+    @await RenderSectionAsync("Scripts", required: false)
+    <!-- Syncfusion ASP.NET Core Script Manager -->
+    <ejs-scripts></ejs-scripts>
+</body>
+</html>
\ No newline at end of file
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css
new file mode 100644
index 0000000..c187c02
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css	
@@ -0,0 +1,48 @@
+/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
+for details on configuring this project to bundle and minify static web assets. */
+
+a.navbar-brand {
+  white-space: normal;
+  text-align: center;
+  word-break: break-all;
+}
+
+a {
+  color: #0077cc;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.border-top {
+  border-top: 1px solid #e5e5e5;
+}
+.border-bottom {
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.box-shadow {
+  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
+}
+
+button.accept-policy {
+  font-size: 1rem;
+  line-height: inherit;
+}
+
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  white-space: nowrap;
+  line-height: 60px;
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml
new file mode 100644
index 0000000..5a16d80
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml	
@@ -0,0 +1,2 @@
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
+<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml
new file mode 100644
index 0000000..51b8015
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml	
@@ -0,0 +1,4 @@
+@using PDFViewerSample
+@namespace PDFViewerSample.Pages
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@addTagHelper *, Syncfusion.EJ2
\ No newline at end of file
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml
new file mode 100644
index 0000000..a5f1004
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml	
@@ -0,0 +1,3 @@
+@{
+    Layout = "_Layout";
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Program.cs b/How to/Download start event/PDFViewerSample/PDFViewerSample/Program.cs
new file mode 100644
index 0000000..bc275e4
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Program.cs	
@@ -0,0 +1,25 @@
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+builder.Services.AddRazorPages();
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (!app.Environment.IsDevelopment())
+{
+    app.UseExceptionHandler("/Error");
+    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+    app.UseHsts();
+}
+
+app.UseHttpsRedirection();
+app.UseStaticFiles();
+
+app.UseRouting();
+
+app.UseAuthorization();
+
+app.MapRazorPages();
+
+app.Run();
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json b/How to/Download start event/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json
new file mode 100644
index 0000000..dbe83ce
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json	
@@ -0,0 +1,38 @@
+{
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:12333",
+      "sslPort": 44366
+    }
+  },
+  "profiles": {
+    "http": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "http://localhost:5059",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "https": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "https://localhost:7232;http://localhost:5059",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/appsettings.Development.json b/How to/Download start event/PDFViewerSample/PDFViewerSample/appsettings.Development.json
new file mode 100644
index 0000000..770d3e9
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/appsettings.Development.json	
@@ -0,0 +1,9 @@
+{
+  "DetailedErrors": true,
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/appsettings.json b/How to/Download start event/PDFViewerSample/PDFViewerSample/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/How to/Download start event/PDFViewerSample/PDFViewerSample/appsettings.json	
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}
diff --git a/How to/Download start event/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico b/How to/Download start event/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico
new file mode 100644
index 0000000..63e859b
Binary files /dev/null and b/How to/Download start event/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico differ
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample.sln b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample.sln
new file mode 100644
index 0000000..fcca1a3
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample.sln	
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.34607.79
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PDFViewerSample", "PDFViewerSample\PDFViewerSample.csproj", "{3936B843-A035-424E-BA4B-990436AC60BD}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {31245B35-82FC-4C3B-A888-4730D0AD8EE0}
+	EndGlobalSection
+EndGlobal
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj
new file mode 100644
index 0000000..16876f5
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj	
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Syncfusion.EJ2.AspNet.Core" Version="24.2.8" />
+  </ItemGroup>
+
+</Project>
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml
new file mode 100644
index 0000000..6f92b95
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml	
@@ -0,0 +1,26 @@
+@page
+@model ErrorModel
+@{
+    ViewData["Title"] = "Error";
+}
+
+<h1 class="text-danger">Error.</h1>
+<h2 class="text-danger">An error occurred while processing your request.</h2>
+
+@if (Model.ShowRequestId)
+{
+    <p>
+        <strong>Request ID:</strong> <code>@Model.RequestId</code>
+    </p>
+}
+
+<h3>Development Mode</h3>
+<p>
+    Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
+</p>
+<p>
+    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+    It can result in displaying sensitive information from exceptions to end users.
+    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+    and restarting the app.
+</p>
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs
new file mode 100644
index 0000000..c008cae
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs	
@@ -0,0 +1,28 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using System.Diagnostics;
+
+namespace PDFViewerSample.Pages
+{
+    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+    [IgnoreAntiforgeryToken]
+    public class ErrorModel : PageModel
+    {
+        public string? RequestId { get; set; }
+
+        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+
+        private readonly ILogger<ErrorModel> _logger;
+
+        public ErrorModel(ILogger<ErrorModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+            RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
+        }
+    }
+
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml
new file mode 100644
index 0000000..b8387d6
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml	
@@ -0,0 +1,13 @@
+@page "{handler?}"
+@model IndexModel
+@{
+    ViewData["Title"] = "Home page";
+    double MaxZoom = 10;
+    double MinZoom = 5;
+}
+
+
+<div class="text-center">
+    <ejs-pdfviewer id="pdfviewer" style="height:600px" maxZoom="@MaxZoom" minZoom="@MinZoom" documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf">
+    </ejs-pdfviewer>
+</div>
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs
new file mode 100644
index 0000000..ef356dd
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs	
@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class IndexModel : PageModel
+    {
+        private readonly ILogger<IndexModel> _logger;
+
+        public IndexModel(ILogger<IndexModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+
+        }
+    }
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml
new file mode 100644
index 0000000..46ba966
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml	
@@ -0,0 +1,8 @@
+@page
+@model PrivacyModel
+@{
+    ViewData["Title"] = "Privacy Policy";
+}
+<h1>@ViewData["Title"]</h1>
+
+<p>Use this page to detail your site's privacy policy.</p>
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs
new file mode 100644
index 0000000..cd60641
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs	
@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class PrivacyModel : PageModel
+    {
+        private readonly ILogger<PrivacyModel> _logger;
+
+        public PrivacyModel(ILogger<PrivacyModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+        }
+    }
+
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml
new file mode 100644
index 0000000..b5648cd
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml	
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>@ViewData["Title"] - PDFViewerSample</title>
+    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
+    <link rel="stylesheet" href="~/PDFViewerSample.styles.css" asp-append-version="true" />
+    <!-- Syncfusion ASP.NET Core controls styles -->
+    <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/24.2.3/fluent.css" />
+    <!-- Syncfusion ASP.NET Core controls scripts -->
+    <script src="https://cdn.syncfusion.com/ej2/24.2.3/dist/ej2.min.js"></script>
+</head>
+<body>
+    <header>
+        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+            <div class="container">
+                <a class="navbar-brand" asp-area="" asp-page="/Index">PDFViewerSample</a>
+                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+                        aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
+                    <ul class="navbar-nav flex-grow-1">
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </nav>
+    </header>
+    <div class="container">
+        <main role="main" class="pb-3">
+            @RenderBody()
+        </main>
+    </div>
+
+    <footer class="border-top footer text-muted">
+        <div class="container">
+            &copy; 2024 - PDFViewerSample - <a asp-area="" asp-page="/Privacy">Privacy</a>
+        </div>
+    </footer>
+
+    <script src="~/lib/jquery/dist/jquery.min.js"></script>
+    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+    <script src="~/js/site.js" asp-append-version="true"></script>
+
+    @await RenderSectionAsync("Scripts", required: false)
+    <!-- Syncfusion ASP.NET Core Script Manager -->
+    <ejs-scripts></ejs-scripts>
+</body>
+</html>
\ No newline at end of file
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css
new file mode 100644
index 0000000..c187c02
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css	
@@ -0,0 +1,48 @@
+/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
+for details on configuring this project to bundle and minify static web assets. */
+
+a.navbar-brand {
+  white-space: normal;
+  text-align: center;
+  word-break: break-all;
+}
+
+a {
+  color: #0077cc;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.border-top {
+  border-top: 1px solid #e5e5e5;
+}
+.border-bottom {
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.box-shadow {
+  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
+}
+
+button.accept-policy {
+  font-size: 1rem;
+  line-height: inherit;
+}
+
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  white-space: nowrap;
+  line-height: 60px;
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml
new file mode 100644
index 0000000..5a16d80
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml	
@@ -0,0 +1,2 @@
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
+<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml
new file mode 100644
index 0000000..51b8015
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml	
@@ -0,0 +1,4 @@
+@using PDFViewerSample
+@namespace PDFViewerSample.Pages
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@addTagHelper *, Syncfusion.EJ2
\ No newline at end of file
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml
new file mode 100644
index 0000000..a5f1004
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml	
@@ -0,0 +1,3 @@
+@{
+    Layout = "_Layout";
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Program.cs b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Program.cs
new file mode 100644
index 0000000..bc275e4
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Program.cs	
@@ -0,0 +1,25 @@
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+builder.Services.AddRazorPages();
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (!app.Environment.IsDevelopment())
+{
+    app.UseExceptionHandler("/Error");
+    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+    app.UseHsts();
+}
+
+app.UseHttpsRedirection();
+app.UseStaticFiles();
+
+app.UseRouting();
+
+app.UseAuthorization();
+
+app.MapRazorPages();
+
+app.Run();
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json
new file mode 100644
index 0000000..dbe83ce
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json	
@@ -0,0 +1,38 @@
+{
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:12333",
+      "sslPort": 44366
+    }
+  },
+  "profiles": {
+    "http": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "http://localhost:5059",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "https": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "https://localhost:7232;http://localhost:5059",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/appsettings.Development.json b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/appsettings.Development.json
new file mode 100644
index 0000000..770d3e9
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/appsettings.Development.json	
@@ -0,0 +1,9 @@
+{
+  "DetailedErrors": true,
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/appsettings.json b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/appsettings.json	
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}
diff --git a/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico
new file mode 100644
index 0000000..63e859b
Binary files /dev/null and b/How to/Min and Max zoom/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico differ
diff --git a/How to/Organize pdf/Pages/Index.cshtml b/How to/Organize pdf/Pages/Index.cshtml
index 8c973d6..e9e666f 100644
--- a/How to/Organize pdf/Pages/Index.cshtml	
+++ b/How to/Organize pdf/Pages/Index.cshtml	
@@ -5,11 +5,17 @@
 }
 
 <div style="width:100%;height:600px">
+    <button type="button" onclick="openPageOrganizer()">Open PageOrganizer Pane</button>
+    <button type="button" onclick="closePageOrganizer()">Close PageOrganizer Pane</button>
     <!-- To configure the server-backed PDF Viewer, include the "serviceUrl='/Index'" attribute -->
     <ejs-pdfviewer id="pdfviewer"
                    documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
                    resourceUrl="https://cdn.syncfusion.com/ej2/23.2.6/dist/ej2-pdfviewer-lib"
                    documentLoad="documentloaded"
+                   enablePageOrganizer=false
+                   isPageOrganizerOpen=false
+                   pageOrganizerSettings= pageOrganizerSettings="@(new Syncfusion.EJ2.PdfViewer.PdfViewerPageOrganizerSettings
+                   {canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true })"
                    style="height:641px;">
     </ejs-pdfviewer>
 </div>
@@ -24,5 +30,16 @@
         else {
             pdfViewer.isPageOrganizerOpen = false;
         }
+    },
+    function openPageOrganizer() {
+        var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0];
+        // Close Page Organizer panel.
+        pdfViewer.pageOrganizer.openPageOrganizer();
+    },
+    function closePageOrganizer() {
+        var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0];
+        // Close Page Organizer panel.
+        pdfViewer.pageOrganizer.closePageOrganizer(););
     }
+
 </script>
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/PDFViewerSample.csproj b/How to/Restrict Zoom Percentage on Mobile Devices/PDFViewerSample.csproj
new file mode 100644
index 0000000..dcbd110
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/PDFViewerSample.csproj	
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Syncfusion.EJ2.AspNet.Core" Version="*" />
+    <PackageReference Include="Syncfusion.EJ2.PdfViewer.AspNet.Core" Version="*" />
+  </ItemGroup>
+
+</Project>
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/PDFViewerSample.sln b/How to/Restrict Zoom Percentage on Mobile Devices/PDFViewerSample.sln
new file mode 100644
index 0000000..67ddc5d
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/PDFViewerSample.sln	
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.32112.339
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PDFViewerSample", "PDFViewerSample.csproj", "{39AA1883-BB43-4C46-9892-6033EA59C990}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{39AA1883-BB43-4C46-9892-6033EA59C990}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{39AA1883-BB43-4C46-9892-6033EA59C990}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{39AA1883-BB43-4C46-9892-6033EA59C990}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{39AA1883-BB43-4C46-9892-6033EA59C990}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {5F13CE16-9CC4-4755-AFB4-367F461A209C}
+	EndGlobalSection
+EndGlobal
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Error.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Error.cshtml
new file mode 100644
index 0000000..6f92b95
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Error.cshtml	
@@ -0,0 +1,26 @@
+@page
+@model ErrorModel
+@{
+    ViewData["Title"] = "Error";
+}
+
+<h1 class="text-danger">Error.</h1>
+<h2 class="text-danger">An error occurred while processing your request.</h2>
+
+@if (Model.ShowRequestId)
+{
+    <p>
+        <strong>Request ID:</strong> <code>@Model.RequestId</code>
+    </p>
+}
+
+<h3>Development Mode</h3>
+<p>
+    Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
+</p>
+<p>
+    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+    It can result in displaying sensitive information from exceptions to end users.
+    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+    and restarting the app.
+</p>
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Error.cshtml.cs b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Error.cshtml.cs
new file mode 100644
index 0000000..0a23fb0
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Error.cshtml.cs	
@@ -0,0 +1,27 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using System.Diagnostics;
+
+namespace PDFViewerSample.Pages
+{
+    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+    [IgnoreAntiforgeryToken]
+    public class ErrorModel : PageModel
+    {
+        public string? RequestId { get; set; }
+
+        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+
+        private readonly ILogger<ErrorModel> _logger;
+
+        public ErrorModel(ILogger<ErrorModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+            RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
+        }
+    }
+}
\ No newline at end of file
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Index.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Index.cshtml
new file mode 100644
index 0000000..43a5130
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Index.cshtml	
@@ -0,0 +1,27 @@
+@page "{handler?}"
+@model IndexModel
+@{
+    ViewData["Title"] = "Home page";
+}
+
+<div style="width:100%;height:600px">
+    <!-- To configure the server-backed PDF Viewer, include the "serviceUrl='/Index'" attribute -->
+    <ejs-pdfviewer id="pdfviewer"
+                   documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
+                   resourceUrl="https://cdn.syncfusion.com/ej2/23.2.6/dist/ej2-pdfviewer-lib"
+                   documentLoad="documentloaded"
+                   style="height:641px;">
+    </ejs-pdfviewer>
+</div>
+<script type="text/javascript">
+    function documentloaded(args) {
+        var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0];
+        if (Browser.isDevice && !pdfViewer.enableDesktopMode) {
+            pdfViewer.maxZoom = 200;
+            pdfViewer.minZoom = 10;
+        }
+        else {
+            pdfViewer.zoomMode = 'Default';
+        }
+    }
+</script>
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Index.cshtml.cs b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Index.cshtml.cs
new file mode 100644
index 0000000..1f24ca8
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Index.cshtml.cs	
@@ -0,0 +1,266 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Memory;
+using Syncfusion.EJ2.PdfViewer;
+using Newtonsoft.Json;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using System.Reflection;
+using System.Net;
+
+namespace PDFViewerSample.Pages
+{
+    [IgnoreAntiforgeryToken(Order = 1001)]
+    public class IndexModel : PageModel
+    {
+
+        private readonly Microsoft.AspNetCore.Hosting.IHostingEnvironment _hostingEnvironment;
+        private IMemoryCache _cache;
+
+        public IndexModel(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnvironment, IMemoryCache cache)
+        {
+            _hostingEnvironment = hostingEnvironment;
+            _cache = cache;
+        }
+
+        public IActionResult OnPostLoad([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            MemoryStream stream = new MemoryStream();
+            var jsonObject = JsonConverterstring(responseData);
+            object jsonResult = new object();
+            if (jsonObject != null && jsonObject.ContainsKey("document"))
+            {
+                if (bool.Parse(jsonObject["isFileName"]))
+                {
+                    string documentPath = GetDocumentPath(jsonObject["document"]);
+                    if (!string.IsNullOrEmpty(documentPath))
+                    {
+                        byte[] bytes = System.IO.File.ReadAllBytes(documentPath);
+                        stream = new MemoryStream(bytes);
+                    }
+                    else
+                    {
+                        string fileName = jsonObject["document"].Split(new string[] { "://" }, StringSplitOptions.None)[0];
+                        if (fileName == "http" || fileName == "https")
+                        {
+                            WebClient WebClient = new WebClient();
+                            byte[] pdfDoc = WebClient.DownloadData(jsonObject["document"]);
+                            stream = new MemoryStream(pdfDoc);
+                        }
+                        else
+                            return this.Content(jsonObject["document"] + " is not found");
+                    }
+                }
+                else
+                {
+                    byte[] bytes = Convert.FromBase64String(jsonObject["document"]);
+                    stream = new MemoryStream(bytes);
+                }
+            }
+            jsonResult = pdfviewer.Load(stream, jsonObject);
+            return Content(JsonConvert.SerializeObject(jsonResult));
+        }
+
+        public Dictionary<string, string> JsonConverterstring(jsonObjects results)
+        {
+            Dictionary<string, object> resultObjects = new Dictionary<string, object>();
+            resultObjects = results.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)
+                .ToDictionary(prop => prop.Name, prop => prop.GetValue(results, null));
+            var emptyObjects = (from kv in resultObjects
+                                where kv.Value != null
+                                select kv).ToDictionary(kv => kv.Key, kv => kv.Value);
+            Dictionary<string, string> jsonResult = emptyObjects.ToDictionary(k => k.Key, k => k.Value.ToString());
+            return jsonResult;
+        }
+
+        //Post action for processing the PDF documents.
+        public IActionResult OnPostRenderPdfPages([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            object jsonResult = pdfviewer.GetPage(jsonObject);
+            return Content(JsonConvert.SerializeObject(jsonResult));
+        }
+
+        //Post action for unloading and disposing the PDF document resources
+        public IActionResult OnPostUnload([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            pdfviewer.ClearCache(jsonObject);
+            return this.Content("Document cache is cleared");
+        }
+
+        //Post action for rendering the ThumbnailImages
+        public IActionResult OnPostRenderThumbnailImages([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            object result = pdfviewer.GetThumbnailImages(jsonObject);
+            return Content(JsonConvert.SerializeObject(result));
+        }
+
+        //Post action for processing the bookmarks from the PDF documents
+        public IActionResult OnPostBookmarks([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            object jsonResult = pdfviewer.GetBookmarks(jsonObject);
+            return Content(JsonConvert.SerializeObject(jsonResult));
+        }
+
+        //Post action for rendering the annotation comments
+        public IActionResult OnPostRenderAnnotationComments([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            object jsonResult = pdfviewer.GetAnnotationComments(jsonObject);
+            return Content(JsonConvert.SerializeObject(jsonResult));
+        }
+
+        //Post action for exporting the annotations
+        public IActionResult OnPostExportAnnotations([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            string jsonResult = pdfviewer.ExportAnnotation(jsonObject);
+            return Content(jsonResult);
+        }
+
+        //Post action for importing the annotations
+        public IActionResult OnPostImportAnnotations([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            string jsonResult = string.Empty;
+            object JsonResult;
+            if (jsonObject != null && jsonObject.ContainsKey("fileName"))
+            {
+                string documentPath = GetDocumentPath(jsonObject["fileName"]);
+                if (!string.IsNullOrEmpty(documentPath))
+                {
+                    jsonResult = System.IO.File.ReadAllText(documentPath);
+                }
+                else
+                {
+                    return this.Content(jsonObject["document"] + " is not found");
+                }
+            }
+            else
+            {
+                string extension = Path.GetExtension(jsonObject["importedData"]);
+                if (extension != ".xfdf")
+                {
+                    JsonResult = pdfviewer.ImportAnnotation(jsonObject);
+                    return Content(JsonConvert.SerializeObject(JsonResult));
+                }
+                else
+                {
+                    string documentPath = GetDocumentPath(jsonObject["importedData"]);
+                    if (!string.IsNullOrEmpty(documentPath))
+                    {
+                        byte[] bytes = System.IO.File.ReadAllBytes(documentPath);
+                        jsonObject["importedData"] = Convert.ToBase64String(bytes);
+                        JsonResult = pdfviewer.ImportAnnotation(jsonObject);
+                        return Content(JsonConvert.SerializeObject(JsonResult));
+                    }
+                    else
+                    {
+                        return this.Content(jsonObject["document"] + " is not found");
+                    }
+                }
+            }
+            return Content(jsonResult);
+        }
+
+        //Post action for downloading the PDF documents
+        public IActionResult OnPostDownload([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            string documentBase = pdfviewer.GetDocumentAsBase64(jsonObject);
+            return Content(documentBase);
+        }
+
+        //Post action for printing the PDF documents
+        public IActionResult OnPostPrintImages([FromBody] jsonObjects responseData)
+        {
+            PdfRenderer pdfviewer = new PdfRenderer(_cache);
+            var jsonObject = JsonConverterstring(responseData);
+            object pageImage = pdfviewer.GetPrintImage(jsonObject);
+            return Content(JsonConvert.SerializeObject(pageImage));
+        }
+
+        //Gets the path of the PDF document
+        private string GetDocumentPath(string document)
+        {
+            string documentPath = string.Empty;
+            if (!System.IO.File.Exists(document))
+            {
+                string basePath = _hostingEnvironment.WebRootPath;
+                string dataPath = string.Empty;
+                dataPath = basePath + "/";
+                if (System.IO.File.Exists(dataPath + (document)))
+                    documentPath = dataPath + document;
+            }
+            else
+            {
+                documentPath = document;
+            }
+            return documentPath;
+        }
+    }
+
+    public class jsonObjects
+    {
+        public string document { get; set; }
+        public string password { get; set; }
+        public string zoomFactor { get; set; }
+        public string isFileName { get; set; }
+        public string xCoordinate { get; set; }
+        public string yCoordinate { get; set; }
+        public string pageNumber { get; set; }
+        public string documentId { get; set; }
+        public string hashId { get; set; }
+        public string sizeX { get; set; }
+        public string sizeY { get; set; }
+        public string startPage { get; set; }
+        public string endPage { get; set; }
+        public string stampAnnotations { get; set; }
+        public string textMarkupAnnotations { get; set; }
+        public string stickyNotesAnnotation { get; set; }
+        public string shapeAnnotations { get; set; }
+        public string measureShapeAnnotations { get; set; }
+        public string action { get; set; }
+        public string pageStartIndex { get; set; }
+        public string pageEndIndex { get; set; }
+        public string fileName { get; set; }
+        public string elementId { get; set; }
+        public string pdfAnnotation { get; set; }
+        public string importPageList { get; set; }
+        public string uniqueId { get; set; }
+        public string data { get; set; }
+        public string viewPortWidth { get; set; }
+        public string viewPortHeight { get; set; }
+        public string tilecount { get; set; }
+        public bool isCompletePageSizeNotReceived { get; set; }
+        public string freeTextAnnotation { get; set; }
+        public string signatureData { get; set; }
+        public string fieldsData { get; set; }
+        public string FormDesigner { get; set; }
+        public string inkSignatureData { get; set; }
+        public bool hideEmptyDigitalSignatureFields { get; set; }
+        public bool showDigitalSignatureAppearance { get; set; }
+        public bool digitalSignaturePresent { get; set; }
+        public string tileXCount { get; set; }
+        public string tileYCount { get; set; }
+        public string digitalSignaturePageList { get; set; }
+        public string annotationCollection { get; set; }
+        public string annotationsPageList { get; set; }
+        public string formFieldsPageList { get; set; }
+        public bool isAnnotationsExist { get; set; }
+        public bool isFormFieldAnnotationsExist { get; set; }
+        public string documentLiveCount { get; set; }
+        public string annotationDataFormat { get; set; }
+        public string importedData { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Privacy.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Privacy.cshtml
new file mode 100644
index 0000000..46ba966
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Privacy.cshtml	
@@ -0,0 +1,8 @@
+@page
+@model PrivacyModel
+@{
+    ViewData["Title"] = "Privacy Policy";
+}
+<h1>@ViewData["Title"]</h1>
+
+<p>Use this page to detail your site's privacy policy.</p>
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Privacy.cshtml.cs b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Privacy.cshtml.cs
new file mode 100644
index 0000000..f9a85a1
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Privacy.cshtml.cs	
@@ -0,0 +1,19 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class PrivacyModel : PageModel
+    {
+        private readonly ILogger<PrivacyModel> _logger;
+
+        public PrivacyModel(ILogger<PrivacyModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_Layout.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_Layout.cshtml
new file mode 100644
index 0000000..624586c
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_Layout.cshtml	
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>@ViewData["Title"] - PDFViewerSample</title>
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+    <!-- Syncfusion ASP.NET Core controls styles -->
+    <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/25.1.35/fluent.css" />
+    <!-- Syncfusion ASP.NET Core controls scripts -->
+    <script src="https://cdn.syncfusion.com/ej2/25.1.35/dist/ej2.min.js"></script>
+</head>
+<body>
+    <header>
+        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+            <div class="container">
+                <a class="navbar-brand" asp-area="" asp-page="/Index">PDFViewerSample</a>
+                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+                        aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
+                    <ul class="navbar-nav flex-grow-1">
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </nav>
+    </header>
+    <div class="container">
+        <main role="main" class="pb-3">
+            @RenderBody()
+        </main>
+    </div>
+
+    <footer class="border-top footer text-muted">
+        <div class="container">
+            &copy; 2022 - PDFViewerSample - <a asp-area="" asp-page="/Privacy">Privacy</a>
+        </div>
+    </footer>
+
+    @await RenderSectionAsync("Scripts", required: false)
+    <!-- Syncfusion ASP.NET Core Script Manager -->
+    <ejs-scripts></ejs-scripts>
+</body>
+</html>
\ No newline at end of file
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_Layout.cshtml.css b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_Layout.cshtml.css
new file mode 100644
index 0000000..a72cbea
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_Layout.cshtml.css	
@@ -0,0 +1,48 @@
+/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
+for details on configuring this project to bundle and minify static web assets. */
+
+a.navbar-brand {
+  white-space: normal;
+  text-align: center;
+  word-break: break-all;
+}
+
+a {
+  color: #0077cc;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.border-top {
+  border-top: 1px solid #e5e5e5;
+}
+.border-bottom {
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.box-shadow {
+  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
+}
+
+button.accept-policy {
+  font-size: 1rem;
+  line-height: inherit;
+}
+
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  white-space: nowrap;
+  line-height: 60px;
+}
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_ValidationScriptsPartial.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_ValidationScriptsPartial.cshtml
new file mode 100644
index 0000000..5a16d80
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/Shared/_ValidationScriptsPartial.cshtml	
@@ -0,0 +1,2 @@
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
+<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/_ViewImports.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/_ViewImports.cshtml
new file mode 100644
index 0000000..51b8015
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/_ViewImports.cshtml	
@@ -0,0 +1,4 @@
+@using PDFViewerSample
+@namespace PDFViewerSample.Pages
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@addTagHelper *, Syncfusion.EJ2
\ No newline at end of file
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Pages/_ViewStart.cshtml b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/_ViewStart.cshtml
new file mode 100644
index 0000000..a5f1004
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Pages/_ViewStart.cshtml	
@@ -0,0 +1,3 @@
+@{
+    Layout = "_Layout";
+}
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Program.cs b/How to/Restrict Zoom Percentage on Mobile Devices/Program.cs
new file mode 100644
index 0000000..bc275e4
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Program.cs	
@@ -0,0 +1,25 @@
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+builder.Services.AddRazorPages();
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (!app.Environment.IsDevelopment())
+{
+    app.UseExceptionHandler("/Error");
+    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+    app.UseHsts();
+}
+
+app.UseHttpsRedirection();
+app.UseStaticFiles();
+
+app.UseRouting();
+
+app.UseAuthorization();
+
+app.MapRazorPages();
+
+app.Run();
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/Properties/launchSettings.json b/How to/Restrict Zoom Percentage on Mobile Devices/Properties/launchSettings.json
new file mode 100644
index 0000000..d52972e
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/Properties/launchSettings.json	
@@ -0,0 +1,28 @@
+{
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:38233",
+      "sslPort": 44357
+    }
+  },
+  "profiles": {
+    "PDFViewerSample": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "https://localhost:7173;http://localhost:5173",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/README.md b/How to/Restrict Zoom Percentage on Mobile Devices/README.md
new file mode 100644
index 0000000..25ccdee
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/README.md	
@@ -0,0 +1,26 @@
+# Create a simple PDF Viewer
+This example shows how to create a simple PDF Viewer application.
+
+## Project pre-requisites
+One of the the following .NET SDK is required to develop and run the Syncfusion UI controls for ASP.NET Core application.
+
+* NET 6.0 SDK
+* NET 5.0 SDK
+* NET Core SDK 3.1
+* NET Core SDK 2.0
+* NET 4.5 Framework
+
+If you are planning to use Visual Studio to develop ASP.NET Core Applications.
+
+.NET 6.0 requires Visual Studio 2022 17.0 or later.
+.NET 5.0 requires Visual Studio 2019 16.8 or later.
+.NET Core SDK 3.1 requires Visual Studio 2019 16.4 or later.
+.NET Core SDK 2.0 requires Visual Studio 2017 15.7 or later.
+.NET 4.5 Framework requires Visual Studio 2015 20.1 or later
+
+## Running the sample
+Execute the following commands to run the sample via command prompt window.
+
+* dotnet restore
+* dotnet run
+
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/appsettings.Development.json b/How to/Restrict Zoom Percentage on Mobile Devices/appsettings.Development.json
new file mode 100644
index 0000000..770d3e9
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/appsettings.Development.json	
@@ -0,0 +1,9 @@
+{
+  "DetailedErrors": true,
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/appsettings.json b/How to/Restrict Zoom Percentage on Mobile Devices/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/How to/Restrict Zoom Percentage on Mobile Devices/appsettings.json	
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}
diff --git a/How to/Restrict Zoom Percentage on Mobile Devices/wwwroot/favicon.ico b/How to/Restrict Zoom Percentage on Mobile Devices/wwwroot/favicon.ico
new file mode 100644
index 0000000..63e859b
Binary files /dev/null and b/How to/Restrict Zoom Percentage on Mobile Devices/wwwroot/favicon.ico differ
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample.sln b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample.sln
new file mode 100644
index 0000000..fcca1a3
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample.sln	
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.34607.79
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PDFViewerSample", "PDFViewerSample\PDFViewerSample.csproj", "{3936B843-A035-424E-BA4B-990436AC60BD}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3936B843-A035-424E-BA4B-990436AC60BD}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {31245B35-82FC-4C3B-A888-4730D0AD8EE0}
+	EndGlobalSection
+EndGlobal
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj
new file mode 100644
index 0000000..16876f5
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj	
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Syncfusion.EJ2.AspNet.Core" Version="24.2.8" />
+  </ItemGroup>
+
+</Project>
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml
new file mode 100644
index 0000000..6f92b95
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml	
@@ -0,0 +1,26 @@
+@page
+@model ErrorModel
+@{
+    ViewData["Title"] = "Error";
+}
+
+<h1 class="text-danger">Error.</h1>
+<h2 class="text-danger">An error occurred while processing your request.</h2>
+
+@if (Model.ShowRequestId)
+{
+    <p>
+        <strong>Request ID:</strong> <code>@Model.RequestId</code>
+    </p>
+}
+
+<h3>Development Mode</h3>
+<p>
+    Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
+</p>
+<p>
+    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+    It can result in displaying sensitive information from exceptions to end users.
+    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+    and restarting the app.
+</p>
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs
new file mode 100644
index 0000000..c008cae
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs	
@@ -0,0 +1,28 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using System.Diagnostics;
+
+namespace PDFViewerSample.Pages
+{
+    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+    [IgnoreAntiforgeryToken]
+    public class ErrorModel : PageModel
+    {
+        public string? RequestId { get; set; }
+
+        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+
+        private readonly ILogger<ErrorModel> _logger;
+
+        public ErrorModel(ILogger<ErrorModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+            RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
+        }
+    }
+
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml
new file mode 100644
index 0000000..75d2076
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml	
@@ -0,0 +1,19 @@
+@page "{handler?}"
+@model IndexModel
+@{
+    ViewData["Title"] = "Home page";
+}
+
+<div class="text-center">
+    <ejs-pdfviewer id="pdfviewer" style="height:600px" documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" resourceUrl="https://cdn.syncfusion.com/ej2/24.1.41/dist/ej2-pdfviewer-lib" signatureSelect="signatureSelect" signatureUnselect="signatureUnselect">
+    </ejs-pdfviewer>
+</div>
+
+<script type="text/javascript">
+    function signatureSelect(args) { 
+        console.log('Signature selected:', args);
+    }
+    function signatureUnselect(args) {
+        console.log('Signature selected:', args);
+    };
+</script>
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs
new file mode 100644
index 0000000..ef356dd
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs	
@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class IndexModel : PageModel
+    {
+        private readonly ILogger<IndexModel> _logger;
+
+        public IndexModel(ILogger<IndexModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+
+        }
+    }
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml
new file mode 100644
index 0000000..46ba966
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml	
@@ -0,0 +1,8 @@
+@page
+@model PrivacyModel
+@{
+    ViewData["Title"] = "Privacy Policy";
+}
+<h1>@ViewData["Title"]</h1>
+
+<p>Use this page to detail your site's privacy policy.</p>
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs
new file mode 100644
index 0000000..cd60641
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Privacy.cshtml.cs	
@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace PDFViewerSample.Pages
+{
+    public class PrivacyModel : PageModel
+    {
+        private readonly ILogger<PrivacyModel> _logger;
+
+        public PrivacyModel(ILogger<PrivacyModel> logger)
+        {
+            _logger = logger;
+        }
+
+        public void OnGet()
+        {
+        }
+    }
+
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml
new file mode 100644
index 0000000..b5648cd
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml	
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>@ViewData["Title"] - PDFViewerSample</title>
+    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
+    <link rel="stylesheet" href="~/PDFViewerSample.styles.css" asp-append-version="true" />
+    <!-- Syncfusion ASP.NET Core controls styles -->
+    <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/24.2.3/fluent.css" />
+    <!-- Syncfusion ASP.NET Core controls scripts -->
+    <script src="https://cdn.syncfusion.com/ej2/24.2.3/dist/ej2.min.js"></script>
+</head>
+<body>
+    <header>
+        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+            <div class="container">
+                <a class="navbar-brand" asp-area="" asp-page="/Index">PDFViewerSample</a>
+                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+                        aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
+                    <ul class="navbar-nav flex-grow-1">
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </nav>
+    </header>
+    <div class="container">
+        <main role="main" class="pb-3">
+            @RenderBody()
+        </main>
+    </div>
+
+    <footer class="border-top footer text-muted">
+        <div class="container">
+            &copy; 2024 - PDFViewerSample - <a asp-area="" asp-page="/Privacy">Privacy</a>
+        </div>
+    </footer>
+
+    <script src="~/lib/jquery/dist/jquery.min.js"></script>
+    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+    <script src="~/js/site.js" asp-append-version="true"></script>
+
+    @await RenderSectionAsync("Scripts", required: false)
+    <!-- Syncfusion ASP.NET Core Script Manager -->
+    <ejs-scripts></ejs-scripts>
+</body>
+</html>
\ No newline at end of file
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css
new file mode 100644
index 0000000..c187c02
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_Layout.cshtml.css	
@@ -0,0 +1,48 @@
+/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
+for details on configuring this project to bundle and minify static web assets. */
+
+a.navbar-brand {
+  white-space: normal;
+  text-align: center;
+  word-break: break-all;
+}
+
+a {
+  color: #0077cc;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.border-top {
+  border-top: 1px solid #e5e5e5;
+}
+.border-bottom {
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.box-shadow {
+  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
+}
+
+button.accept-policy {
+  font-size: 1rem;
+  line-height: inherit;
+}
+
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  white-space: nowrap;
+  line-height: 60px;
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml
new file mode 100644
index 0000000..5a16d80
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/Shared/_ValidationScriptsPartial.cshtml	
@@ -0,0 +1,2 @@
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
+<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml
new file mode 100644
index 0000000..51b8015
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/_ViewImports.cshtml	
@@ -0,0 +1,4 @@
+@using PDFViewerSample
+@namespace PDFViewerSample.Pages
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@addTagHelper *, Syncfusion.EJ2
\ No newline at end of file
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml
new file mode 100644
index 0000000..a5f1004
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Pages/_ViewStart.cshtml	
@@ -0,0 +1,3 @@
+@{
+    Layout = "_Layout";
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Program.cs b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Program.cs
new file mode 100644
index 0000000..bc275e4
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Program.cs	
@@ -0,0 +1,25 @@
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+builder.Services.AddRazorPages();
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (!app.Environment.IsDevelopment())
+{
+    app.UseExceptionHandler("/Error");
+    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+    app.UseHsts();
+}
+
+app.UseHttpsRedirection();
+app.UseStaticFiles();
+
+app.UseRouting();
+
+app.UseAuthorization();
+
+app.MapRazorPages();
+
+app.Run();
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json
new file mode 100644
index 0000000..dbe83ce
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/Properties/launchSettings.json	
@@ -0,0 +1,38 @@
+{
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:12333",
+      "sslPort": 44366
+    }
+  },
+  "profiles": {
+    "http": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "http://localhost:5059",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "https": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "https://localhost:7232;http://localhost:5059",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/appsettings.Development.json b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/appsettings.Development.json
new file mode 100644
index 0000000..770d3e9
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/appsettings.Development.json	
@@ -0,0 +1,9 @@
+{
+  "DetailedErrors": true,
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/appsettings.json b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/appsettings.json	
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}
diff --git a/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico
new file mode 100644
index 0000000..63e859b
Binary files /dev/null and b/How to/selectSignature and unSelectSignature event/PDFViewerSample/PDFViewerSample/wwwroot/favicon.ico differ