{
  "markdown": "# ADA PDF Compliance\n\nA [Claude Code](https://claude.ai/code) plugin that analyzes and fixes PDF accessibility for ADA/Section 508/PDF-UA compliance.\n\n## The Problem\n\nPublic institutions — universities, government agencies, courts — are required by law to make their digital documents accessible to people with disabilities. For PDFs, this means complying with:\n\n- **Section 508** of the Rehabilitation Act — requires WCAG 2.0 Level AA conformance for all electronic documents published by federally funded organizations\n- **ADA Title II** — requires state and local governments (including public universities) to make their services accessible, which courts have interpreted to include digital documents\n- **PDF/UA (ISO 14289)** — the technical standard defining what an \"accessible PDF\" actually looks like at the file format level\n\nIn practice, most PDFs exported from Google Slides, PowerPoint, or Word are **not compliant**. They're missing critical accessibility metadata that screen readers need: no document language set, no structure tree (so headings and lists are invisible to assistive tech), no alt text on images, raw URLs instead of descriptive link text, no bookmarks for navigation.\n\nFixing these issues manually in Adobe Acrobat is tedious and error-prone — especially for course materials where faculty may need to remediate dozens of slide decks per semester.\n\n## What Compliance Requires\n\nA fully ADA-compliant PDF needs all of the following:\n\n| Requirement | Why It Matters | Status Without This Plugin |\n|-------------|---------------|---------------------------|\n| **Document language** (`/Lang`) | Screen readers need to know which language to use for pronunciation | Usually missing |\n| **Tagged PDF** with structure tree | Defines headings, paragraphs, lists, figures -- the semantic structure screen readers navigate by | Missing on most Google Slides/PPT exports |\n| **Meaningful document title** | Displayed in browser tabs and announced by screen readers (instead of a filename) | Often just the filename |\n| **Display title enabled** | PDF viewer shows the title bar, not the filename | Almost never set |\n| **Alt text on all images** | Screen readers read this aloud to describe images to blind users | Almost never present |\n| **Embedded fonts** | Ensures text renders correctly on all systems | Usually fine, but not always |\n| **Heading hierarchy** (H1 > H2 > H3) | Screen reader users navigate by headings -- skipped levels are confusing | Requires structure tree first |\n| **Descriptive link text** | \"DHS AI use case inventory\" instead of \"https://www.dhs.gov/ai/...\" | Almost never set |\n| **Bookmarks** for long documents | Screen reader users use bookmarks to jump between sections | Missing on exports |\n| **PDF/UA identifier** | Declares the PDF claims compliance with the PDF/UA standard | Never set on exports |\n| **Table headers** marked as `<TH>` | Screen readers announce column/row headers when navigating tables | Requires structure tree |\n\n## How This Plugin Solves It\n\nPoint it at a PDF (or folder of PDFs) and it **audits** every compliance requirement above, then **auto-fixes** everything it can:\n\n```\n/ada-pdf-compliance:ada-check path/to/slides.pdf\n```\n\n### What gets auto-fixed (no human input needed)\n\n- Document title (inferred from page 1 content)\n- Document language (defaults to `en-US`)\n- Display title flag\n- PDF/UA identifier in XMP metadata\n- Tagged PDF flag\n- Bookmarks generated from page titles (101 bookmarks for a 102-page slide deck)\n\n### What Claude generates (AI-assisted)\n\n- **Alt text** for every image -- Claude reads each page visually and writes concise descriptions\n- **Link descriptions** -- Claude reads the surrounding page context and the URL to generate meaningful text (e.g., \"YouTube: Technical Due Process lecture\" instead of a raw URL)\n- **Document subject** -- inferred from the content\n\n### What requires Adobe Acrobat (manual step)\n\n- **Structure tree** -- the most important accessibility feature. For untagged PDFs (most Google Slides exports), the structure tree defines all headings, lists, figures, and reading order. Acrobat Pro's Autotag does this well. The plugin can also generate one automatically via pikepdf (see Path B below).\n\n## Install\n\n### From the Claude Code Plugin Marketplace\n\n```\n/plugin install ada-pdf-compliance\n```\n\n### Local Install (for development)\n\n```bash\ngit clone https://github.com/anitasrinivasan/ada-pdf-compliance.git\nclaude --plugin-dir ./ada-pdf-compliance\n```\n\n### Python Dependencies\n\n```bash\npip install pypdf            # Required\npip install pikepdf          # Optional — enables full structure tree generation\n```\n\n## Usage\n\nInvoke the skill directly:\n\n```\n/ada-pdf-compliance:ada-check path/to/document.pdf\n```\n\nBatch-process a folder:\n\n```\n/ada-pdf-compliance:ada-check path/to/folder/\n```\n\nOr just describe what you want — Claude will invoke the skill automatically:\n\n> \"Make this PDF ADA compliant\"\n> \"Check the accessibility of my slides\"\n> \"Fix the metadata on all PDFs in this folder\"\n\n## Two Processing Paths\n\nWhen a PDF has no structure tree (common with Google Slides exports), you're offered a choice:\n\n**Path A — Acrobat + plugin (default)** — You first run Acrobat Pro's Autotag to generate a structure tree, then provide the tagged file back. The plugin applies all remaining fixes (metadata, bookmarks, link descriptions, alt text, PDF/UA flag) on top of Acrobat's structure tree. Output opens everywhere including macOS Preview.\n\n**Path B — Full automation (opt-in)** — Uses `pikepdf` to generate a complete structure tree automatically: headings via font-size heuristics, paragraphs, bullet lists with proper Lbl/LBody structure, tables with TH/TD header detection, and `/Figure` tags for images. Also injects BDC/EMC marked content operators, tags link annotations, and sets tab order to structure order on all pages. All metadata fixes applied in a single pass. Output works in browsers and Acrobat but not macOS Preview.\n\n## Requirements\n\n- [Claude Code](https://claude.ai/code) v1.0.33+\n- Python 3.8+\n- `pypdf` (required): `pip install pypdf`\n- `pikepdf` (optional, for Path B): `pip install pikepdf`\n\n## Example Output\n\n### Path A (Acrobat + plugin)\n\n```\n## Auto-Fixed\n- [x] Structure tree (Acrobat Autotag)\n- [x] Document title set to \"Spring 2026 Class 2: Technical Due Process\"\n- [x] Language set to en-US\n- [x] Tagged PDF flag set\n- [x] Display title enabled\n- [x] PDF/UA identifier added\n- [x] Bookmarks generated for 101 pages\n- [x] Descriptive text added to 7 links\n- [x] Alt text added to 12 figures\n\n## Needs Human Review\n- [ ] Verify heading hierarchy matches document structure\n- [ ] Review alt text accuracy for each image\n- [ ] Check reading order on multi-column slides\n\nSaved: document_accessible.pdf\n```\n\n### Path B (full automation)\n\n```\n## Auto-Fixed\n- [x] Document title set to \"AI Spring Class 5\"\n- [x] Language set to en-US\n- [x] Display title enabled\n- [x] PDF/UA identifier added\n- [x] Bookmarks generated for 98 pages\n- [x] Descriptive text added to 12 links\n- [x] Structure tree generated (1,459 elements: headings, lists, figures, tables)\n- [x] Tagged content (BDC/EMC) — all page content marked with structure MCIDs\n- [x] Tagged annotations — link annotations tagged as /Link structure elements\n- [x] Tab order set to structure order on all pages\n- [x] Alt text added to 78 figures\n\nSaved: AI Spring Class 5_accessible.pdf\n```\n\n## Compliance Reference\n\nThe full compliance checklist (18 checks across Critical, Important, and Advisory tiers) is bundled at `skills/ada-compliance/references/compliance-checklist.md`, including Acrobat remediation instructions for each issue type.\n\n## License\n\nMIT\n",
  "bytes": 7685,
  "sha": "dc540dc945fe8303f8ed0bbf135cc62317e2c06b37668d5203d979cabe7dcea2",
  "repo_slug": "anitasrinivasan/ada-pdf-compliance",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_anitasrinivasan_ada_pdf_compliance_ada_p_7bda0def/readme"
}