Skip to content

Commit 07341ea

Browse files
committed
feat: 增加 UseGoogleDocs 方法
1 parent c20963a commit 07341ea

3 files changed

Lines changed: 35 additions & 8 deletions

File tree

src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
@inherits BootstrapModuleComponentBase
33
@attribute [JSModuleAutoLoader("./_content/BootstrapBlazor.PdfViewer/PdfViewer.razor.js", JSObjectReference = true, AutoInvokeDispose = false)]
44

5-
<div @attributes="AdditionalAttributes" id="@Id" data-bb-url="@Url" class="@ClassString" style="@StyleString"></div>
5+
<div @attributes="AdditionalAttributes" id="@Id" data-bb-google-docs="@UseGoogleDocsString" class="@ClassString" style="@StyleString"></div>

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ public partial class PdfViewer
3535
[Parameter]
3636
public Func<Task>? NotSupportCallback { get; set; }
3737

38+
/// <summary>
39+
/// Gets or sets whether to use Google Docs for PDF rendering. Default is false.
40+
/// </summary>
41+
[Parameter]
42+
public bool UseGoogleDocs { get; set; } = false;
43+
3844
private string? ClassString => CssBuilder.Default("bb-pdf-viewer-container")
3945
.AddClassFromAttributes(AdditionalAttributes)
4046
.Build();
@@ -44,6 +50,9 @@ public partial class PdfViewer
4450
.Build();
4551

4652
private string? _url;
53+
private bool _useGoogleDocs;
54+
55+
private string? UseGoogleDocsString => UseGoogleDocs ? "true" : null;
4756

4857
/// <summary>
4958
/// <inheritdoc/>
@@ -57,11 +66,25 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
5766
if (firstRender)
5867
{
5968
_url = Url;
69+
_useGoogleDocs = UseGoogleDocs;
70+
return;
6071
}
6172

73+
var rerender = false;
6274
if (_url != Url)
6375
{
6476
_url = Url;
77+
rerender = true;
78+
}
79+
80+
if (_useGoogleDocs != UseGoogleDocs)
81+
{
82+
_useGoogleDocs = UseGoogleDocs;
83+
rerender = true;
84+
}
85+
86+
if (rerender)
87+
{
6588
await InvokeVoidAsync("loadPdf", Id, _url);
6689
}
6790
}
@@ -73,7 +96,8 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
7396
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, new
7497
{
7598
LoadedCallaback = nameof(TriggerOnLoaded),
76-
NotSupportCallback = nameof(TriggerNotSupportCallback)
99+
NotSupportCallback = nameof(TriggerNotSupportCallback),
100+
Url
77101
});
78102

79103
/// <summary>

src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ export async function init(id, invoke, options) {
88
const pdfViewer = { el, invoke, options };
99
Data.set(id, pdfViewer);
1010

11-
const url = el.getAttribute('data-bb-url');
12-
await loadPdf(id, url);
11+
await loadPdf(id, options.url);
1312
}
1413

1514
export async function loadPdf(id, url) {
@@ -21,6 +20,9 @@ export async function loadPdf(id, url) {
2120
return;
2221
}
2322

23+
delete pdfViewer.frame;
24+
el.innerHTML = '';
25+
2426
if (url) {
2527
const { frame } = pdfViewer;
2628
const viewer = frame || createFrame(el);
@@ -29,12 +31,13 @@ export async function loadPdf(id, url) {
2931
invoke.invokeMethodAsync(options.loadedCallaback);
3032
};
3133
}
34+
35+
const useGoogleDocs = el.getAttribute('data-bb-google-docs') === 'true';
36+
if (useGoogleDocs) {
37+
url = `http://docs.google.com/viewer?url=${url}`
38+
}
3239
viewer.src = url;
3340
}
34-
else {
35-
delete pdfViewer.frame;
36-
el.innerHTML = '';
37-
}
3841
}
3942

4043
const createFrame = el => {

0 commit comments

Comments
 (0)