Skip to content

Commit e609ce8

Browse files
authored
feat(PdfReader): add DownloadFileName parameter (#839)
* feat(PdfReader): add DownloadFileName parameter * chore: bump version 10.0.20
1 parent 4f9758f commit e609ce8

4 files changed

Lines changed: 43 additions & 33 deletions

File tree

src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>10.0.19</Version>
4+
<Version>10.0.20</Version>
55
</PropertyGroup>
66

77
<PropertyGroup>

src/components/BootstrapBlazor.PdfReader/PdfReader.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
@namespace BootstrapBlazor.Components
33
@inherits BootstrapModuleComponentBase
44

5-
<div @attributes="@AdditionalAttributes" id="@Id" class="@ClassString" style="@StyleString">
5+
<div @attributes="@AdditionalAttributes" id="@Id" class="@ClassString" style="@StyleString" data-bb-download="@DownloadFileName">
66
<div class="bb-view-progress">
77
<div class="bb-view-progress-bar"></div>
88
</div>

src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,12 @@ public partial class PdfReader
140140
[Parameter]
141141
public bool IsShow { get; set; } = true;
142142

143+
/// <summary>
144+
/// 获得/设置 下载文件名 默认 null 未设置
145+
/// </summary>
146+
[Parameter]
147+
public string? DownloadFileName { get; set; }
148+
143149
[Inject, NotNull]
144150
private IStringLocalizer<PdfReader>? Localizer { get; set; }
145151

@@ -253,6 +259,29 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
253259
}
254260
}
255261

262+
/// <summary>
263+
/// <inheritdoc/>
264+
/// </summary>
265+
/// <returns></returns>
266+
protected override async Task InvokeInitAsync()
267+
{
268+
var _data = await GetPdfStreamDataAsync();
269+
await InvokeVoidAsync("init", Id, Interop, new
270+
{
271+
Url,
272+
Data = _data,
273+
FitMode,
274+
EnableThumbnails,
275+
CurrentPage,
276+
TriggerPagesInit = OnPagesInitAsync != null,
277+
TriggerPagesLoaded = OnPagesLoadedAsync != null,
278+
TriggerPageChanged = OnPageChangedAsync != null,
279+
TriggerTowPagesOnViewChanged = OnTwoPagesOneViewAsync != null,
280+
TriggerScaleChanged = OnScaleChangedAsync != null,
281+
TriggerRotationChanged = OnRotationChanged != null,
282+
});
283+
}
284+
256285
private async Task InvokeSetDataAsync(Stream? stream)
257286
{
258287
if (stream == null || stream == Stream.Null)
@@ -359,29 +388,6 @@ private static async Task<string> ComputerHash(Stream stream)
359388
}
360389
#endif
361390

362-
/// <summary>
363-
/// <inheritdoc/>
364-
/// </summary>
365-
/// <returns></returns>
366-
protected override async Task InvokeInitAsync()
367-
{
368-
var _data = await GetPdfStreamDataAsync();
369-
await InvokeVoidAsync("init", Id, Interop, new
370-
{
371-
Url,
372-
Data = _data,
373-
FitMode,
374-
EnableThumbnails,
375-
CurrentPage,
376-
TriggerPagesInit = OnPagesInitAsync != null,
377-
TriggerPagesLoaded = OnPagesLoadedAsync != null,
378-
TriggerPageChanged = OnPageChangedAsync != null,
379-
TriggerTowPagesOnViewChanged = OnTwoPagesOneViewAsync != null,
380-
TriggerScaleChanged = OnScaleChangedAsync != null,
381-
TriggerRotationChanged = OnRotationChanged != null,
382-
});
383-
}
384-
385391
/// <summary>
386392
/// 跳转到指定页码方法
387393
/// </summary>

src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -527,18 +527,19 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => {
527527
}
528528
});
529529
EventHandler.on(toolbar, "click", ".bb-view-download", e => {
530+
let fileName = el.getAttribute('data-bb-download');
530531
if (options.url) {
531-
let fileName = "download.pdf";
532-
const docTitle = el.querySelector('.bb-view-subject');
533-
if (docTitle) {
534-
fileName = docTitle.textContent;
532+
if (fileName === null) {
533+
const docTitle = el.querySelector('.bb-view-subject');
534+
if (docTitle) {
535+
fileName = docTitle.textContent;
536+
}
535537
}
536538
downloadPdf(options.url, fileName);
537539
}
538540
else if (options.data) {
539541
const blob = new Blob([options.data], { type: 'application/pdf' });
540542
const url = window.URL.createObjectURL(blob);
541-
let fileName = "download.pdf";
542543
downloadPdf(url, fileName);
543544
window.URL.revokeObjectURL(url);
544545
}
@@ -570,13 +571,16 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => {
570571
});
571572
}
572573

573-
const downloadPdf = (url, filename) => {
574+
const downloadPdf = (url, fileName) => {
575+
if (fileName === null) {
576+
fileName = "download.pdf";
577+
}
574578
const anchorElement = document.createElement('a');
575579
anchorElement.href = url;
576-
anchorElement.download = filename;
580+
anchorElement.download = fileName;
577581
document.body.appendChild(anchorElement);
578582
anchorElement.click();
579-
anchorElement.remove();
583+
document.body.removeChild(anchorElement);
580584
}
581585

582586
const removeToolbarEventHandlers = el => {

0 commit comments

Comments
 (0)