Matterhorn 01-003 · PDF/UA-1 UA1:7.1-1

An artifact opened inside real content

Blocker Checkpoint 01: Real content tagged WCAG 1.3.1 (A)

A BMC/BDC artifact sequence has been opened while a marked-content sequence for real content is still open. Artifacts and real content may not be nested inside one another.

The condition, as the protocol states it. “Content marked as Artifact is present inside tagged content.”

Matterhorn Protocol 1.1, checkpoint 01, index 01-003, section UA1:7.1-1. Software can decide this one on its own.

What a screen reader actually does

Behaviour is undefined and processor-dependent: some readers drop the surrounding content, others announce the artifact as part of it.

What is in the file

Page content is a sequence of marked-content operators. Real content opens with BDC naming a structure element and an MCID; an artifact opens with BDC naming /Artifact; both close with EMC.

They may follow one another. They may not contain one another.

/P <</MCID 4>> BDC
  BT ... (Revenue rose 14% over the year.) Tj ET
  /Artifact <</Type /Pagination>> BDC     ← opened while /P is still open
    BT ... (page 3) Tj ET
  EMC
EMC

That is this condition. ISO 32000-1 is explicit that these sequences nest properly with respect to each other and that an artifact is not part of the logical structure — so an artifact inside a structure element is a contradiction the format has no resolution for.

The mirror image, real content opened inside an artifact, is 01-004.

What the user hears

It depends on the reader, and that is the problem.

The specification gives a conforming processor no defined behaviour here, so implementations differ:

  • Some drop the whole enclosing sequence. The artifact is discarded, and the paragraph it was inside goes with it — a sentence disappears from the document with nothing to indicate it was ever there.
  • Some announce the artifact as content. The page number is read in the middle of the sentence: “Revenue rose 14% over the year page 3 and the board approved”.
  • Some handle it the way you would hope, treating the artifact as an artifact and the paragraph as a paragraph.

You cannot test your way out of this. Whatever your reader does, another reader does something else, and the document behaves differently for two people who both did everything right.

Where it comes from

Direct content-stream generation. A library writing operators itself, with a bug in how it tracks what is open. This is the common case and it is usually systematic — if it happens once it happens on every page.

Post-hoc insertion. A watermark, a header, a Bates number or a redaction mark stamped into a stream that was already correct, by a tool that appended its operators without checking what sequence was open at that point.

Merging. Two content streams concatenated where the first did not close cleanly.

All three produce the same file and all three are invisible on the page, because none of this affects what is drawn.

How to check it free

veraPDF is the reliable answer. It reports it against clause 7.1 and gives the page and the operator position.

Acrobat Pro’s Content panelView → Show/Hide → Navigation Panes → Content — shows marked-content sequences per page, and the nesting is visible if you expand it. Nothing flags it, so you are reading structure by eye.

Acrobat’s Accessibility Check does not test for it.

By hand, with qpdf to make the streams readable:

qpdf --qdf --object-streams=disable document.pdf readable.pdf

Then look for /Artifact appearing between a BDC and its matching EMC. Tedious on a long document and decisive on a short one.

How to fix it free, in Acrobat Pro

There is no interface control for this, because it is below the structure tree.

Preflight is the realistic route: Print Production → Preflight, and look for fixups that rebuild or normalise marked content. Results vary by version and by how the file went wrong.

Otherwise, fix the producer. This condition is nearly always systematic rather than incidental — a bug in whatever wrote the stream — so a file with one instance usually has hundreds, and repairing the output by hand is repairing a symptom on every page while the next export reintroduces it.

If the tool that stamped the watermark is the cause, stamp it before tagging rather than after, or use a tool that opens its own sequence at the top level.

Where Taggart differs

artifact-nesting is a safe fix and runs in the batch. What it does is narrow and worth stating exactly: it closes the open sequence before the artifact begins and reopens it afterwards, so the artifact becomes a sibling rather than a child. No operator that paints anything is touched, no coordinate changes, and the appearance gate confirms the rendering is identical to the pixel.

What it does not do is decide whether the thing marked as an artifact should have been one. A page number inside a paragraph is a nesting error; a heading that somebody marked as an artifact is a content error, and un-nesting it correctly still leaves it out of the reading order. Taggart repairs the nesting and reports the artifact’s type and text so that second question can be asked:

47 artifact sequences were nested inside content and have been moved beside it. Their types: Pagination ×44, Layout ×3. Text sampled: “page 3”, “page 4”, “Annual Report”.

Forty-four page numbers is a generator bug. Three Layout artifacts carrying the words Annual Report is worth a look.

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 Repair artifact / real-content nesting. 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

How is this different from 01-004?

Direction. This one is an artifact opened while real content is still open — the artifact is inside the paragraph. 01-004 is the reverse, real content opened inside an artifact, and there the artifact swallows the content and readers skip it entirely. Same rule, opposite nesting, different damage.

Can I see it in the Tags panel?

No, and that is what makes it awkward. The Tags panel shows the structure tree; this is in the content stream, one level below. Acrobat's Content panel shows the marked-content sequences, and the nesting is visible there if you expand far enough, but nothing highlights it.

Does it actually break anything, or is it pedantry?

It breaks something, and the specific breakage depends on the reader, which is worse than a consistent failure. Some drop the surrounding content along with the artifact. Some announce the artifact as part of the paragraph — so a page number lands in the middle of a sentence. Some handle it correctly. You cannot test your way to confidence on one machine.

What produces it?

Almost always a generator writing the content stream directly, or a tool that inserted something — a watermark, a header, a redaction mark — into a stream that was already correct without closing what was open first.

Where this sits in the standards

Standards this condition maps to
StandardReference
Matterhorn Protocol 1.1 Checkpoint 01 (Real content tagged), index 01-003
PDF/UA-1 (ISO 14289-1) Clause 7.1-1
WCAG 2.1 1.3.1 Info and Relationships — 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.

Other conditions in checkpoint 01

Checkpoint 01 covers real content tagged. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.

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.

Check a PDF free

Verified against a real document on . Last updated .