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
77namespace 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>
1213public 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