diff --git a/src/components/BootstrapBlazor.PdfViewer/BootstrapBlazor.PdfViewer.csproj b/src/components/BootstrapBlazor.PdfViewer/BootstrapBlazor.PdfViewer.csproj index bd509d97..e1e6b20a 100644 --- a/src/components/BootstrapBlazor.PdfViewer/BootstrapBlazor.PdfViewer.csproj +++ b/src/components/BootstrapBlazor.PdfViewer/BootstrapBlazor.PdfViewer.csproj @@ -1,7 +1,7 @@ - 9.0.2 + 9.0.3 diff --git a/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.cs b/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.cs index 5ff5cd98..07a4fb6f 100644 --- a/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.cs +++ b/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.cs @@ -39,7 +39,10 @@ public partial class PdfViewer /// Gets or sets whether to use Google Docs for PDF rendering. Default is false. /// [Parameter] - public bool UseGoogleDocs { get; set; } = false; + public bool UseGoogleDocs { get; set; } + + [Inject, NotNull] + private NavigationManager? NavigationManager { get; set; } private string? ClassString => CssBuilder.Default("bb-pdf-viewer-container") .AddClassFromAttributes(AdditionalAttributes) @@ -85,7 +88,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender) if (rerender) { - await InvokeVoidAsync("loadPdf", Id, _url); + await InvokeVoidAsync("loadPdf", Id, GetAbsoluteUri(_url)); } } @@ -97,9 +100,20 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { LoadedCallaback = nameof(TriggerOnLoaded), NotSupportCallback = nameof(TriggerNotSupportCallback), - Url + Url = GetAbsoluteUri(Url) }); + private string GetAbsoluteUri(string? url) + { + url ??= string.Empty; + if (string.IsNullOrEmpty(url) || !UseGoogleDocs) + { + return url; + } + var uri = NavigationManager.ToAbsoluteUri(url); + return uri.AbsoluteUri; + } + /// /// Trigger OnLoaded callback when the PDF document is loaded. /// diff --git a/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.js b/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.js index 78e176ee..85d4def6 100644 --- a/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.js +++ b/src/components/BootstrapBlazor.PdfViewer/PdfViewer.razor.js @@ -34,7 +34,7 @@ export async function loadPdf(id, url) { const useGoogleDocs = el.getAttribute('data-bb-google-docs') === 'true'; if (useGoogleDocs) { - url = `https://docs.google.com/viewer?url=${url}` + url = `https://docs.google.com/viewer?url=${url}&embedded=true` } viewer.src = url; }