diff --git a/src/core/worker.js b/src/core/worker.js index d301bf6f9..29aa80cf8 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -275,7 +275,7 @@ class WorkerMessageHandler { if (!fullReader.isStreamingSupported) { handler.send("DocProgress", { loaded, - total: Math.max(loaded, fullReader.contentLength || 0), + total: fullReader.contentLength, }); } diff --git a/src/display/api.js b/src/display/api.js index 004970e68..7ac3bc8f8 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2524,7 +2524,9 @@ class WorkerTransport { this.loadingTask.onProgress?.({ loaded, total, - percent: MathClamp(Math.round((loaded / total) * 100), 0, 100), + percent: total + ? MathClamp(Math.round((loaded / total) * 100), 0, 100) + : NaN, }); } diff --git a/web/app.js b/web/app.js index 89be5b082..02697b859 100644 --- a/web/app.js +++ b/web/app.js @@ -1255,6 +1255,10 @@ const PDFViewerApplication = { if (loadingTask !== this.pdfLoadingTask) { return undefined; // Ignore errors for previously opened PDF files. } + if (this.loadingBar) { + // Avoid the "indeterminate" loadingBar being displayed on error. + this.loadingBar.percent ||= 0; + } let key = "pdfjs-loading-error"; if (reason instanceof InvalidPDFException) { diff --git a/web/firefoxcom.js b/web/firefoxcom.js index bc90f67df..b12645574 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -577,11 +577,9 @@ class ExternalServices extends BaseExternalServices { pdfDataRangeTransport?.onDataProgressiveDone(); break; case "progress": - const percent = MathClamp( - Math.round((args.loaded / args.total) * 100), - 0, - 100 - ); + const percent = args.total + ? MathClamp(Math.round((args.loaded / args.total) * 100), 0, 100) + : NaN; viewerApp.progress(percent); break;