From 2b30652c02f2a1727f5c29884d0acb868b4b9d8f Mon Sep 17 00:00:00 2001 From: "pranoove.karnan@syncfusion.com" Date: Tue, 3 Feb 2026 13:14:26 +0530 Subject: [PATCH 1/2] 1004829: Blazor UG Update --- Diagram/Server/Pages/Export/Export.razor | 18 ++--- .../Pages/Export/ExportClipBounds.razor | 22 +++--- .../Server/Pages/Export/ExportMargin.razor | 20 +++--- .../Server/Pages/Export/ExportOption.razor | 12 ++-- .../Pages/Export/ExportOrientation.razor | 26 +++---- .../Server/Pages/Export/ExportRegion.razor | 20 +++--- Diagram/Server/Pages/Export/ExportToPDF.razor | 72 +++++++++++++++++++ .../Server/Pages/Export/ExportWithPage.razor | 24 +++---- .../Pages/Export/ExportWithPageSize.razor | 16 ++--- Diagram/Wasm/Pages/Export/Export.razor | 18 ++--- .../Wasm/Pages/Export/ExportClipBounds.razor | 22 +++--- Diagram/Wasm/Pages/Export/ExportMargin.razor | 20 +++--- Diagram/Wasm/Pages/Export/ExportOption.razor | 12 ++-- .../Wasm/Pages/Export/ExportOrientation.razor | 26 +++---- Diagram/Wasm/Pages/Export/ExportRegion.razor | 20 +++--- Diagram/Wasm/Pages/Export/ExportToPDF.razor | 72 +++++++++++++++++++ .../Wasm/Pages/Export/ExportWithPage.razor | 24 +++---- .../Pages/Export/ExportWithPageSize.razor | 16 ++--- 18 files changed, 302 insertions(+), 158 deletions(-) create mode 100644 Diagram/Server/Pages/Export/ExportToPDF.razor create mode 100644 Diagram/Wasm/Pages/Export/ExportToPDF.razor diff --git a/Diagram/Server/Pages/Export/Export.razor b/Diagram/Server/Pages/Export/Export.razor index d77c2985..5f2e8712 100644 --- a/Diagram/Server/Pages/Export/Export.razor +++ b/Diagram/Server/Pages/Export/Export.razor @@ -3,24 +3,24 @@ @using Syncfusion.Blazor.Buttons - - + + @code { - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; //To export the diagram as base64 string. - private async Task ExportBase64() + private async Task ExportBase64Async() { - DiagramExportSettings export = new DiagramExportSettings(); - string[] base64 = await diagram.ExportAsync(DiagramExportFormat.PNG, export); + DiagramExportSettings _export = new DiagramExportSettings(); + string[] _base64 = await _diagram.ExportAsync(DiagramExportFormat.PNG, _export); } //To export the diagram as png. - private async Task ExportPng() + private async Task ExportPngAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - await diagram.ExportAsync("diagram", DiagramExportFormat.PNG, export); + DiagramExportSettings _export = new DiagramExportSettings(); + await _diagram.ExportAsync("diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportClipBounds.razor b/Diagram/Server/Pages/Export/ExportClipBounds.razor index 336f3153..ade64de6 100644 --- a/Diagram/Server/Pages/Export/ExportClipBounds.razor +++ b/Diagram/Server/Pages/Export/ExportClipBounds.razor @@ -2,24 +2,24 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; - export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + _export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; //To export the diagram - await diagram.ExportAsync("diagram",DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("diagram",DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportMargin.razor b/Diagram/Server/Pages/Export/ExportMargin.razor index 79e694d8..6178fe48 100644 --- a/Diagram/Server/Pages/Export/ExportMargin.razor +++ b/Diagram/Server/Pages/Export/ExportMargin.razor @@ -2,24 +2,24 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; //To export the diagram - await diagram.ExportAsync("diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportOption.razor b/Diagram/Server/Pages/Export/ExportOption.razor index 32b1ceb0..e6816fa9 100644 --- a/Diagram/Server/Pages/Export/ExportOption.razor +++ b/Diagram/Server/Pages/Export/ExportOption.razor @@ -2,19 +2,19 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); + DiagramExportSettings _export = new DiagramExportSettings(); //To export the diagram - await diagram.ExportAsync("Diagram", DiagramExportFormat.SVG, export); + await _diagram.ExportAsync("Diagram", DiagramExportFormat.SVG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportOrientation.razor b/Diagram/Server/Pages/Export/ExportOrientation.razor index 15f0ebf3..6983d7b8 100644 --- a/Diagram/Server/Pages/Export/ExportOrientation.razor +++ b/Diagram/Server/Pages/Export/ExportOrientation.razor @@ -2,26 +2,26 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; //To export the diagram in single page. - export.FitToPage = true; - export.Orientation = PageOrientation.Landscape; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; - export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; + _export.FitToPage = true; + _export.Orientation = PageOrientation.Landscape; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + _export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; //To export the diagram - await diagram.ExportAsync("diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportRegion.razor b/Diagram/Server/Pages/Export/ExportRegion.razor index a57f3513..a4b00349 100644 --- a/Diagram/Server/Pages/Export/ExportRegion.razor +++ b/Diagram/Server/Pages/Export/ExportRegion.razor @@ -3,24 +3,24 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; //To export the diagram - await diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportToPDF.razor b/Diagram/Server/Pages/Export/ExportToPDF.razor new file mode 100644 index 00000000..ad2a42b6 --- /dev/null +++ b/Diagram/Server/Pages/Export/ExportToPDF.razor @@ -0,0 +1,72 @@ +@page "/Export" + +@using Syncfusion.PdfExport; +@using Syncfusion.Blazor.Diagram +@using Syncfusion.Blazor.Buttons +@inject IJSRuntime JS; + + + + + +@code +{ + //Reference the diagram + SfDiagramComponent _diagram; + + private async void ExportPDFAsync() + { + DiagramExportSettings _print = new DiagramExportSettings(); + _print.Region = DiagramPrintExportRegion.PageSettings; + _print.PageWidth = 500; + _print.PageHeight = 800; + _print.Orientation = PageOrientation.Portrait; + _print.FitToPage = true; + _print.Margin = new DiagramThickness() { Left = 30, Top = 20, Right = 10, Bottom = 10 }; + _print.ClipBounds = new DiagramRect() { X = 200, Y = 200, Width = 200, Height = 200 }; + //To export the diagram into base64 + var _images = await _diagram.ExportAsync(DiagramExportFormat.PNG, _print); + var _pdforientation = PageOrientation.Portrait == PageOrientation.Landscape ? PdfPageOrientation.Landscape : PdfPageOrientation.Portrait; + await ExportToPdfAsync("diagram", _pdforientation, true, _images); + } + // + private async Task ExportToPdfAsync(string fileName, PdfPageOrientation orientation, bool allowDownload, string[] images) + { + PdfDocument _document = new PdfDocument(); + _document.PageSettings.Orientation = orientation; + _document.PageSettings.Margins = new PdfMargins() { Left = 0, Right = 0, Top = 0, Bottom = 0 }; + string _base64String; + var _dict = images; + for (int i = 0; i < _dict.Count(); i++) + { + _base64String = _dict[i]; + using (MemoryStream _initialStream = new MemoryStream(Convert.FromBase64String(_base64String.Split("base64,")[1]))) + { + Stream _stream = _initialStream as Stream; + PdfPage _page = _document.Pages.Add(); + PdfGraphics _graphics = _page.Graphics; + #pragma warning disable CA2000 + PdfBitmap _image = new PdfBitmap(_stream); + #pragma warning restore CA2000 + _graphics.DrawImage(_image, 0, 0); + } + } + using (MemoryStream _memoryStream = new MemoryStream()) + { + _document.Save(_memoryStream); + _memoryStream.Position = 0; + _base64String = Convert.ToBase64String(_memoryStream.ToArray()); + if (allowDownload) + { + await JSRuntimeExtensions.InvokeAsync(JS, "downloadPdf", new object[] { _base64String, fileName }); + _base64String = string.Empty; + } + else + { + _base64String = "data:application/pdf;base64," + _base64String; + } + _document.Dispose(); + } + return _base64String; + } +} \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportWithPage.razor b/Diagram/Server/Pages/Export/ExportWithPage.razor index 4b95f9a5..bcbab2b3 100644 --- a/Diagram/Server/Pages/Export/ExportWithPage.razor +++ b/Diagram/Server/Pages/Export/ExportWithPage.razor @@ -3,27 +3,27 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram. - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; //To export the diagram in single page. - export.FitToPage = true; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; - export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; + _export.FitToPage = true; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + _export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; //To export the diagram - await diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Server/Pages/Export/ExportWithPageSize.razor b/Diagram/Server/Pages/Export/ExportWithPageSize.razor index bb7d8a97..3e6302e1 100644 --- a/Diagram/Server/Pages/Export/ExportWithPageSize.razor +++ b/Diagram/Server/Pages/Export/ExportWithPageSize.razor @@ -3,20 +3,20 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.PageWidth = 816; - export.PageHeight = 1054; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.PageWidth = 816; + _export.PageHeight = 1054; //To export the diagram - await diagram.ExportAsync(DiagramExportFormat.SVG, export); + await _diagram.ExportAsync(DiagramExportFormat.SVG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/Export.razor b/Diagram/Wasm/Pages/Export/Export.razor index d77c2985..5f2e8712 100644 --- a/Diagram/Wasm/Pages/Export/Export.razor +++ b/Diagram/Wasm/Pages/Export/Export.razor @@ -3,24 +3,24 @@ @using Syncfusion.Blazor.Buttons - - + + @code { - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; //To export the diagram as base64 string. - private async Task ExportBase64() + private async Task ExportBase64Async() { - DiagramExportSettings export = new DiagramExportSettings(); - string[] base64 = await diagram.ExportAsync(DiagramExportFormat.PNG, export); + DiagramExportSettings _export = new DiagramExportSettings(); + string[] _base64 = await _diagram.ExportAsync(DiagramExportFormat.PNG, _export); } //To export the diagram as png. - private async Task ExportPng() + private async Task ExportPngAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - await diagram.ExportAsync("diagram", DiagramExportFormat.PNG, export); + DiagramExportSettings _export = new DiagramExportSettings(); + await _diagram.ExportAsync("diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportClipBounds.razor b/Diagram/Wasm/Pages/Export/ExportClipBounds.razor index 336f3153..ade64de6 100644 --- a/Diagram/Wasm/Pages/Export/ExportClipBounds.razor +++ b/Diagram/Wasm/Pages/Export/ExportClipBounds.razor @@ -2,24 +2,24 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; - export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + _export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; //To export the diagram - await diagram.ExportAsync("diagram",DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("diagram",DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportMargin.razor b/Diagram/Wasm/Pages/Export/ExportMargin.razor index 79e694d8..6178fe48 100644 --- a/Diagram/Wasm/Pages/Export/ExportMargin.razor +++ b/Diagram/Wasm/Pages/Export/ExportMargin.razor @@ -2,24 +2,24 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; //To export the diagram - await diagram.ExportAsync("diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportOption.razor b/Diagram/Wasm/Pages/Export/ExportOption.razor index 32b1ceb0..e6816fa9 100644 --- a/Diagram/Wasm/Pages/Export/ExportOption.razor +++ b/Diagram/Wasm/Pages/Export/ExportOption.razor @@ -2,19 +2,19 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); + DiagramExportSettings _export = new DiagramExportSettings(); //To export the diagram - await diagram.ExportAsync("Diagram", DiagramExportFormat.SVG, export); + await _diagram.ExportAsync("Diagram", DiagramExportFormat.SVG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportOrientation.razor b/Diagram/Wasm/Pages/Export/ExportOrientation.razor index 15f0ebf3..6983d7b8 100644 --- a/Diagram/Wasm/Pages/Export/ExportOrientation.razor +++ b/Diagram/Wasm/Pages/Export/ExportOrientation.razor @@ -2,26 +2,26 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; //To export the diagram in single page. - export.FitToPage = true; - export.Orientation = PageOrientation.Landscape; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; - export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; + _export.FitToPage = true; + _export.Orientation = PageOrientation.Landscape; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + _export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; //To export the diagram - await diagram.ExportAsync("diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportRegion.razor b/Diagram/Wasm/Pages/Export/ExportRegion.razor index a57f3513..a4b00349 100644 --- a/Diagram/Wasm/Pages/Export/ExportRegion.razor +++ b/Diagram/Wasm/Pages/Export/ExportRegion.razor @@ -3,24 +3,24 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; //To export the diagram - await diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportToPDF.razor b/Diagram/Wasm/Pages/Export/ExportToPDF.razor new file mode 100644 index 00000000..ad2a42b6 --- /dev/null +++ b/Diagram/Wasm/Pages/Export/ExportToPDF.razor @@ -0,0 +1,72 @@ +@page "/Export" + +@using Syncfusion.PdfExport; +@using Syncfusion.Blazor.Diagram +@using Syncfusion.Blazor.Buttons +@inject IJSRuntime JS; + + + + + +@code +{ + //Reference the diagram + SfDiagramComponent _diagram; + + private async void ExportPDFAsync() + { + DiagramExportSettings _print = new DiagramExportSettings(); + _print.Region = DiagramPrintExportRegion.PageSettings; + _print.PageWidth = 500; + _print.PageHeight = 800; + _print.Orientation = PageOrientation.Portrait; + _print.FitToPage = true; + _print.Margin = new DiagramThickness() { Left = 30, Top = 20, Right = 10, Bottom = 10 }; + _print.ClipBounds = new DiagramRect() { X = 200, Y = 200, Width = 200, Height = 200 }; + //To export the diagram into base64 + var _images = await _diagram.ExportAsync(DiagramExportFormat.PNG, _print); + var _pdforientation = PageOrientation.Portrait == PageOrientation.Landscape ? PdfPageOrientation.Landscape : PdfPageOrientation.Portrait; + await ExportToPdfAsync("diagram", _pdforientation, true, _images); + } + // + private async Task ExportToPdfAsync(string fileName, PdfPageOrientation orientation, bool allowDownload, string[] images) + { + PdfDocument _document = new PdfDocument(); + _document.PageSettings.Orientation = orientation; + _document.PageSettings.Margins = new PdfMargins() { Left = 0, Right = 0, Top = 0, Bottom = 0 }; + string _base64String; + var _dict = images; + for (int i = 0; i < _dict.Count(); i++) + { + _base64String = _dict[i]; + using (MemoryStream _initialStream = new MemoryStream(Convert.FromBase64String(_base64String.Split("base64,")[1]))) + { + Stream _stream = _initialStream as Stream; + PdfPage _page = _document.Pages.Add(); + PdfGraphics _graphics = _page.Graphics; + #pragma warning disable CA2000 + PdfBitmap _image = new PdfBitmap(_stream); + #pragma warning restore CA2000 + _graphics.DrawImage(_image, 0, 0); + } + } + using (MemoryStream _memoryStream = new MemoryStream()) + { + _document.Save(_memoryStream); + _memoryStream.Position = 0; + _base64String = Convert.ToBase64String(_memoryStream.ToArray()); + if (allowDownload) + { + await JSRuntimeExtensions.InvokeAsync(JS, "downloadPdf", new object[] { _base64String, fileName }); + _base64String = string.Empty; + } + else + { + _base64String = "data:application/pdf;base64," + _base64String; + } + _document.Dispose(); + } + return _base64String; + } +} \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportWithPage.razor b/Diagram/Wasm/Pages/Export/ExportWithPage.razor index 4b95f9a5..bcbab2b3 100644 --- a/Diagram/Wasm/Pages/Export/ExportWithPage.razor +++ b/Diagram/Wasm/Pages/Export/ExportWithPage.razor @@ -3,27 +3,27 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram. - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.Region = DiagramPrintExportRegion.PageSettings; - export.PageWidth = 816; - export.PageHeight = 1054; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.Region = DiagramPrintExportRegion.PageSettings; + _export.PageWidth = 816; + _export.PageHeight = 1054; //To export the diagram in single page. - export.FitToPage = true; - export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; - export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; + _export.FitToPage = true; + _export.Margin = new DiagramThickness() { Left = 10, Top = 10, Right = 10, Bottom = 10 }; + _export.ClipBounds = new DiagramRect() { X = 0, Y = 0, Width = 500, Height = 500 }; //To export the diagram - await diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, export); + await _diagram.ExportAsync("Diagram", DiagramExportFormat.PNG, _export); } } \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportWithPageSize.razor b/Diagram/Wasm/Pages/Export/ExportWithPageSize.razor index bb7d8a97..3e6302e1 100644 --- a/Diagram/Wasm/Pages/Export/ExportWithPageSize.razor +++ b/Diagram/Wasm/Pages/Export/ExportWithPageSize.razor @@ -3,20 +3,20 @@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Buttons - - + + @code { //Reference the diagram - private SfDiagramComponent diagram; + private SfDiagramComponent _diagram; - private async Task Export() + private async Task ExportAsync() { - DiagramExportSettings export = new DiagramExportSettings(); - export.PageWidth = 816; - export.PageHeight = 1054; + DiagramExportSettings _export = new DiagramExportSettings(); + _export.PageWidth = 816; + _export.PageHeight = 1054; //To export the diagram - await diagram.ExportAsync(DiagramExportFormat.SVG, export); + await _diagram.ExportAsync(DiagramExportFormat.SVG, _export); } } \ No newline at end of file From 03f1d102e103bfa7036d8ecd99f98c1e57fb6e62 Mon Sep 17 00:00:00 2001 From: "pranoove.karnan@syncfusion.com" Date: Tue, 3 Feb 2026 15:17:24 +0530 Subject: [PATCH 2/2] 1004829: Blazor UG Update --- Diagram/Server/Pages/Export/ExportToPDF.razor | 35 ++++++++++++++++++- Diagram/Wasm/Pages/Export/ExportToPDF.razor | 35 ++++++++++++++++++- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/Diagram/Server/Pages/Export/ExportToPDF.razor b/Diagram/Server/Pages/Export/ExportToPDF.razor index ad2a42b6..b5eabc29 100644 --- a/Diagram/Server/Pages/Export/ExportToPDF.razor +++ b/Diagram/Server/Pages/Export/ExportToPDF.razor @@ -69,4 +69,37 @@ } return _base64String; } -} \ No newline at end of file +} + \ No newline at end of file diff --git a/Diagram/Wasm/Pages/Export/ExportToPDF.razor b/Diagram/Wasm/Pages/Export/ExportToPDF.razor index ad2a42b6..b5eabc29 100644 --- a/Diagram/Wasm/Pages/Export/ExportToPDF.razor +++ b/Diagram/Wasm/Pages/Export/ExportToPDF.razor @@ -69,4 +69,37 @@ } return _base64String; } -} \ No newline at end of file +} + \ No newline at end of file