Skip to content

Commit e983dee

Browse files
committed
feat: 完成页面宽度功能
1 parent 7b2fbff commit e983dee

4 files changed

Lines changed: 49 additions & 9 deletions

File tree

src/components/BootstrapBlazor.PdfReader/PdfReader.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<div class="bb-view-icon bb-view-bar"><i class="fa-solid fa-bars"></i></div>
99
<span class="bb-view-subject">@_docTitle</span>
1010
</div>
11-
<div class="bb-view-body">
11+
<div class="@ViewBodyString">
1212
<input type="text" class="bb-view-num" value="1" /><span class="bb-view-slash">/</span><div>14</div>
1313
<div class="bb-view-divider"></div>
1414
<div class="bb-view-icon"><i class="fa-solid fa-minus"></i></div>

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

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ public partial class PdfReader
3939
.AddClassFromAttributes(AdditionalAttributes)
4040
.Build();
4141

42+
private string? ViewBodyString => CssBuilder.Default("bb-view-body")
43+
.AddClass("fit-page", IsFitToPage)
44+
.Build();
45+
4246
private string? _docTitle;
47+
private bool _isFitToPage;
4348

4449
/// <summary>
4550
/// <inheritdoc/>
@@ -51,6 +56,27 @@ protected override void OnParametersSet()
5156
_docTitle = Path.GetFileName(Url);
5257
}
5358

59+
/// <summary>
60+
/// <inheritdoc/>
61+
/// </summary>
62+
/// <param name="firstRender"></param>
63+
/// <returns></returns>
64+
protected override async Task OnAfterRenderAsync(bool firstRender)
65+
{
66+
await base.OnAfterRenderAsync(firstRender);
67+
68+
if (firstRender)
69+
{
70+
_isFitToPage = IsFitToPage;
71+
}
72+
73+
if (_isFitToPage != IsFitToPage)
74+
{
75+
_isFitToPage = IsFitToPage;
76+
await TriggerFit(IsFitToPage ? "fitToPage" : "fitToWidth");
77+
}
78+
}
79+
5480
/// <summary>
5581
/// <inheritdoc/>
5682
/// </summary>
@@ -65,16 +91,18 @@ protected override void OnParametersSet()
6591
public Task NavigateToPageAsync(int pageNumber) => InvokeVoidAsync("navigateToPage", Id, pageNumber);
6692

6793
/// <summary>
68-
///
94+
/// 适应页面宽度
6995
/// </summary>
7096
/// <returns></returns>
71-
public Task FitToPage() => InvokeVoidAsync("fitToPage", Id);
97+
public void FitToPage() => IsFitToPage = true;
7298

7399
/// <summary>
74-
/// 跳转到指定页码方法
100+
/// 适应文档宽度
75101
/// </summary>
76102
/// <returns></returns>
77-
public Task FitToWidth() => InvokeVoidAsync("fitToWidth", Id);
103+
public void FitToWidth() => IsFitToPage = false;
104+
105+
private Task TriggerFit(string methodName) => InvokeVoidAsync(methodName, Id);
78106

79107
/// <summary>
80108
/// 页面开始初始化时回调方法

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ export async function init(id, invoke, options) {
4242

4343
eventBus.on("pagesinit", function () {
4444
if (options.isFitToPage) {
45-
pdfViewer.currentScaleValue = 1.0;
45+
pdfViewer.currentScaleValue = "page-width";
4646
}
4747
else {
48-
pdfViewer.currentScaleValue = "page-width";
48+
pdfViewer.currentScaleValue = 1.0;
4949
}
5050
});
5151

@@ -79,14 +79,14 @@ export async function init(id, invoke, options) {
7979
Data.set(id, pdfViewer);
8080
}
8181

82-
export function fitToPage(id) {
82+
export function fitToWidth(id) {
8383
const pdfViewer = Data.get(id);
8484
if (pdfViewer) {
8585
pdfViewer.currentScaleValue = 1.0;
8686
}
8787
}
8888

89-
export function fitToWidth(id) {
89+
export function fitToPage(id) {
9090
const pdfViewer = Data.get(id);
9191
if (pdfViewer) {
9292
pdfViewer.currentScaleValue = "page-width";

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@
5050
justify-content: center;
5151
}
5252

53+
.bb-view-body.fit-page .bb-view-fit-page {
54+
display: none;
55+
}
56+
57+
.bb-view-body.fit-page .bb-view-fit-width {
58+
display: block;
59+
}
60+
61+
.bb-view-body .bb-view-fit-width {
62+
display: none;
63+
}
64+
5365
.bb-view-num, .bb-view-scale {
5466
width: 36px;
5567
text-align: center;

0 commit comments

Comments
 (0)