From 8c42105f58b37e95d5b8b876181bc1d31f10a89d Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 11 Jun 2026 15:33:22 +0200 Subject: [PATCH] Add PDF viewer with drag-and-drop file upload support Added a new Razor page `EnvelopeReceiverPage_DxPdfViewer.razor` with a route `/envelope/DxPdfViewer`. Integrated DevExpress components, including `DxPdfViewer` for displaying PDF documents and `DxFileInput` for drag-and-drop file uploads. Styled the drag-and-drop zone with custom CSS. Initialized the viewer with a default embedded PDF file and implemented logic to handle file uploads dynamically. --- .../EnvelopeReceiverPage_DxPdfViewer.razor | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxPdfViewer.razor diff --git a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxPdfViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxPdfViewer.razor new file mode 100644 index 00000000..df7e4bbf --- /dev/null +++ b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxPdfViewer.razor @@ -0,0 +1,81 @@ +@page "/envelope/DxPdfViewer" +@using System.IO +@using DevExpress.Blazor +@using System.Reflection + + + + + + +
+ + Drag and Drop File Hereor + +
+ + + + +@code { + readonly List ALLOWED_FILE_TYPES = new List { ".pdf" }; + DxFileInput fileInput; + byte[] DocumentContent { get; set; } + protected override void OnInitialized() + { + Assembly assembly = Assembly.GetExecutingAssembly(); + Stream stream = assembly.GetManifestResourceStream("EnvelopeGenerator.ReceiverUI.Resources.Invoice.pdf"); + if (stream != null) + { + using (stream) + using (var binaryReader = new BinaryReader(stream)) + DocumentContent = binaryReader.ReadBytes((int)stream.Length); + } + } + protected async Task OnFilesUploading(FilesUploadingEventArgs args) + { + using (MemoryStream stream = new MemoryStream()) + { + IFileInputSelectedFile file = args.Files[0]; + await file.OpenReadStream(file.Size).CopyToAsync(stream); + DocumentContent = stream.ToArray(); + await InvokeAsync(StateHasChanged); + } + } +} \ No newline at end of file