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

  1. Pass an integer 1-based page number in [1, pagesCount].
  2. Round/validate input: const n = Math.round(raw); if (Number.isInteger(n)) viewer.currentPageNumber = n.
  3. 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

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


AI-assisted analysis of mozilla/pdf.js@5903d58d58 (2026-08-13). Data as JSON: /api/errors/f960b6fbbc21be30. Report an issue: GitHub.