Drupal is a registered trademark of Dries Buytaert

pdfa11y

No security coverage
View on drupal.org

PDFa11y automatically checks uploaded PDF files for accessibility issues, helping content editors ensure their documents are usable by people with disabilities who rely on screen readers and other assistive technologies.

It's not comprehensive and should be paired with content editor training on best practices for creating accessible PDFs.

AI disclosure: much of this module was initially stubbed out with AI. While the maintainer has taken steps to review the code, added automated tests, and manually tested the features of PDFa11y, the project should be considered a proof of concept under development that is not for use in production sites (yet).

Features

  • Automatic accessibility checking - PDFs are automatically analyzed when uploaded through media forms
  • Configurable validation - Choose to warn editors or block uploads that fail accessibility checks
  • Built-in accessibility checks:
    • Tagged PDF - Verifies the PDF contains a logical structure tree for screen readers
    • Document Title - Ensures the PDF has a descriptive title in its metadata
    • Document Language - Confirms the document language is specified for proper pronunciation
    • PDF Version - Validates the PDF meets minimum version requirements for accessibility features
  • Extensible plugin system - Developers can create custom accessibility check plugins
  • Per-media reports - View detailed accessibility results for each PDF media item
  • Drush integration - Batch check existing PDFs from the command line
  • Granular permissions - Control who can configure settings, run checks, and view reports

When to use this module

  • Your organization has accessibility compliance requirements (WCAG, Section 508, ADA)
  • You want to catch inaccessible PDFs before they're published
  • Content editors need guidance on PDF accessibility issues
  • You need to audit existing PDF files for accessibility problems

Post-Installation

  1. Configure the module at Administration > Configuration > Media > PDFa11y
    (/admin/config/media/pdf-accessibility)

  2. Choose your settings:

    • Enable or disable automatic checking on upload
    • Decide whether to block uploads that fail checks or just show warnings
    • Set the minimum PDF version requirement
    • Select which accessibility checks to run
  3. Assign permissions at Administration > People > Permissions:

    • Administer PDF accessibility settings - For site administrators
    • Run PDF accessibility checks - For users who can manually trigger checks
    • View PDF accessibility reports - For users who can see check results
  4. View reports - Each PDF media item has an "Accessibility" tab showing its check results

Additional Requirements

This module requires:

  • Drupal core Media module - For media entity integration
  • Drupal core File module - For file handling
  • smalot/pdfparser - PHP library for parsing PDF files (installed automatically via Composer)
  • Editoria11y - Provides real-time accessibility checking for HTML content, complementing PDFa11y's document checks

Similar Projects

There are few Drupal modules specifically focused on PDF accessibility validation. Most accessibility tools focus on HTML content rather than uploaded documents. PDFa11y fills this gap by providing automated PDF-specific accessibility checks integrated with Drupal's media system.

Two projects that are worth checking out in this space:

LocalGov Publications Importer

Focusing on converting PDFs to accessible HTML content, the Publications Importer takes a PDF and converts it to a well-structured Drupal content type. This is a great solution for migrating PDFs to an accessible format. It uses a little AI magic to review the parsed PDF and suggest a structured format.

simplA11yPDFCrawler

Focused on providing an audit of a large number of PDF files, simpA11yPDFCrawler (that's a mouth full) can crawl sites, download PDFs and office files, and try to detect accessibility issues. It parses for more issues that this module, but is focused on remediation above prevention due to the nature of crawling an existing site.

Activity

Total releases
1
First release
Feb 2026
Latest release
3 weeks ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
1.0.x-dev Dev Feb 11, 2026