From 2c9c5b8957ab8996cee84fed6675a5eea0e2889f Mon Sep 17 00:00:00 2001 From: Vincentsf4657 <vincentkumar.l@syncfusion.com> Date: Tue, 17 Sep 2024 17:05:57 +0530 Subject: [PATCH 1/4] 906190: UGDocumentation --- .../PDFViewerSample.csproj | 14 + .../PDFViewerSample.sln | 25 ++ .../Pages/Error.cshtml | 26 ++ .../Pages/Error.cshtml.cs | 27 ++ .../Pages/Index.cshtml | 68 +++++ .../Pages/Index.cshtml.cs | 266 ++++++++++++++++++ .../Pages/Privacy.cshtml | 8 + .../Pages/Privacy.cshtml.cs | 19 ++ .../Pages/Shared/_Layout.cshtml | 51 ++++ .../Pages/Shared/_Layout.cshtml.css | 48 ++++ .../Shared/_ValidationScriptsPartial.cshtml | 2 + .../Pages/_ViewImports.cshtml | 4 + .../Pages/_ViewStart.cshtml | 3 + How to/Customize print Quality/Program.cs | 25 ++ .../Properties/launchSettings.json | 28 ++ How to/Customize print Quality/README.md | 26 ++ .../appsettings.Development.json | 9 + .../Customize print Quality/appsettings.json | 9 + .../wwwroot/favicon.ico | Bin 0 -> 5430 bytes 19 files changed, 658 insertions(+) create mode 100644 How to/Customize print Quality/PDFViewerSample.csproj create mode 100644 How to/Customize print Quality/PDFViewerSample.sln create mode 100644 How to/Customize print Quality/Pages/Error.cshtml create mode 100644 How to/Customize print Quality/Pages/Error.cshtml.cs create mode 100644 How to/Customize print Quality/Pages/Index.cshtml create mode 100644 How to/Customize print Quality/Pages/Index.cshtml.cs create mode 100644 How to/Customize print Quality/Pages/Privacy.cshtml create mode 100644 How to/Customize print Quality/Pages/Privacy.cshtml.cs create mode 100644 How to/Customize print Quality/Pages/Shared/_Layout.cshtml create mode 100644 How to/Customize print Quality/Pages/Shared/_Layout.cshtml.css create mode 100644 How to/Customize print Quality/Pages/Shared/_ValidationScriptsPartial.cshtml create mode 100644 How to/Customize print Quality/Pages/_ViewImports.cshtml create mode 100644 How to/Customize print Quality/Pages/_ViewStart.cshtml create mode 100644 How to/Customize print Quality/Program.cs create mode 100644 How to/Customize print Quality/Properties/launchSettings.json create mode 100644 How to/Customize print Quality/README.md create mode 100644 How to/Customize print Quality/appsettings.Development.json create mode 100644 How to/Customize print Quality/appsettings.json create mode 100644 How to/Customize print Quality/wwwroot/favicon.ico diff --git a/How to/Customize print Quality/PDFViewerSample.csproj b/How to/Customize print Quality/PDFViewerSample.csproj new file mode 100644 index 0000000..dcbd110 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/PDFViewerSample.sln b/How to/Customize print Quality/PDFViewerSample.sln new file mode 100644 index 0000000..67ddc5d --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Error.cshtml b/How to/Customize print Quality/Pages/Error.cshtml new file mode 100644 index 0000000..6f92b95 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Error.cshtml.cs b/How to/Customize print Quality/Pages/Error.cshtml.cs new file mode 100644 index 0000000..0a23fb0 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Index.cshtml b/How to/Customize print Quality/Pages/Index.cshtml new file mode 100644 index 0000000..9820d79 --- /dev/null +++ b/How to/Customize print Quality/Pages/Index.cshtml @@ -0,0 +1,68 @@ +@page "{handler?}" +@model IndexModel +@{ + ViewData["Title"] = "Home page"; +} + +<div> + <ejs-pdfviewer id="pdfviewer" + style="width:1350px;height:100%" + documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" + resourceUrl='https://cdn.syncfusion.com/ej2/24.1.41/dist/ej2-pdfviewer-lib' + toolbarClick="toolbarClick"> + </ejs-pdfviewer> +</div> + +<script type="text/javascript"> + window.onload = function () { + var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0]; + var toolItem1 = { + prefixIcon: 'e-icons e-paste', + id: 'print', + tooltipText: 'Custom toolbar item', + align: 'left' + }; + var toolItem2 = { + id: 'download', + text: 'Save', + tooltipText: 'Custom toolbar item', + align: 'right' + }; + var LanguageList = ['Typescript', 'Javascript', 'Angular', 'C#', 'C', 'Python']; + var toolItem3 = { + type: 'Input', + tooltipText: 'Language List', + cssClass: 'percentage', + align: 'Left', + id: 'dropdown', + template: new ej.dropdowns.ComboBox({ width: 100, value: 'TypeScript', dataSource: LanguageList, popupWidth: 85, showClearButton: false, readonly: false }) + }; + var toolItem4 = { + type: 'Input', + tooltipText: 'Text', + align: 'Right', + cssClass: 'find', + id: 'textbox', + template: new ej.inputs.TextBox({ width: 125, placeholder: 'Type Here', created: onCreate }) + }; + pdfViewer.toolbarSettings = { + showTooltip: true, + toolbarItems: [toolItem1, toolItem2, 'OpenOption', 'PageNavigationTool', 'MagnificationTool', toolItem3, 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption', 'UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', toolItem4, 'CommentTool', 'SubmitForm'] + }; + function onCreate() { + this.addIcon('prepend', 'e-icons e-search'); + } + } + + // Define the toolbarClick event handler + function toolbarClick(args) { + var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0]; + + if (args.item && args.item.id === 'print') { + pdfViewer.printModule.print(); + } else if (args.item && args.item.id === 'download') { + pdfViewer.download(); + } + } + +</script> \ No newline at end of file diff --git a/How to/Customize print Quality/Pages/Index.cshtml.cs b/How to/Customize print Quality/Pages/Index.cshtml.cs new file mode 100644 index 0000000..1f24ca8 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Privacy.cshtml b/How to/Customize print Quality/Pages/Privacy.cshtml new file mode 100644 index 0000000..46ba966 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Privacy.cshtml.cs b/How to/Customize print Quality/Pages/Privacy.cshtml.cs new file mode 100644 index 0000000..f9a85a1 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Shared/_Layout.cshtml b/How to/Customize print Quality/Pages/Shared/_Layout.cshtml new file mode 100644 index 0000000..b1019e5 --- /dev/null +++ b/How to/Customize print Quality/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/24.1.41/fluent.css" /> + <!-- Syncfusion ASP.NET Core controls scripts --> + <script src="https://cdn.syncfusion.com/ej2/24.1.41/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"> + © 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/Customize print Quality/Pages/Shared/_Layout.cshtml.css b/How to/Customize print Quality/Pages/Shared/_Layout.cshtml.css new file mode 100644 index 0000000..a72cbea --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/Shared/_ValidationScriptsPartial.cshtml b/How to/Customize print Quality/Pages/Shared/_ValidationScriptsPartial.cshtml new file mode 100644 index 0000000..5a16d80 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/_ViewImports.cshtml b/How to/Customize print Quality/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..51b8015 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Pages/_ViewStart.cshtml b/How to/Customize print Quality/Pages/_ViewStart.cshtml new file mode 100644 index 0000000..a5f1004 --- /dev/null +++ b/How to/Customize print Quality/Pages/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/How to/Customize print Quality/Program.cs b/How to/Customize print Quality/Program.cs new file mode 100644 index 0000000..bc275e4 --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/Properties/launchSettings.json b/How to/Customize print Quality/Properties/launchSettings.json new file mode 100644 index 0000000..d52972e --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/README.md b/How to/Customize print Quality/README.md new file mode 100644 index 0000000..25ccdee --- /dev/null +++ b/How to/Customize print Quality/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/Customize print Quality/appsettings.Development.json b/How to/Customize print Quality/appsettings.Development.json new file mode 100644 index 0000000..770d3e9 --- /dev/null +++ b/How to/Customize print Quality/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/How to/Customize print Quality/appsettings.json b/How to/Customize print Quality/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/How to/Customize print Quality/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/How to/Customize print Quality/wwwroot/favicon.ico b/How to/Customize print Quality/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..63e859b476eff5055e0e557aaa151ca8223fbeef GIT binary patch literal 5430 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 Y_O6}xTrQ{Lm(%HNn!7U|JnrZJ0OMGa@Bjb+ literal 0 HcmV?d00001 From 92c288f3ea4653aac0cc17969e886dea9a8b7a20 Mon Sep 17 00:00:00 2001 From: Vincentsf4657 <vincentkumar.l@syncfusion.com> Date: Fri, 20 Sep 2024 16:46:08 +0530 Subject: [PATCH 2/4] 906190: UGDocumentation --- .../Pages/Index.cshtml | 49 ++----------------- .../Pages/Shared/_Layout.cshtml | 4 +- 2 files changed, 7 insertions(+), 46 deletions(-) diff --git a/How to/Customize print Quality/Pages/Index.cshtml b/How to/Customize print Quality/Pages/Index.cshtml index 9820d79..01f7c4b 100644 --- a/How to/Customize print Quality/Pages/Index.cshtml +++ b/How to/Customize print Quality/Pages/Index.cshtml @@ -6,59 +6,20 @@ <div> <ejs-pdfviewer id="pdfviewer" - style="width:1350px;height:100%" + style="width:100%;height:100%" documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" - resourceUrl='https://cdn.syncfusion.com/ej2/24.1.41/dist/ej2-pdfviewer-lib' - toolbarClick="toolbarClick"> + resourceUrl='https://cdn.syncfusion.com/ej2/27.1.48/dist/ej2-pdfviewer-lib' + toolbarClick="toolbarClick" + printScaleFactor=0.5> </ejs-pdfviewer> </div> <script type="text/javascript"> - window.onload = function () { - var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0]; - var toolItem1 = { - prefixIcon: 'e-icons e-paste', - id: 'print', - tooltipText: 'Custom toolbar item', - align: 'left' - }; - var toolItem2 = { - id: 'download', - text: 'Save', - tooltipText: 'Custom toolbar item', - align: 'right' - }; - var LanguageList = ['Typescript', 'Javascript', 'Angular', 'C#', 'C', 'Python']; - var toolItem3 = { - type: 'Input', - tooltipText: 'Language List', - cssClass: 'percentage', - align: 'Left', - id: 'dropdown', - template: new ej.dropdowns.ComboBox({ width: 100, value: 'TypeScript', dataSource: LanguageList, popupWidth: 85, showClearButton: false, readonly: false }) - }; - var toolItem4 = { - type: 'Input', - tooltipText: 'Text', - align: 'Right', - cssClass: 'find', - id: 'textbox', - template: new ej.inputs.TextBox({ width: 125, placeholder: 'Type Here', created: onCreate }) - }; - pdfViewer.toolbarSettings = { - showTooltip: true, - toolbarItems: [toolItem1, toolItem2, 'OpenOption', 'PageNavigationTool', 'MagnificationTool', toolItem3, 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption', 'UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', toolItem4, 'CommentTool', 'SubmitForm'] - }; - function onCreate() { - this.addIcon('prepend', 'e-icons e-search'); - } - } - // Define the toolbarClick event handler function toolbarClick(args) { var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0]; - if (args.item && args.item.id === 'print') { + pdfViewer.printScaleFactor=0.5; pdfViewer.printModule.print(); } else if (args.item && args.item.id === 'download') { pdfViewer.download(); diff --git a/How to/Customize print Quality/Pages/Shared/_Layout.cshtml b/How to/Customize print Quality/Pages/Shared/_Layout.cshtml index b1019e5..bb39335 100644 --- a/How to/Customize print Quality/Pages/Shared/_Layout.cshtml +++ b/How to/Customize print Quality/Pages/Shared/_Layout.cshtml @@ -6,9 +6,9 @@ <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/24.1.41/fluent.css" /> + <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/27.1.48/fluent.css" /> <!-- Syncfusion ASP.NET Core controls scripts --> - <script src="https://cdn.syncfusion.com/ej2/24.1.41/dist/ej2.min.js"></script> + <script src="https://cdn.syncfusion.com/ej2/27.1.48/dist/ej2.min.js"></script> </head> <body> <header> From 9ab6364a24ebeeae8d5397250db6f4568ac10970 Mon Sep 17 00:00:00 2001 From: Vincentsf4657 <vincentkumar.l@syncfusion.com> Date: Fri, 27 Sep 2024 16:00:53 +0530 Subject: [PATCH 3/4] 906190: UGDocumentation --- .../Pages/Index.cshtml.cs | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/How to/Customize print Quality/Pages/Index.cshtml.cs b/How to/Customize print Quality/Pages/Index.cshtml.cs index 1f24ca8..78b19a3 100644 --- a/How to/Customize print Quality/Pages/Index.cshtml.cs +++ b/How to/Customize print Quality/Pages/Index.cshtml.cs @@ -81,6 +81,63 @@ public IActionResult OnPostRenderPdfPages([FromBody] jsonObjects responseData) return Content(JsonConvert.SerializeObject(jsonResult)); } + public IActionResult RenderPdfTexts([FromBody] Dictionary<string, string> jsonObject) + { + //Initialize the PDF Viewer object with memory cache object + PdfRenderer pdfviewer = new PdfRenderer(_cache); + object jsonResult = pdfviewer.GetDocumentText(jsonObject); + return Content(JsonConvert.SerializeObject(jsonResult)); + } + + public IActionResult ValidatePassword([FromBody] Dictionary<string, string> jsonObject) + { + PdfRenderer pdfviewer = new PdfRenderer(_cache); + MemoryStream stream = new MemoryStream(); + 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); + } + } + string password = null; + if (jsonObject.ContainsKey("password")) + { + password = jsonObject["password"]; + } + var result = pdfviewer.Load(stream, password); + + return Content(JsonConvert.SerializeObject(result)); + } + + //Post action for unloading and disposing the PDF document resources public IActionResult OnPostUnload([FromBody] jsonObjects responseData) { From eef4e087a3bb187f38fdd73fb9a14637184f919e Mon Sep 17 00:00:00 2001 From: Vincentsf4657 <vincentkumar.l@syncfusion.com> Date: Fri, 27 Sep 2024 18:57:41 +0530 Subject: [PATCH 4/4] 906190: UGDocumentation --- .../Pages/Index.cshtml.cs | 132 ++++++------------ 1 file changed, 46 insertions(+), 86 deletions(-) diff --git a/How to/Customize print Quality/Pages/Index.cshtml.cs b/How to/Customize print Quality/Pages/Index.cshtml.cs index 78b19a3..c10de45 100644 --- a/How to/Customize print Quality/Pages/Index.cshtml.cs +++ b/How to/Customize print Quality/Pages/Index.cshtml.cs @@ -21,11 +21,14 @@ public IndexModel(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnviro _cache = cache; } - public IActionResult OnPostLoad([FromBody] jsonObjects responseData) + [HttpPost("Load")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/Load")] + //Post action for Loading the PDF documents + public IActionResult Load([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); MemoryStream stream = new MemoryStream(); - var jsonObject = JsonConverterstring(responseData); object jsonResult = new object(); if (jsonObject != null && jsonObject.ContainsKey("document")) { @@ -60,23 +63,14 @@ public IActionResult OnPostLoad([FromBody] jsonObjects responseData) 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; - } - + [AcceptVerbs("Post")] + [HttpPost("RenderPdfPages")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/RenderPdfPages")] //Post action for processing the PDF documents. - public IActionResult OnPostRenderPdfPages([FromBody] jsonObjects responseData) + public IActionResult OnPostRenderPdfPages([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); object jsonResult = pdfviewer.GetPage(jsonObject); return Content(JsonConvert.SerializeObject(jsonResult)); } @@ -137,57 +131,74 @@ public IActionResult ValidatePassword([FromBody] Dictionary<string, string> json return Content(JsonConvert.SerializeObject(result)); } - + [AcceptVerbs("Post")] + [HttpPost("Unload")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/Unload")] //Post action for unloading and disposing the PDF document resources - public IActionResult OnPostUnload([FromBody] jsonObjects responseData) + public IActionResult OnPostUnload([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); pdfviewer.ClearCache(jsonObject); return this.Content("Document cache is cleared"); } + [AcceptVerbs("Post")] + [HttpPost("RenderThumbnailImages")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/RenderThumbnailImages")] //Post action for rendering the ThumbnailImages - public IActionResult OnPostRenderThumbnailImages([FromBody] jsonObjects responseData) + public IActionResult OnPostRenderThumbnailImages([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); object result = pdfviewer.GetThumbnailImages(jsonObject); return Content(JsonConvert.SerializeObject(result)); } + [AcceptVerbs("Post")] + [HttpPost("Bookmarks")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/Bookmarks")] //Post action for processing the bookmarks from the PDF documents - public IActionResult OnPostBookmarks([FromBody] jsonObjects responseData) + public IActionResult OnPostBookmarks([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); object jsonResult = pdfviewer.GetBookmarks(jsonObject); return Content(JsonConvert.SerializeObject(jsonResult)); } + [AcceptVerbs("Post")] + [HttpPost("RenderAnnotationComments")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/RenderAnnotationComments")] //Post action for rendering the annotation comments - public IActionResult OnPostRenderAnnotationComments([FromBody] jsonObjects responseData) + public IActionResult OnPostRenderAnnotationComments([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); object jsonResult = pdfviewer.GetAnnotationComments(jsonObject); return Content(JsonConvert.SerializeObject(jsonResult)); } + [AcceptVerbs("Post")] + [HttpPost("ExportAnnotations")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/ExportAnnotations")] //Post action for exporting the annotations - public IActionResult OnPostExportAnnotations([FromBody] jsonObjects responseData) + public IActionResult OnPostExportAnnotations([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); string jsonResult = pdfviewer.ExportAnnotation(jsonObject); return Content(jsonResult); } + [AcceptVerbs("Post")] + [HttpPost("ImportAnnotations")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/ImportAnnotations")] //Post action for importing the annotations - public IActionResult OnPostImportAnnotations([FromBody] jsonObjects responseData) + public IActionResult OnPostImportAnnotations([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); string jsonResult = string.Empty; object JsonResult; if (jsonObject != null && jsonObject.ContainsKey("fileName")) @@ -229,20 +240,22 @@ public IActionResult OnPostImportAnnotations([FromBody] jsonObjects responseData return Content(jsonResult); } + + [HttpPost("Download")] + [Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] + [Route("[controller]/Download")] //Post action for downloading the PDF documents - public IActionResult OnPostDownload([FromBody] jsonObjects responseData) + public IActionResult OnPostDownload([FromBody] Dictionary<string, string> jsonObject) { 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) + public IActionResult OnPostPrintImages([FromBody] Dictionary<string, string> jsonObject) { PdfRenderer pdfviewer = new PdfRenderer(_cache); - var jsonObject = JsonConverterstring(responseData); object pageImage = pdfviewer.GetPrintImage(jsonObject); return Content(JsonConvert.SerializeObject(pageImage)); } @@ -267,57 +280,4 @@ private string GetDocumentPath(string document) } } - 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