diff --git a/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj b/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj index 6c4ac715..c972bf8f 100644 --- a/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj +++ b/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj @@ -1,7 +1,7 @@  - 10.0.19 + 10.0.20 diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor index ea1b0d89..63b70f3f 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor @@ -2,7 +2,7 @@ @namespace BootstrapBlazor.Components @inherits BootstrapModuleComponentBase -
+
diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs index 054060fe..a5fa9c3e 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs @@ -140,6 +140,12 @@ public partial class PdfReader [Parameter] public bool IsShow { get; set; } = true; + /// + /// 获得/设置 下载文件名 默认 null 未设置 + /// + [Parameter] + public string? DownloadFileName { get; set; } + [Inject, NotNull] private IStringLocalizer? Localizer { get; set; } @@ -253,6 +259,29 @@ protected override async Task OnAfterRenderAsync(bool firstRender) } } + /// + /// + /// + /// + protected override async Task InvokeInitAsync() + { + var _data = await GetPdfStreamDataAsync(); + await InvokeVoidAsync("init", Id, Interop, new + { + Url, + Data = _data, + FitMode, + EnableThumbnails, + CurrentPage, + TriggerPagesInit = OnPagesInitAsync != null, + TriggerPagesLoaded = OnPagesLoadedAsync != null, + TriggerPageChanged = OnPageChangedAsync != null, + TriggerTowPagesOnViewChanged = OnTwoPagesOneViewAsync != null, + TriggerScaleChanged = OnScaleChangedAsync != null, + TriggerRotationChanged = OnRotationChanged != null, + }); + } + private async Task InvokeSetDataAsync(Stream? stream) { if (stream == null || stream == Stream.Null) @@ -359,29 +388,6 @@ private static async Task ComputerHash(Stream stream) } #endif - /// - /// - /// - /// - protected override async Task InvokeInitAsync() - { - var _data = await GetPdfStreamDataAsync(); - await InvokeVoidAsync("init", Id, Interop, new - { - Url, - Data = _data, - FitMode, - EnableThumbnails, - CurrentPage, - TriggerPagesInit = OnPagesInitAsync != null, - TriggerPagesLoaded = OnPagesLoadedAsync != null, - TriggerPageChanged = OnPageChangedAsync != null, - TriggerTowPagesOnViewChanged = OnTwoPagesOneViewAsync != null, - TriggerScaleChanged = OnScaleChangedAsync != null, - TriggerRotationChanged = OnRotationChanged != null, - }); - } - /// /// 跳转到指定页码方法 /// diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js index cb46e1ed..224b89ef 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js @@ -527,18 +527,19 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => { } }); EventHandler.on(toolbar, "click", ".bb-view-download", e => { + let fileName = el.getAttribute('data-bb-download'); if (options.url) { - let fileName = "download.pdf"; - const docTitle = el.querySelector('.bb-view-subject'); - if (docTitle) { - fileName = docTitle.textContent; + if (fileName === null) { + const docTitle = el.querySelector('.bb-view-subject'); + if (docTitle) { + fileName = docTitle.textContent; + } } downloadPdf(options.url, fileName); } else if (options.data) { const blob = new Blob([options.data], { type: 'application/pdf' }); const url = window.URL.createObjectURL(blob); - let fileName = "download.pdf"; downloadPdf(url, fileName); window.URL.revokeObjectURL(url); } @@ -570,13 +571,16 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => { }); } -const downloadPdf = (url, filename) => { +const downloadPdf = (url, fileName) => { + if (fileName === null) { + fileName = "download.pdf"; + } const anchorElement = document.createElement('a'); anchorElement.href = url; - anchorElement.download = filename; + anchorElement.download = fileName; document.body.appendChild(anchorElement); anchorElement.click(); - anchorElement.remove(); + document.body.removeChild(anchorElement); } const removeToolbarEventHandlers = el => {