parallax/jsPDF · error · Error

Invalid argument passed to jsPDF.getPageInfo

Error message

Invalid argument passed to jsPDF.getPageInfo

What it means

Thrown by jsPDF.getPageInfo when pageNumberOneBased is NaN or not an integer. The guard is `isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0`, so non-numbers (coerced to NaN), fractional page numbers, Infinity, and undefined all fail. The page number is 1-based and must index an existing page.

Source

Thrown at src/jspdf.js:3316

  setFileId();

  var getEncryptor = function(objectId) {
    if (encryptionOptions !== null) {
      return encryption.encryptor(objectId, 0);
    }
    return function(data) {
      return data;
    };
  };

  //---------------------------------------
  // Public API

  var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(
    pageNumberOneBased
  ) {
    if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {
      throw new Error("Invalid argument passed to jsPDF.getPageInfo");
    }
    var objId = pagesContext[pageNumberOneBased].objId;
    return {
      objId: objId,
      pageNumber: pageNumberOneBased,
      pageContext: pagesContext[pageNumberOneBased]
    };
  });

  var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(
    objId
  ) {
    if (isNaN(objId) || objId % 1 !== 0) {
      throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");
    }
    for (var pageNumber in pagesContext) {
      if (pagesContext[pageNumber].objId === objId) {
        break;

View on GitHub (pinned to a3930ce03a)

Solutions

  1. Pass a 1-based integer within the existing page range: getPageInfo(pageNumber).
  2. Coerce and validate before calling: `const n = Number(x); if (Number.isInteger(n) && n >= 1 && n <= doc.getNumberOfPages()) ...`.
  3. Double-check you are not passing a 0-based index from an array loop.

Example fix

// before
const info = doc.getPageInfo(i); // i comes from a 0-based loop, may be 0
// after
const info = doc.getPageInfo(i + 1); // 1-based
Defensive patterns

Strategy: validation

Validate before calling

function safeGetPageInfo(doc, pageNumber) {
  const n = Number(pageNumber);
  if (!Number.isInteger(n) || n < 1 || n > doc.getNumberOfPages()) {
    throw new Error('page number must be a 1-based integer in range');
  }
  return doc.getPageInfo(n);
}

Type guard

function isPositiveInteger(v) { return Number.isInteger(v) && v >= 1; }

Prevention

When it happens

Trigger: Calling getPageInfo(undefined), getPageInfo(1.5), getPageInfo('abc'), getPageInfo(NaN), or getPageInfo(0) where 0 may be out of range; passing a float computed from a division.

Common situations: Off-by-one errors (0-based loop fed to a 1-based API); passing a string from user input without parsing; floats from average/ratio calculations; forgetting getPageInfo is 1-based.

Related errors


AI-assisted analysis of parallax/jsPDF@a3930ce03a (2026-08-13). Data as JSON: /api/errors/8b2d096bdb2d7f40. Report an issue: GitHub.