Accessible PDF from LaTeX

2026-02-24 → 2026-02-24

How to make LaTeX CVs produce tagged, screen-reader-friendly PDFs – relevant for ADA Title II compliance (deadline April 2026).

Most LaTeX CVs (pdflatex + article class) produce untagged PDFs with no structure metadata, which are invisible to screen readers. The fix is minimal – a few lines added to your preamble, switch to LuaLaTeX, and your existing layout is preserved.

Validated with PDFix PDF/UA validator.

The fix (5 changes)#

1. Add \DocumentMetadata before \documentclass#

This must be the very first thing in your .tex file, before \documentclass.

\DocumentMetadata{
  lang = en,
  pdfstandard = a-2b,
  pdfstandard = ua-1,
  pdfversion = 2.0,
  testphase = {phase-II},
}
\documentclass[10pt]{article}  % your existing documentclass

2. Swap font packages (LuaLaTeX requires OpenType fonts)#

LuaLaTeX uses OpenType fonts via fontspec instead of the old Type1 font system.

% REMOVE these:
%   \usepackage[utf8]{inputenc}
%   \usepackage[T1]{fontenc}
%   \usepackage[sc]{mathpazo}

% ADD these:
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}    % Palatino equivalent
\setmonofont{Inconsolatazi4-Regular.otf}[BoldFont=Inconsolatazi4-Bold.otf]  % optional, for \texttt

Common font substitutions: - mathpazo / Palatino -> TeX Gyre Pagella - Times / mathptmx -> TeX Gyre Termes - Computer Modern -> Latin Modern (already default in LuaLaTeX) - Helvetica / helvet -> TeX Gyre Heros

3. Add metadata to \hypersetup#

\hypersetup{
  pdftitle={Curriculum Vitae - Your Name},
  pdfauthor={Your Name},
  pdfsubject={Academic CV},
  pdflang={en},
  pdfdisplaydoctitle=true,    % required for PDF/UA
  % ... your existing options (colorlinks, etc.)
}

pdfdisplaydoctitle=true is required by PDF/UA – it tells PDF viewers to show the document title in the title bar instead of the filename.

4. Replace symbol fonts that lack Unicode mappings#

Packages like marvosym produce glyphs that can’t be mapped to Unicode, which fails PDF/UA validation. Use fontawesome5 instead:

% REMOVE:
%   \usepackage{marvosym}   % \Letter, \Mundus lack Unicode mapping

% ADD:
\usepackage{fontawesome5}   % \faEnvelope, \faGlobe, \faOrcid, etc.

Icon examples: - \faEnvelope – envelope (email) - \faGlobe – globe (website) - \faOrcid – ORCID logo - \faGithub – GitHub logo - \faPhone – phone

5. Build with LuaLaTeX#

latexmk -lualatex cv

Or in a Makefile:

cv.pdf: cv.tex
    latexmk -lualatex cv

How to verify#

What this produces#

What it doesn’t fix#

Requirements#

Tested with#

Receive my updates

YY's Random Walks — Science, academia, and occasional rabbit holes.

YY's Bike Shed — Sustainable mobility, urbanism, and the details that matter.

×