diff --git a/_config.yml b/_config.yml
index e910716079..ea478be8ce 100644
--- a/_config.yml
+++ b/_config.yml
@@ -374,6 +374,8 @@ navigation:
title: "Popup"
"*numerictextbox":
title: "NumericTextBox"
+ "*pdfviewer":
+ title: "PDF Viewer"
"*progressbar":
title: "ProgressBar"
"*qrcode":
diff --git a/components/pdfviewer/events.md b/components/pdfviewer/events.md
new file mode 100644
index 0000000000..5d40df3e70
--- /dev/null
+++ b/components/pdfviewer/events.md
@@ -0,0 +1,135 @@
+---
+title: Events
+page_title: PdfViewer - Events
+description: Events of the PDF Viewer for Blazor. How to handle events when users download, open or zoom PDF documents.
+slug: pdfviewer-events
+tags: telerik,blazor,pdf,pdfviewer
+published: True
+position: 20
+---
+
+# PdfViewer Events
+
+This article describes the Blazor PDF Viewer events and provides a runnable example with sample event handler implementations.
+
+* [`OnDownload`](#ondownload)
+* [`OnError`](#onerror)
+* [`OnOpen`](#onopen)
+* [`ZoomChanged`](#zoomchanged)
+
+
+## OnDownload
+
+The `OnDownload` event fires when the user clicks on the Download button in the [PDF Viewer toolbar]({%slug pdfviewer-toolbar%}).
+
+The event handler receives an argument of type [`PdfViewerDownloadEventArgs`](/blazor-ui/api/Telerik.Blazor.Components.PdfViewerDownloadEventArgs). The event is cancellable and allows the application to set a name of the downloaded file. Do not add the `.pdf` file extension - the component will do that. The default name of the downloaded file is `Document.pdf`. See the [example below](#example).
+
+
+## OnError
+
+The `OnError` event fires when a file error occurs. For example, the user tries to open a corrupt file or a file that is not in the correct format.
+
+The event handler receives an argument of type [`PdfViewerErrorEventArgs`](/blazor-ui/api/Telerik.Blazor.Components.PdfViewerErrorEventArgs), which exposes a `Message` property. See the [example below](#example).
+
+
+## OnOpen
+
+The `OnOpen` event fires when the user selects a file to open from the [PDF Viewer toolbar]({%slug pdfviewer-toolbar%}).
+
+The event handler receives an argument of type [`PdfViewerOpenEventArgs`](/blazor-ui/api/Telerik.Blazor.Components.PdfViewerOpenEventArgs). The event is cancellable and allows the application to obtain the PDF file name, size and contents as a `Stream`. To read the `Stream`, you may need to [increase the maximum SignalR message size]({%slug pdfviewer-overview%}#large-file-support).
+
+Using `OnOpen` is *not* required. Users can open local files from their devices without this handler. See the [example below](#example).
+
+
+## ZoomChanged
+
+The `ZoomChanged` event fires when the user clicks on the zoom in/out buttons, or selects a new zoom level from the ComboBox.
+
+The event handler receives the new zoom level as an argument of type `decimal`. To apply the new zoom level, set it as a new `Zoom` parameter value. Not setting it will effectively cancel the event.
+
+
+## Example
+
+>caption Handle or cancel Blazor PDF Viewer Events
+
+````CSHTML
+
` element. Use it to [customize the component styles and override the theme]({%slug themes-override%}). |
+| `Data` | `byte[]` | The source of the currently displayed PDF file. |
+| `EnableLoaderContainer` | `bool`
(`true`) | Determines if the PDF Viewer will show a loading animation during opening, downloading or zooming a PDF file. |
+| `Height` | `string` | The PdfViewer height as a [CSS length value]({%slug common-features/dimensions%}). If not set, the component will expand vertically, based on the loaded file. `Height` is required for the component paging and scrolling to work. |
+| `MaxZoom` | `decimal`
(`4m`) | The largest possible zoom level. The default value allows zooming in 4 times (400%). |
+| `MinZoom` | `decimal`
(`0.5m`) | The smallest possible zoom level. The default value allows zooming out to 50%. |
+| `Width` | `string` | The PdfViewer width as a [CSS length value]({%slug common-features/dimensions%}). If not set, the component will expand horizontally to fill its parent. |
+| `Zoom` | `decimal`
(`1.25m`) | The current zoom level. Use the parameter with two-way binding or with a [`ZoomChanged` event handler]({%slug pdfviewer-events%}#zoomchanged). |
+| `ZoomRate` | `decimal`
(`0.25m`) | The zoom level change that is used by the zoom in and zoom out buttons. |
+
+
+## PdfViewer Reference and Methods
+
+The PdfViewer exposes methods for programmatic operation. To use them, define a reference to the component instance with the `@ref` directive attribute.
+
+@[template](/_contentTemplates/common/parameters-table-styles.md#table-layout)
+
+| Method | Description |
+| --- | --- |
+| `Rebind` | Refreshes the PDF Viewer and ensures it is displaying the latest file `Data`. [`Rebind` is necessary when the Blazor framework cannot re-render components automatically]({%slug common-features-data-binding-overview%}#refresh-data). |
+
+
+>caption PDF Viewer reference and Rebind method usage
+
+````CSHTML
+
+
+
+ Rebind PDF Viewer
+
+
+
+
+@code {
+ private TelerikPdfViewer PdfViewerRef { get; set; }
+
+ private async Task OnButtonClick()
+ {
+ PdfViewerRef.Rebind();
+ }
+
+ private byte[] PdfSource
+ {
+ get
+ {
+ return System.Text.Encoding.UTF8.GetBytes(
+ PdfSourceRaw.Replace("...",
+ PdfUpdateFlag ? "updated at " + DateTime.Now.ToLongTimeString() : "")
+ );
+ }
+ }
+
+ protected override async Task OnInitializedAsync()
+ {
+ PdfSourceRaw = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(PdfBase64));
+
+ await Task.Delay(1000);
+
+ // PdfUpdateFlag is used in the PdfSource getter to make the document change more obvious
+ PdfUpdateFlag = true;
+
+ PdfViewerRef.Rebind();
+
+ await base.OnInitializedAsync();
+ }
+
+ private bool PdfUpdateFlag { get; set; }
+
+ private string PdfSourceRaw { get; set; }
+
+ private const string PdfBase64 = "JVBERi0xLjEKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDEvTWVkaWFCb3ggWy0zMCAtNjQgMjcwIDgwXSA+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjE8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9BcmlhbD4+ID4+ID4+L0NvbnRlbnRzIDQgMCBSPj5lbmRvYmoKNCAwIG9iajw8L0xlbmd0aCA1OT4+CnN0cmVhbQpCVAovRjEgMTggVGYKMCAwIFRkCihQREYgRmlsZSAuLi4pIFRqCkVUCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmCjAwMDAwMDAwMjEgMDAwMDAgbgowMDAwMDAwMDg2IDAwMDAwIG4KMDAwMDAwMDE5NSAwMDAwMCBuCjAwMDAwMDA0OTAgMDAwMDAgbgp0cmFpbGVyIDw8ICAvUm9vdCAxIDAgUiAvU2l6ZSA1ID4+CnN0YXJ0eHJlZgo2MDkKJSVFT0Y=";
+}
+````
+
+
+## Next Steps
+
+* [Customize the PDF Viewer toolbar]({%slug pdfviewer-toolbar%})
+* [Handle PDF Viewer events]({%slug pdfviewer-events%})
+
+
+## See Also
+
+* [PdfViewer Live Demo](https://demos.telerik.com/blazor-ui/pdfviewer/overview)
+* [PdfViewer API](/blazor-ui/api/Telerik.Blazor.Components.TelerikPdfViewer)
diff --git a/components/pdfviewer/toolbar.md b/components/pdfviewer/toolbar.md
new file mode 100644
index 0000000000..3bdee10a43
--- /dev/null
+++ b/components/pdfviewer/toolbar.md
@@ -0,0 +1,94 @@
+---
+title: Toolbar
+page_title: PdfViewer - Toolbar
+description: Toolbar of the PDF Viewer for Blazor. List of all built-in tools. How to use custom PDF Viewer tools.
+slug: pdfviewer-toolbar
+tags: telerik,blazor,pdf,pdfviewer
+published: True
+position: 10
+---
+
+# PdfViewer Toolbar
+
+The PDF Viewer toolbar can render built-in and custom tools. This article describes the built-in tools and shows how to add custom tools or customize the toolbar.
+
+
+## Built-in Tools
+
+By default, the PDF Viewer displays all its built-in tools in the order below. Use the *tool tag* if you need to define a tool explicitly in a [custom toolbar configuration](#toolbar-configuration).
+
+@[template](/_contentTemplates/common/parameters-table-styles.md#table-layout)
+
+| Tool Name | Tool Tag | Description |
+| --- | --- | --- |
+| Pager | `PdfViewerToolBarPagerTool` | A pager to navigate the PDF document via automatic scrolling. Paging requires the [`Height` parameter]({%slug pdfviewer-overview%}#pdfviewer-parameters) to be set, otherwise the component expands and doesn't have its own scrollbar. |
+| Zoom | `PdfViewerToolBarZoomTool` | Zoom in and zoom out buttons with an additional dropdown with common options (Fit to page, Fit to width, 100%, etc.) |
+| Selection | `PdfViewerToolBarSelectionTool` | Two toggle buttons that enable either text selection or panning. |
+| Search | `PdfViewerToolBarSearchTool` | A search button. It opens an additional search bar that contains a textbox and arrow buttons to navigate the search results. |
+| Open | `PdfViewerToolBarOpenTool` | An open button. It fires the [`OnOpen` event]({%slug pdfviewer-events%}#onopen). |
+| Download | `PdfViewerToolBarDownloadTool` | A download button. It fires the [`OnDownload` event]({%slug pdfviewer-events%}#ondownload). |
+| Print | `PdfViewerToolBarPrintTool` | A print button. |
+
+By default, the toolbar also includes separators (`
`) and spacers (`
`). Separators render as a vertical line. Spacers consume the available empty space and push the rest of the tools next to one another.
+
+
+## Custom Tools
+
+In addition to built-in tools, the PDF Viewer also supports custom tools. Use the `
` tag, which is a standard Blazor `RenderFragment`. See the example below.
+
+
+## Toolbar Configuration
+
+Add a `` tag inside `` to configure a custom toolbar, for example:
+
+* Arrange the PDF Viewer tools in a specific order;
+* Remove some of the built-in tools;
+* Add custom tools.
+
+>caption Customize the PDF Viewer toolbar
+
+````CSHTML
+
+
+
+ Custom PDF Tool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private byte[] PdfSource { get; set; }
+
+ private async Task OnPdfCustomClick()
+ {
+ Console.WriteLine("Custom PDF tool clicked");
+ }
+}
+````
+
+
+## Next Steps
+
+* [Handle PDF Viewer events]({%slug pdfviewer-events%})
+
+
+## See Also
+
+* [PdfViewer Live Demo](https://demos.telerik.com/blazor-ui/pdfviewer/overview)
+* [PdfViewer API](/blazor-ui/api/Telerik.Blazor.Components.TelerikPdfViewer)