Matterhorn 28-016 · PDF/UA-1 UA1:7.18.7-1

PDF attachment with a missing or garbled name: /F and /UF

BlockerCheckpoint 28: AnnotationsWCAG 1.3.1 (A)

The file specification referenced by a FileAttachment annotation must carry both /F and /UF.

The condition, as the protocol states it. “File attachment annotations do not conform to 7.11.”

Matterhorn Protocol 1.1, checkpoint 28, index 28-016, section UA1:7.18.7-1. Software can decide this one on its own.

What a screen reader actually does

The attachment is announced with a mangled or missing filename.

What is in the file

A file attached as a comment is two objects. The FileAttachment annotation is the paperclip on the page. Its /FS entry points at a file specification, which names the file and holds the embedded bytes:

21 0 obj
<< /Type /Annot /Subtype /FileAttachment
   /Rect [ 500 700 520 720 ]
   /Name /Paperclip
   /Contents (Figures for table 2, CSV)
   /FS 22 0 R
>>
endobj

22 0 obj
<< /Type /Filespec
   /F  (figures-q1.csv)                 % byte string — the name for old readers
   /UF <FEFF 0066 0069 0067 …>          % text string — the name in Unicode
   /EF << /F 23 0 R >>                  % the embedded file itself
   /Desc (Quarterly figures behind table 2)
>>
endobj

PDF/UA-1 clause 7.18.7 says file attachment annotations shall conform to clause 7.11, and 7.11 says the file specification of an embedded file shall have both /F and /UF. This condition fires when the attachment’s specification is missing either one — or when there is no /FS at all.

Why one name is not enough

/F is the original entry, and it is a byte string. How those bytes become characters depends on the platform and the reader, and in practice a name in anything other than plain ASCII reaches different readers as different text. /UF, from PDF 1.7, is a proper text string — UTF-16 when it needs to be — and can hold דוח רבעוני.xlsx or Résumé.docx without loss.

So the two failure modes are different:

  • /UF missing. A modern reader falls back to /F. An ASCII name survives. A Hebrew, Arabic or accented one may come out as a run of Latin-1 punctuation, which is what a screen reader then reads, character by character.
  • /F missing. An older reader, or a tool that only knows /F, finds no name at all.

The paperclip itself is announced from the annotation’s /Contents (28-004 when that is missing). The file name is what the user meets when they go to open or save the attachment — in Acrobat’s Attachments pane, for example — and it is the name the file is saved under.

Where it comes from

Older producers that predate PDF 1.7 and write only /F.

Libraries that attach files with the minimum dictionary. A specification with /EF and /F is valid PDF and opens everywhere, so nothing prompts a developer to add the second name.

How to check it free

veraPDF reports it under clause 7.11 — its PDF/UA-1 profile has no separate test for 7.18.7, because 7.18.7 is defined as “conform to 7.11”. Its test also requires both names to be non-empty, which is slightly stricter than Taggart (below).

Acrobat shows attachment names but not which entry they came from, so it cannot show you this directly. What you can do is read the name in the Attachments pane. If a name that should be in Hebrew or with accents shows as punctuation, /UF is missing or wrong.

How to fix it free, in Acrobat Pro

Re-attach the file. Adobe documents the tool as (Adobe: Add attachments as comments):

  1. Right-click the existing attachment on the page and select Delete.
  2. Select Add a comment from the Quick action toolbar, then Attach file.
  3. Click where the attachment should go, and select the file.

Adobe does not document which entries the new file specification gets, so check the saved file with veraPDF or Taggart before calling it done. While you are there, Adobe’s page on adding attachments documents right-clicking a file in the Attachments pane and choosing Edit Description — not what this condition asks for, but a place to tell a reader what the file is rather than what it is called. If the document is tagged, the new annotation also needs to be in the tag tree; Adobe’s page on the Content and Tags panels documents Find → Unmarked Comments → Tag Element for that, which is 28-002.

What Taggart does

The check walks every FileAttachment annotation and reads its /FS:

The file specification of a FileAttachment annotation is missing /UF, so it does not conform to 7.11.

or, where there is nothing to read:

A FileAttachment annotation has no /FS file specification.

The same specification is also an embedded file, so it is reported under 21-001 as well. Both clear together.

The repair is embedded-file-names, and it is in Fix All Safe. It copies whichever name exists into the one that does not — /F into /UF or the reverse — and the change log says exactly what it wrote: copied /F to /UF for ‘figures-q1.csv’.

Its limits:

  • No name at all, no repair. When the specification has neither entry, there is nothing to copy, and the finding stays. Taggart does not make up a file name; somebody has to say what the file is called.
  • It copies, it does not translate. A name that is already mangled in /F is copied mangled into /UF. The finding clears; the name is still wrong. Read the name in the change log.
  • Presence, not content. The check asks whether each entry exists. An empty /UF () passes it; veraPDF’s 7.11 test would not.

How Taggart handles it

Taggart checks for this condition automatically and reports it as a blocker, with where in the file it found it.

The fix is Add F and UF to embedded file specifications. It is mechanical, so “Fix All Safe” applies it along with the others in one pass and lists what it changed. Your original file is never modified.

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

Why does a file need two names?

Because /F is a byte string, and how its bytes become characters depends on who is reading them — fine for ASCII, unreliable for a Hebrew, Arabic or accented name. /UF, added in PDF 1.7, is a text string that can hold any script. Old readers use /F, newer ones prefer /UF, and PDF/UA asks for both so every reader gets something.

How is this different from 21-001?

21-001 is about every embedded file specification in the document, including files attached at document level that no annotation shows. 28-016 is about the specification behind a FileAttachment annotation — the paperclip on the page. One bad specification behind a paperclip fails both, and Taggart reports both.

Can the fix go wrong?

It copies, it does not translate. If /F holds a name that was already mangled — a legacy code page read as something else — /UF receives the same mangled name, and the condition passes with a name nobody can read. Look at the name the change log reports before accepting it.

Does Acrobat write both entries when I attach a file?

Adobe's documentation of the Attach file tool does not say which entries it writes. Attach the file, then check the result with veraPDF or Taggart rather than assuming.

Where this sits in the standards

Standards this condition maps to
StandardReference
Matterhorn Protocol 1.1Checkpoint 28 (Annotations), index 28-016
PDF/UA-1 (ISO 14289-1)Clause 7.18.7-1
WCAG 2.11.3.1 Info and Relationships — Level A
EN 301 549 / Section 508 / ADA Title IIAll 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 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.

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.

Check a PDF free

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 .