Skip to content

Commit 4f9758f

Browse files
authored
feat(PdfReader): add IsShow parameter (#837)
* refactor: 增加 download 功能 * chore: bump version 10.0.18 * refactor: 重构代码 * refactor: 精简代码 * refactor: 调整样式名称 * feat(PdfReader): add IsShow parameter * chore: bump version 10.0.19
1 parent 344c64a commit 4f9758f

5 files changed

Lines changed: 41 additions & 13 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.17</Version>
4+
<Version>10.0.19</Version>
55
</PropertyGroup>
66

77
<PropertyGroup>

src/components/BootstrapBlazor.PdfReader/PdfReader.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
</div>
112112
<div class="bb-view-pdf-dialog-item">
113113
<div class="bb-view-pdf-dialog-label">@Localizer["DocumentFileSize"]</div>
114-
<div class="bb-view-pdf-dialog-filesize"></div>
114+
<div class="bb-view-pdf-dialog-file-size"></div>
115115
</div>
116116
<div class="divider">
117117
<div class="divider-mask"></div>
@@ -168,7 +168,7 @@
168168
</div>
169169
<div class="bb-view-pdf-dialog-item">
170170
<div class="bb-view-pdf-dialog-label">@Localizer["DocumentFastWebView"]</div>
171-
<div class="bb-view-pdf-dialog-webview">No</div>
171+
<div class="bb-view-pdf-dialog-view">No</div>
172172
</div>
173173
<div class="bb-view-pdf-dialog-close">
174174
<button type="button" class="btn btn-primary btn-close-doc">

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,17 @@ public partial class PdfReader
134134
[Parameter]
135135
public Func<Task<Stream?>>? OnGetStreamAsync { get; set; }
136136

137+
/// <summary>
138+
/// 获得/设置 是否显示组件 默认 true 显示
139+
/// </summary>
140+
[Parameter]
141+
public bool IsShow { get; set; } = true;
142+
137143
[Inject, NotNull]
138144
private IStringLocalizer<PdfReader>? Localizer { get; set; }
139145

140146
private string? ClassString => CssBuilder.Default("bb-pdf-reader")
147+
.AddClass("show", IsShow)
141148
.AddClassFromAttributes(AdditionalAttributes)
142149
.Build();
143150

@@ -242,11 +249,11 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
242249
stream = await OnGetStreamAsync();
243250
}
244251

245-
await SetPdfStream(stream);
252+
await InvokeSetDataAsync(stream);
246253
}
247254
}
248255

249-
private async Task SetPdfStream(Stream? stream)
256+
private async Task InvokeSetDataAsync(Stream? stream)
250257
{
251258
if (stream == null || stream == Stream.Null)
252259
{

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

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export async function setData(id, data) {
5050

5151
const { options } = pdf;
5252
options.url = null;
53-
options.data = data;;
53+
options.data = data;
5454
await loadPdf(pdf);
5555
}
5656

@@ -202,7 +202,7 @@ const loadMetadata = (el, pdfViewer, metadata) => {
202202
filename.textContent = docTitle.textContent;
203203
}
204204

205-
const filesize = el.querySelector('.bb-view-pdf-dialog-filesize');
205+
const filesize = el.querySelector('.bb-view-pdf-dialog-file-size');
206206
filesize.textContent = getFilesize(metadata);
207207

208208
const title = el.querySelector('.bb-view-pdf-dialog-title');
@@ -232,7 +232,7 @@ const loadMetadata = (el, pdfViewer, metadata) => {
232232
size.textContent = `${(viewport.width / 72).toFixed(2)} * ${(viewport.height / 72).toFixed(2)} in (portrait)`;
233233
});
234234

235-
const webview = el.querySelector('.bb-view-pdf-dialog-webview');
235+
const webview = el.querySelector('.bb-view-pdf-dialog-view');
236236
}
237237

238238
function parsePdfDate(pdfDateString) {
@@ -528,12 +528,19 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => {
528528
});
529529
EventHandler.on(toolbar, "click", ".bb-view-download", e => {
530530
if (options.url) {
531+
let fileName = "download.pdf";
531532
const docTitle = el.querySelector('.bb-view-subject');
532-
const anchorElement = document.createElement('a');
533-
anchorElement.href = options.url;
534-
anchorElement.download = docTitle.textContent;
535-
anchorElement.click();
536-
anchorElement.remove();
533+
if (docTitle) {
534+
fileName = docTitle.textContent;
535+
}
536+
downloadPdf(options.url, fileName);
537+
}
538+
else if (options.data) {
539+
const blob = new Blob([options.data], { type: 'application/pdf' });
540+
const url = window.URL.createObjectURL(blob);
541+
let fileName = "download.pdf";
542+
downloadPdf(url, fileName);
543+
window.URL.revokeObjectURL(url);
537544
}
538545
});
539546

@@ -563,6 +570,15 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => {
563570
});
564571
}
565572

573+
const downloadPdf = (url, filename) => {
574+
const anchorElement = document.createElement('a');
575+
anchorElement.href = url;
576+
anchorElement.download = filename;
577+
document.body.appendChild(anchorElement);
578+
anchorElement.click();
579+
anchorElement.remove();
580+
}
581+
566582
const removeToolbarEventHandlers = el => {
567583
if (el) {
568584
const towPagesOneView = el.querySelector(".dropdown-item-pages");

src/components/BootstrapBlazor.PdfReader/wwwroot/css/pdf_reader.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
height: calc(var(--bb-pdf-view-height) + var(--bb-pdf-toolbar-height));
99
}
1010

11+
.bb-pdf-reader:not(.show) {
12+
overflow: hidden;
13+
height: 0;
14+
}
15+
1116
.bb-view-progress {
1217
position: absolute;
1318
top: 0;

0 commit comments

Comments
 (0)