The invisible text rendering mode
Text drawn in the rendering mode that paints no glyphs at all, on a page that also carries visible text.
How the text is hidden
The Tr operator selects how glyphs are painted. Mode 3 means neither fill nor stroke — draw nothing — and mode 7 adds the text to the clipping path without painting it. Either way the show operators still run, the advance is still consumed, and the string is still in the content stream. This is a declaration of intent to draw nothing, which is why the parser treats it as stronger evidence than any geometric or colour inference.
Why a model still reads it
Rendering mode is a painting instruction. Extraction reads the string the operator was handed, not what the renderer was told to do with it.
What we do about it
The parser sets renderModeInvisible when the mode is 3 or 7 and returns invisibleReason: 'hidden-attr'. The rule pdf-render-mode-3 additionally requires that the page carry visible text above the share written into the rule's predicate, and that the render has not already resolved the run as absent — high, action flag. Deliberately flag and never strip: the same mode is how a searchable scan's OCR layer is drawn, and removing it would empty every scanned document.
How often it fires
0% of 400 real UK public-sector contract PDFs (Contracts Finder, 2019–2023) — Word, Adobe, Nitro, office copiers, measured 2026-08-23.
This is an alert-volume number and nothing else. It says how often the alarm sounds on documents as found — not how often it is right, and not whether what it found was harmless. Documents as found may themselves carry concealment. Read it against the population named above rather than as a property of documents in general.
Seen in the wild
A benchmark of 29,322 PDFs built from 4,983 real documents, injecting payloads through invisible render mode, tiny fonts, white and low-contrast text and off-page placement — every one of which is a technique we detect.
Check your own file
Three commands: a key, credit, a verdict.
Start with the API