Matterhorn 28-008 · PDF/UA-1 UA1:7.18.3-1
Page with annotations has no Tabs entry
Any page carrying annotations must declare a tab order. PDF/UA-1 requires /Tabs /S — tab order follows the structure tree.
The condition, as the protocol states it. “A page containing an annotation does not contain a Tabs entry.”
Matterhorn Protocol 1.1, checkpoint 28, index 28-008, section UA1:7.18.3-1. Software can decide this one on its own.
What a screen reader actually does
Keyboard focus moves between links and fields in the order they happen to appear in the annotation array, which is usually creation order, not reading order.
What is in the file
One entry on the page dictionary:
3 0 obj
<< /Type /Page
/Parent 2 0 R
/MediaBox [ 0 0 595 842 ]
/Annots [ 17 0 R 18 0 R 19 0 R ]
/Tabs /S % focus follows the structure tree
/Contents 4 0 R
>>
endobj
Condition 28-008 is /Tabs being absent on a page that has annotations. 28-009 is /Tabs present with a value other than /S.
Without it, the viewer falls back to the order of the /Annots array. That array is whatever order the producer wrote it in — typically the order fields were created, which on a form built by hand in Acrobat is the order somebody happened to click.
What the user experiences
Press Tab on a two-column form and focus jumps: first name, then a field at the bottom of the second column, then back up, then a link in the footer. There is no way to predict where focus goes next, and no way to know whether a field was skipped.
For anyone who cannot use a mouse — which includes screen reader users, people with motor impairments, and anybody on a keyboard-only setup — that turns a form into a puzzle.
The same applies to a page of links. Tabbing through an article should follow the article.
How to fix it free, in Acrobat Pro
The fastest route is in the form tooling, and it fixes every page at once:
Tools → Prepare Form.- In the Fields pane on the left, open the Options menu (the three dots or the sort control).
- Choose Order Tabs by Structure.
That writes /Tabs /S on every page carrying annotations. It is one command and it is the whole fix.
Per page, if you prefer: Tools → Prepare Form, then in the Page Thumbnails panel right-click a page → Page Properties → Tab Order tab → select Use Document Structure.
Upstream: InDesign’s export dialog has Use Structure for Tab Order under General. Tick it and the exported PDF has /Tabs /S on every page. Word sets it automatically when exporting with document structure tags.
The thing to check afterwards
/Tabs /S says “follow the structure tree”. If the structure tree is in the wrong order, focus now follows a wrong order reliably instead of a wrong order randomly — which is an improvement, but not the finish line.
So this fix belongs with two others: get the annotations into the structure tree at all (28-010 for widgets, 28-011 for links), and confirm the reading order is right (09-001).
Where Taggart differs
Taggart reports it once per page rather than once per annotation, with the count:
Page 4 contains annotations but has no /Tabs entry, so keyboard tab order is undefined.
The fix is purely mechanical — one name written to one key — so it ships in “Fix All Safe” and is applied to every page carrying annotations in a single pass. It handles 28-009 at the same time, overwriting /R or /C with /S.
Because nothing in the content stream changes, the page renders identically; the appearance gate measures 1.000000 on this fix.
How Taggart handles it
Taggart detects this condition automatically. It is reported as a blocker, with the page, the structure path and the object id of every occurrence.
The fix is Set tab order to structure order. It is mechanical, so “Fix All Safe” applies it in bulk with a diff and a single undo.
Whatever Taggart changes, the page still looks identical. Fixes edit the PDF object model, not the content streams, and every remediation is re-rendered and compared against the original at structural similarity ≥ 0.999 before you get the file back. A tool that quietly reflows your document is worse than no tool.
Frequently asked questions
What does /Tabs /S actually mean?
S means structure. It tells the viewer to move keyboard focus between annotations in the order they appear in the structure tree, rather than in the order they happen to sit in the page's annotation array. That array is usually creation order — the order somebody dropped fields onto the page.
Are the other values ever right?
/R is row order and /C is column order, and PDF/UA-1 accepts neither. They are geometric guesses, and in a right-to-left document they are actively wrong. Only /S is conformant.
Does this apply to pages with only links?
Yes. The condition is about any page containing annotations, and a link is an annotation. A page of body text with six links needs /Tabs /S just as much as a form does.
Is this really worth a blocker?
It is one entry per page and it decides whether a keyboard user can move through your form in a sensible order. Cost to fix: seconds. Cost of not fixing: the form is unusable without a mouse.
Where this sits in the standards
| Standard | Reference |
|---|---|
| Matterhorn Protocol 1.1 | Checkpoint 28 (Annotations), index 28-008 |
| PDF/UA-1 (ISO 14289-1) | Clause 7.18.3-1 |
| WCAG 2.1 | 2.4.3 Focus Order — Level A |
| EN 301 549 / Section 508 / ADA Title II | All three point at WCAG 2.1 Level AA for non-web documents, so a Level A or AA criterion here is in scope for each of them. |
Related conditions
- 28-009 A page containing an annotation has a Tabs entry with a value other than S /Tabs is present but set to /R (row order) or /C (column order) rather than /S (structure order).
- 28-005 A form field has neither a TU entry nor an alternative description The /TU tooltip is the accessible name of a PDF form field. Without it the field has no name at all — the visible label printed next to it is not connected to the control.
- 28-010 A widget annotation is not nested within a Form tag Every form control must sit inside a Form structure element.
- 28-011 A link annotation is not nested within a Link tag A link annotation must be a child of a Link structure element containing the link's text, joined by an object reference (/OBJR).
Other conditions in checkpoint 28
Checkpoint 28 covers annotations. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.
- 28-001 An annotation is not in correct reading order The annotation's position in the structure tree does not match where it appears on the page.
- 28-002 An annotation is not a direct child of an Annot structure element Non-widget, non-link annotations must sit inside an Annot structure element so they have a place in the reading order.
- 28-003 An annotation is used for visual formatting but is not tagged according to its semantic function A Square or Line annotation used to draw a box round a callout is decoration and should be artifacted, or tagged for what it actually means.
- 28-004 An annotation has neither a Contents entry nor an alternative description Every non-widget annotation needs an accessible description, either in its own /Contents or in the /Alt of the structure element that encloses it.
- 28-005 A form field has neither a TU entry nor an alternative description The /TU tooltip is the accessible name of a PDF form field. Without it the field has no name at all — the visible label printed next to it is not connected to the control.
- 28-006 An annotation with subtype undefined in ISO 32000 does not meet 7.18.1 A custom annotation subtype still has to be placed in the structure tree and described.
- 28-007 An annotation of subtype TrapNet exists TrapNet annotations are prepress artefacts and are forbidden in PDF/UA-1.
- 28-009 A page containing an annotation has a Tabs entry with a value other than S /Tabs is present but set to /R (row order) or /C (column order) rather than /S (structure order).
- 28-010 A widget annotation is not nested within a Form tag Every form control must sit inside a Form structure element.
- 28-011 A link annotation is not nested within a Link tag A link annotation must be a child of a Link structure element containing the link's text, joined by an object reference (/OBJR).
- 28-012 A link annotation does not include an alternate description in its Contents entry Link annotations need /Contents describing where the link goes.
- 28-013 An IsMap entry is true but the functionality is not provided in some other way A server-side image map requires pointing at a pixel, which is not possible without a mouse.
- 28-014 CT entry is missing from the media clip data dictionary The media clip's content type (/CT) is required so a processor knows what it is being asked to play.
- 28-015 Alt entry is missing from the media clip data dictionary Media clips require an /Alt array giving a text description.
- 28-016 File attachment annotations do not conform to 7.11 The file specification referenced by a FileAttachment annotation must carry both /F and /UF.
- 28-017 A PrinterMark annotation is included in the logical structure Crop marks and registration targets are production artefacts and must not appear in the structure tree.
- 28-018 The appearance stream of a PrinterMark annotation is not marked as Artifact The content inside a PrinterMark's appearance stream must itself be artifacted.
Check your own file. Taggart’s validator is free and unlimited — every machine-checkable Matterhorn condition, no watermark, no expiry, and no account needed up to 60 pages.
Verified against a real document on . Last updated .