diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs index 44fd37d4..e9dbe20c 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs @@ -56,10 +56,10 @@ public partial class PdfReader public uint CurrentPage { get; set; } /// - /// 获得/设置 当前缩放倍率 默认 null 使用 100% + /// 获得/设置 当前旋转角度 默认 0 数值范围 0 90 180 270 /// [Parameter] - public string? CurrentScale { get; set; } + public int CurrentRotation { get; set; } /// /// 获得/设置 是否适配当前页面宽度 默认 false @@ -109,6 +109,12 @@ public partial class PdfReader [Parameter] public Func? OnScaleChangedAsync { get; set; } + /// + /// 页面旋转回调方法 + /// + [Parameter] + public Func? OnRotationChanged { get; set; } + /// /// 获得/设置 更多按钮图标 默认为 null 使用内置图标 /// @@ -142,6 +148,7 @@ public partial class PdfReader private string? _docTitle; private uint _currentPage; + private float _currentRotation; private string? _url; private string? _dropdownItemCheckIcon; private string? _dropdownItemDefaultIcon; @@ -195,6 +202,11 @@ protected override async Task OnAfterRenderAsync(bool firstRender) _currentPage = CurrentPage; await NavigateToPageAsync(_currentPage); } + if (_currentRotation != CurrentRotation) + { + _currentRotation = CurrentRotation; + await InvokeVoidAsync("rotate", Id, _currentRotation); + } if (_showToolbar != ShowToolbar) { _showToolbar = ShowToolbar; @@ -232,7 +244,8 @@ protected override async Task OnAfterRenderAsync(bool firstRender) TriggerPagesLoaded = OnPagesLoadedAsync != null, TriggerPageChanged = OnPageChangedAsync != null, TriggerTowPagesOnViewChanged = OnTwoPagesOneViewAsync != null, - TriggerScaleChanged = OnScaleChangedAsync != null + TriggerScaleChanged = OnScaleChangedAsync != null, + TriggerRotationChanged = OnRotationChanged != null, }); /// @@ -334,4 +347,18 @@ public async Task Printing() await OnPrintingAsync(); } } + + /// + /// 页面旋转回调方法 + /// + /// + /// + [JSInvokable] + public async Task RotationChanged(int angle) + { + if (OnRotationChanged != null) + { + await OnRotationChanged(angle); + } + } } diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js index b80ecffe..4ae1597c 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js @@ -357,11 +357,15 @@ const addEventBus = (el, pdfViewer, eventBus, invoke, options) => { } }) - eventBus.on("rotationchanging", evt => { + eventBus.on("rotationchanging", async evt => { const thumbnailsContainer = el.querySelector(".bb-view-thumbnails"); if (thumbnailsContainer) { thumbnailsContainer.style.setProperty('--thumb-rotate', `${evt.pagesRotation}deg`); } + + if (options.triggerRotationChanged) { + await invoke.invokeMethodAsync("RotationChanged", evt.pagesRotation); + } }) }