diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/PdfViewer/PdfViewer_Demo_05_Password_Protected_B_Prompt_For_Password.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/PdfViewer/PdfViewer_Demo_05_Password_Protected_B_Prompt_For_Password.razor
index 2611b5a7d..f09dfbfc4 100644
--- a/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/PdfViewer/PdfViewer_Demo_05_Password_Protected_B_Prompt_For_Password.razor
+++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/PdfViewer/PdfViewer_Demo_05_Password_Protected_B_Prompt_For_Password.razor
@@ -1,6 +1,8 @@
@if (showPdfViewer)
{
-
+
}
else
{
@@ -9,4 +11,6 @@ else
@code {
private bool showPdfViewer = false;
+
+ private void OnDocumentLoadError(string errorMessage) => showPdfViewer = false;
}
\ No newline at end of file
diff --git a/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js b/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js
index 3769918b8..b899d4b15 100644
--- a/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js
+++ b/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js
@@ -210,15 +210,30 @@ export function initialize(dotNetHelper, elementId, scale, rotation, url, passwo
// begin loading document
const loadingTask = pdfJS.getDocument(options);
+ let passwordPromptCanceled = false;
// handle password only when required (optional password support)
loadingTask.onPassword = function (updatePassword, reason) {
+ if (passwordPromptCanceled) return;
+
if (reason === pdfJS.PasswordResponses.NEED_PASSWORD) {
// only prompt if PDF actually requires password
const password = prompt("This PDF is password protected. Enter password:");
+ if (password === null) {
+ passwordPromptCanceled = true;
+ loadingTask.destroy();
+ dotNetHelper.invokeMethodAsync('DocumentLoadError', "Password prompt canceled.");
+ return;
+ }
updatePassword(password);
} else if (reason === pdfJS.PasswordResponses.INCORRECT_PASSWORD) {
const password = prompt("Incorrect password. Please try again:");
+ if (password === null) {
+ passwordPromptCanceled = true;
+ loadingTask.destroy();
+ dotNetHelper.invokeMethodAsync('DocumentLoadError', "Password prompt canceled.");
+ return;
+ }
updatePassword(password);
}
};