mozilla/pdf.js · error · Error
Invalid page number.
Error message
Invalid page number.
What it means
Thrown by PDFViewer.currentPageNumber setter when the value is not an integer (Number.isInteger(val) is false). The setter routes to _setCurrentPageNumber which requires a valid 1-based page index.
Source
Thrown at web/pdf_viewer.js:519
* @type {boolean}
*/
get enableScripting() {
return !!this._scriptingManager;
}
/**
* @type {number}
*/
get currentPageNumber() {
return this._currentPageNumber;
}
/**
* @param {number} val - The page number.
*/
set currentPageNumber(val) {
if (!Number.isInteger(val)) {
throw new Error("Invalid page number.");
}
if (!this.pdfDocument) {
return;
}
if (this._currentPageNumber !== val) {
this.clearSelection();
}
// The intent can be to just reset a scroll position and/or scale.
if (!this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true)) {
console.error(`currentPageNumber: "${val}" is not a valid page.`);
}
}
/**
* @returns {boolean} Whether the pageNumber is valid (within bounds).
* @private
*/
_setCurrentPageNumber(val, resetCurrentPageView = false) {View on GitHub (pinned to 5903d58d58)
Solutions
- Pass an integer 1-based page number in [1, pagesCount].
- Round/validate input: const n = Math.round(raw); if (Number.isInteger(n)) viewer.currentPageNumber = n.
- Clamp against viewer.pagesCount before assigning.
Example fix
// before
viewer.currentPageNumber = scrollFraction * viewer.pagesCount;
// after
const n = Math.round(scrollFraction * viewer.pagesCount);
if (Number.isInteger(n) && n >= 1 && n <= viewer.pagesCount) {
viewer.currentPageNumber = n;
} Defensive patterns
Strategy: validation
Validate before calling
const n = Math.round(raw);
if (Number.isInteger(n) && n >= 1 && n <= viewer.pagesCount) {
viewer.currentPageNumber = n;
} Type guard
function isPositiveInt(v) {
return Number.isInteger(v) && v > 0;
} Prevention
- Round page numbers from scroll math before assigning.
- Clamp to [1, pagesCount].
- Validate deserialized page state on load.
When it happens
Trigger: Setting viewer.currentPageNumber = 1.5, NaN, a string, or undefined. Also from passing a float page number derived from scroll math without rounding.
Common situations: Computed page numbers from scroll position not rounded; deserialized state with bad values; UI controls sending non-integer input.
Related errors
- Invalid numeric scale.
- Invalid pages rotation angle.
- Invalid optionalContentConfigPromise: ${promise}
- Invalid scroll mode: ${mode}
- Invalid spread mode: ${mode}
AI-assisted analysis of mozilla/pdf.js@5903d58d58 (2026-08-13).
Data as JSON: /api/errors/f960b6fbbc21be30.
Report an issue: GitHub.