Matterhorn 28-018 · PDF/UA-1 UA1:7.18.8-2
Printer's mark appearance not marked as an artifact
The content inside a PrinterMark's appearance stream must itself be artifacted.
The condition, as the protocol states it. “The appearance stream of a PrinterMark annotation is not marked as Artifact.”
Matterhorn Protocol 1.1, checkpoint 28, index 28-018, section UA1:7.18.8-2. Software can decide this one on its own.
What a screen reader actually does
Printer marks leak into the content stream as untagged content.
The drawing, not the annotation
A PrinterMark annotation draws its crop mark, registration target or colour bar with an appearance stream — a small form XObject, referenced from /AP, whose content stream holds the painting operators. PDF/UA-1 clause 7.18.8 wants that painting marked as an artifact, the same way a running header on a page is:
32 0 obj % the mark's normal appearance, /AP /N
<< /Type /XObject /Subtype /Form /BBox [ 0 0 20 20 ] /Length … >>
stream
/Artifact BMC % ← this condition asks for these two lines
0 0 0 RG 0.25 w
0 10 m 20 10 l S % horizontal hairline
10 0 m 10 20 l S % vertical hairline
EMC
endstream
endobj
Without the /Artifact … EMC pair, the two hairlines are painting that is neither tagged content nor an artifact — the same kind of loose content as 01-005, inside an annotation instead of on the page.
Condition 28-017 is the other half of the clause: the annotation itself must not be referenced from the structure tree. A file can fail either without the other, and fixing one does nothing for the other.
Why a producer misses it
Most annotation appearances need no marking at all. A comment’s icon, a link’s border or a form field’s box are drawn in appearance streams that are not page content, and producers leave them unmarked. Printer’s marks are the exception PDF/UA-1 singles out, so a producer that is careful about artifacts on the page — headers, footers, page numbers — can still write printer’s marks with bare operators, simply because the rule for them is unlike the rule for every other annotation.
What it costs a reader is indirect, and it is the same cost as any loose content: software that sorts everything painted into tagged, artifact or unaccounted for finds these marks in the third pile, and has to guess what they are. The clause exists so that nothing has to guess about a crop mark.
How to check it free
veraPDF will not tell you. Its PDF/UA-1 profile has a single test under clause 7.18.8 — “A PrinterMark annotation is included in logical structure” — which is 28-017. No test in the profile reads a printer’s mark’s appearance stream.
Acrobat has no documented view of the marked content inside an annotation’s appearance.
A few lines of Python with the free pikepdf library will show you the start of each mark’s appearance stream:
import pikepdf
with pikepdf.open("proof.pdf") as pdf:
for number, page in enumerate(pdf.pages, start=1):
for annot in page.get("/Annots", []):
if annot.get("/Subtype") != "/PrinterMark":
continue
normal = annot.get("/AP", {}).get("/N")
if isinstance(normal, pikepdf.Stream):
print(number, annot.get("/MN"), normal.read_bytes()[:60])
A stream that does not begin with /Artifact BMC (or /Artifact <<…>> BDC) and end with EMC is the condition.
How to fix it free
Acrobat has no documented way to edit an annotation’s appearance stream, so the free repair is either at object level or upstream.
Wrap the stream. Wrapping changes no pixel — BMC and EMC paint nothing — and is the whole repair:
with pikepdf.open("proof.pdf") as pdf:
for page in pdf.pages:
for annot in page.get("/Annots", []):
normal = annot.get("/AP", {}).get("/N")
if annot.get("/Subtype") == "/PrinterMark" and isinstance(normal, pikepdf.Stream):
body = normal.read_bytes()
if not body.lstrip().startswith(b"/Artifact"):
normal.write(b"/Artifact BMC\n" + body + b"\nEMC\n")
pdf.save("proof-fixed.pdf")
Or drop the marks from the edition people read. A file meant for the screen does not need registration targets. If the marks were added at export, export without them; if they were added afterwards, keep the print-ready file for the press and publish one without.
Adobe notes that a PDF exported from InDesign can carry printer marks on a separate layer or directly on the page — the Layers tab shows which — and documents Acrobat’s own way of adding them as All tools → Use print production → Add printer marks (Adobe: Printer marks and hairlines). Neither note says whether the marks are written as PrinterMark annotations, which are the only kind this condition is about. The script above lists the ones that are.
What Taggart does
The check reads each PrinterMark annotation’s normal appearance stream and reports it when the stream contains no /Artifact marked-content tag:
The appearance stream of a PrinterMark annotation on page 1 does not mark its content as an /Artifact.
It is a presence test: a stream with an /Artifact tag anywhere in it passes, whether or not every painting operator is inside it. It reads one stream: a mark whose normal appearance is a set of named states rather than a single stream is reported whatever the states contain. Like the 28-017 check, it reports marks that are hidden or outside the crop box as well.
There is no repair for this condition. Taggart’s printer-mark repair, printermark-artifact, removes the annotation from the structure tree — that is 28-017 — and does not open the appearance stream. On a file with both conditions, Fix All Safe clears 28-017 — subject to the caveat on that page — and leaves this finding standing. Wrap the stream as above, or remove the marks, and check again.
How Taggart handles it
Taggart checks for this condition automatically and reports it as a blocker, with where in the file it found it.
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
If the printer's mark is not in the tag tree, why does its drawing matter?
Because they are two different things in the file. 28-017 is about the annotation being referenced from the structure tree. This condition is about the marks it paints: the appearance stream is a content stream like any other, and painting in it that is neither tagged nor marked as an artifact is content nobody has accounted for. PDF/UA-1 asks for both halves.
veraPDF passed my file. Is it fine?
Not necessarily. veraPDF's PDF/UA-1 profile has one test under clause 7.18.8, and it is about the structure tree. Nothing in it reads the appearance stream, so a clean veraPDF report says nothing either way about this condition.
Does Taggart fix this?
No. The printer-mark repair takes the annotation out of the structure tree, which is 28-017, and leaves the appearance stream as it was. On a file with both conditions, Fix All Safe clears 28-017 and this finding remains. Wrap the stream yourself, as shown on this page, or remove the marks.
Where this sits in the standards
| Standard | Reference |
|---|---|
| Matterhorn Protocol 1.1 | Checkpoint 28 (Annotations), index 28-018 |
| PDF/UA-1 (ISO 14289-1) | Clause 7.18.8-2 |
| 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. |
Related conditions
- 28-017 A PrinterMark annotation is included in the logical structureCrop marks and registration targets are production artefacts and must not appear in the structure tree.
- 01-005 Content is neither marked as Artifact nor tagged as real contentEvery text-showing, image-painting and path-painting operator on a page must sit either inside a marked-content sequence that maps to the structure tree, or inside an artifact sequence. Content that is in neither is orphaned.
- 01-002 Real content marked as artifactContent that carries meaning has been marked as an artifact, which removes it from the structure tree entirely. This is the most damaging single mistake in PDF remediation because the content becomes invisible rather than merely mis-labelled.
- 28-007 An annotation of subtype TrapNet existsTrapNet annotations are prepress artefacts and are forbidden in PDF/UA-1.
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 orderThe 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 elementNon-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 functionA 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 descriptionEvery 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 descriptionThe /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.1A custom annotation subtype still has to be placed in the structure tree and described.
- 28-007 An annotation of subtype TrapNet existsTrapNet annotations are prepress artefacts and are forbidden in PDF/UA-1.
- 28-008 A page containing an annotation does not contain a Tabs entryAny page carrying annotations must declare a tab order. PDF/UA-1 requires /Tabs /S — tab order follows the structure tree.
- 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 tagEvery form control must sit inside a Form structure element.
- 28-011 A link annotation is not nested within a Link tagA 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 entryLink annotations need /Contents describing where the link goes.
- 28-013 An IsMap entry is true but the functionality is not provided in some other wayA 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 dictionaryThe 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 dictionaryMedia clips require an /Alt array giving a text description.
- 28-016 File attachment annotations do not conform to 7.11The file specification referenced by a FileAttachment annotation must carry both /F and /UF.
- 28-017 A PrinterMark annotation is included in the logical structureCrop marks and registration targets are production artefacts and must not appear in the structure tree.
Check your own file. Taggart’s validator is free and unlimited — 75 of the 87 Matterhorn conditions software can decide, with the other 12 listed for you to confirm; no watermark, no expiry, and no account needed up to 60 pages.
Checked with Taggart on a generated file that fails this condition on . The Acrobat steps follow Adobe’s documentation and were not walked through by hand. Last updated .