Skip to content

Commit 56064f5

Browse files
authored
feat(PdfViewer): add ShowToolbar parameter (#913)
* feat(PdfViewer): add ShowToolbar parameter * chore: bump version 10.0.1
1 parent ceb4c32 commit 56064f5

2 files changed

Lines changed: 43 additions & 13 deletions

File tree

src/components/BootstrapBlazor.PdfViewer/BootstrapBlazor.PdfViewer.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

3+
<PropertyGroup>
4+
<Version>10.0.1</Version>
5+
</PropertyGroup>
6+
37
<PropertyGroup>
48
<PackageTags>Bootstrap Blazor WebAssembly wasm UI Components Pdf Viewer</PackageTags>
59
<Description>Bootstrap UI components extensions of Pdf Viewer</Description>

src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.cs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
1+
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33
// Website: https://www.blazor.zone or https://argozhang.github.io/
44

@@ -7,46 +7,60 @@
77
namespace BootstrapBlazor.Components;
88

99
/// <summary>
10-
/// PdfViewer component for displaying PDF files in a Blazor application.
10+
/// <para lang="zh">PdfViewer 组件</para>
11+
/// <para lang="en">PdfViewer component for displaying PDF files in a Blazor application</para>
1112
/// </summary>
1213
public partial class PdfViewer
1314
{
1415
/// <summary>
15-
/// Gets or sets the url for the PDF file to be displayed.
16+
/// <para lang="zh">获得/设置 文档 Url 属性</para>
17+
/// <para lang="en">Gets or sets the url for the PDF file to be displayed</para>
1618
/// </summary>
1719
[Parameter]
1820
public string? Url { get; set; }
1921

2022
/// <summary>
21-
/// Gets or sets the page index of the PDF file.
23+
/// <para lang="zh">获得/设置 页码索引</para>
24+
/// <para lang="en">Gets or sets the page index of the PDF file</para>
2225
/// </summary>
2326
[Parameter]
2427
public int PageIndex { get; set; }
2528

2629
/// <summary>
27-
/// Gets or sets the viewer height. Default is null.
30+
/// <para lang="zh">获得/设置 查看器高度</para>
31+
/// <para lang="en">Gets or sets the viewer height</para>
2832
/// </summary>
2933
[Parameter]
3034
public string? Height { get; set; }
3135

3236
/// <summary>
33-
/// Gets or sets the document loaded event callback.
37+
/// <para lang="zh">获得/设置 文档加载完成回调事件</para>
38+
/// <para lang="en">Gets or sets the document loaded event callback</para>
3439
/// </summary>
3540
[Parameter]
3641
public Func<Task>? OnLoaded { get; set; }
3742

3843
/// <summary>
39-
/// Gets or sets the document loaded event callback.
44+
/// <para lang="zh">获得/设置 文档不支持回调事件</para>
45+
/// <para lang="en">Gets or sets the document not supported event callback</para>
4046
/// </summary>
4147
[Parameter]
4248
public Func<Task>? NotSupportCallback { get; set; }
4349

4450
/// <summary>
45-
/// Gets or sets whether to use Google Docs for PDF rendering. Default is false.
51+
/// <para lang="zh">获得/设置 是否使用 Google Docs 渲染 PDF</para>
52+
/// <para lang="en">Gets or sets whether to use Google Docs for PDF rendering</para>
4653
/// </summary>
4754
[Parameter]
4855
public bool UseGoogleDocs { get; set; }
4956

57+
/// <summary>
58+
/// <para lang="zh">获得/设置 是否显示工具栏与缩略图侧边栏</para>
59+
/// <para lang="en">Gets or sets whether to display toolbar and thumbnail sidebar</para>
60+
/// </summary>
61+
[Parameter]
62+
public bool ShowToolbar { get; set; } = true;
63+
5064
[Inject, NotNull]
5165
private NavigationManager? NavigationManager { get; set; }
5266

@@ -64,7 +78,6 @@ public partial class PdfViewer
6478
/// <inheritdoc/>
6579
/// </summary>
6680
/// <param name="firstRender"></param>
67-
/// <returns></returns>
6881
protected override async Task OnAfterRenderAsync(bool firstRender)
6982
{
7083
await base.OnAfterRenderAsync(firstRender);
@@ -78,7 +91,6 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
7891
/// <summary>
7992
/// <inheritdoc/>
8093
/// </summary>
81-
/// <returns></returns>
8294
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, new
8395
{
8496
LoadedCallaback = nameof(TriggerOnLoaded),
@@ -94,13 +106,28 @@ private string GetAbsoluteUri(string? url)
94106
}
95107

96108
var uri = NavigationManager.ToAbsoluteUri(url);
97-
return $"{uri.AbsoluteUri}#page={PageIndex}";
109+
var builder = new UriBuilder(uri.AbsoluteUri);
110+
builder.Fragment = BuildFragment(builder);
111+
return builder.Uri.ToString();
112+
}
113+
114+
private string BuildFragment(UriBuilder builder)
115+
{
116+
var fragments = new List<string>();
117+
if (PageIndex > 0)
118+
{
119+
fragments.Add($"page={PageIndex}");
120+
}
121+
if (!ShowToolbar)
122+
{
123+
fragments.Add("toolbar=0&navpanes=0");
124+
}
125+
return string.Join('&', fragments);
98126
}
99127

100128
/// <summary>
101129
/// Trigger OnLoaded callback when the PDF document is loaded.
102130
/// </summary>
103-
/// <returns></returns>
104131
[JSInvokable]
105132
public async Task TriggerOnLoaded()
106133
{
@@ -113,7 +140,6 @@ public async Task TriggerOnLoaded()
113140
/// <summary>
114141
/// Trigger NotSupportCallback when the PDF viewer does not support the document.
115142
/// </summary>
116-
/// <returns></returns>
117143
[JSInvokable]
118144
public async Task TriggerNotSupportCallback()
119145
{

0 commit comments

Comments
 (0)