{
  "method": {
    "corpus": "GovDocs1, the same 4,840 extracted PDFs as the metadata, redaction and split studies",
    "sampleRule": "of the files with 3 to 40 pages and at most 3 MB, the 400 with the lowest SHA-256 of their thread/name",
    "stamp": "Helvetica 12 pt, 24 pt from the edges, every page of the file, prefixed ZZPN so the stamp can be found when the output is read back",
    "herepdf": "HerePDF's own code (lib/pdfPageNumbers.js addPageNumbers: the visible frame, i.e. CropBox turned by /Rotate, mapped into user space)",
    "naive": "the same text drawn with pdf-lib against page.getWidth() and getHeight() (the unrotated MediaBox) in user space, as a short tutorial would",
    "readBack": "PDF.js text items in viewport coordinates; 'as intended' means level, inside the page, and within 2 pt of where the position names",
    "positionsPlaced": [
      "bottom-center",
      "top-right"
    ],
    "collisions": "on the original pages that have a text layer: a 12 pt two-digit number at each of the six positions overlaps the box of a text item PDF.js reports; pictures and drawn lines are not considered",
    "printedNumber": "a text item that is a bare number or roman numeral, or Page n / n of m, with its centre in the top or bottom tenth of the page",
    "sampleIdsSha256": "e770788a9755b782c04cf37f339ab063515cdcbe05aa851d6f4b65979588d54c",
    "tool": {
      "pdfLib": "2.11.1",
      "pdfjs": "6.3.289"
    },
    "generatedOn": "2026-10-18",
    "commit": "f9da062"
  },
  "tried": 400,
  "completed": 387,
  "notCompleted": {
    "failed": 13
  },
  "encrypted": 10,
  "damagedPage": 2,
  "pages": {
    "total": 5387,
    "text": 5186,
    "rotated": 397,
    "cropped": 262,
    "offset": 8,
    "missingBox": 3,
    "unusual": 512,
    "filesWithUnusualPages": 45,
    "filesWithRotatedPages": 30
  },
  "placement": {
    "bottom-center": {
      "herepdf": {
        "pages": 5387,
        "found": 5387,
        "level": 5387,
        "inside": 5387,
        "asIntended": 5387,
        "unusualPages": 512,
        "unusualAsIntended": 512,
        "filesWithAMisplacedPage": 0
      },
      "naive": {
        "pages": 5387,
        "found": 5227,
        "level": 4961,
        "inside": 5226,
        "asIntended": 4890,
        "unusualPages": 512,
        "unusualAsIntended": 15,
        "filesWithAMisplacedPage": 43
      }
    },
    "top-right": {
      "herepdf": {
        "pages": 5387,
        "found": 5387,
        "level": 5387,
        "inside": 5387,
        "asIntended": 5387,
        "unusualPages": 512,
        "unusualAsIntended": 512,
        "filesWithAMisplacedPage": 0
      },
      "naive": {
        "pages": 5387,
        "found": 5224,
        "level": 4930,
        "inside": 5152,
        "asIntended": 4896,
        "unusualPages": 512,
        "unusualAsIntended": 21,
        "filesWithAMisplacedPage": 40
      }
    }
  },
  "collisions": {
    "textPages": 5186,
    "byPosition": {
      "top-left": 124,
      "top-center": 916,
      "top-right": 65,
      "bottom-left": 279,
      "bottom-center": 445,
      "bottom-right": 138
    },
    "pagesWithPrintedNumber": 2556,
    "filesWithPrintedNumber": 242
  },
  "pageLabels": {
    "filesWithLabels": 155,
    "filesWithLabelsThatDifferFromPosition": 10,
    "keptAfterNumbering": 155
  }
}
