-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #39 from SyncfusionExamples/EJ2-enableLocalStorage
927839: Sample on How to Enable Local Storage
- Loading branch information
Showing
19 changed files
with
578 additions
and
0 deletions.
There are no files selected for viewing
25 changes: 25 additions & 0 deletions
25
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample.sln
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
14 changes: 14 additions & 0 deletions
14
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<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="*" /> | ||
<PackageReference Include="Syncfusion.EJ2.PdfViewer.AspNet.Core" Version="*" /> | ||
</ItemGroup> | ||
|
||
</Project> |
9 changes: 9 additions & 0 deletions
9
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample/PDFViewerSample.csproj.user
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<PropertyGroup> | ||
<ActiveDebugProfile>IIS Express</ActiveDebugProfile> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> | ||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor> | ||
</PropertyGroup> | ||
</Project> |
26 changes: 26 additions & 0 deletions
26
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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> |
28 changes: 28 additions & 0 deletions
28
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample/Pages/Error.cshtml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
} | ||
|
||
} |
14 changes: 14 additions & 0 deletions
14
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
@page "{handler?}" | ||
@model IndexModel | ||
@{ | ||
ViewData["Title"] = "Home page"; | ||
} | ||
|
||
<div class="text-center"> | ||
<ejs-pdfviewer id="pdfviewer" style="height:600px" resourceUrl="https://cdn.syncfusion.com/ej2/28.1.33/dist/ej2-pdfviewer-lib" documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" enableLocalStorage="true"> | ||
</ejs-pdfviewer> | ||
</div> | ||
|
||
<script type="text/javascript"> | ||
</script> |
266 changes: 266 additions & 0 deletions
266
How to/Enable Local Storage/PDFViewerSample/PDFViewerSample/Pages/Index.cshtml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; } | ||
} | ||
} |
Oops, something went wrong.