Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

pdfa11y

26 sites Security covered
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. The maintainer has taken steps to review the code, add automated tests, and manually test the features of PDFa11y.

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.

Three 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.

PDF Services

If your organization has an existing Adobe API Key or extensive use of Acrobat Pro, PDF Services provides a means of integrating Adobe's proprietary PDF scanning services. It's more comprehensive than PDFa11y, but it has limits without a paid account. The modal and embedded viewer options may not meet your accessibility requirement, but they provide some immediate feedback for editors and users of the site.

Activity

Total releases
5
First release
Feb 2026
Latest release
4 weeks ago
Release cadence
9 days
Stability
80% stable

Release Timeline

Releases

Version Type Release date
1.0.4 Stable Mar 19, 2026
1.0.3 Stable Mar 19, 2026
1.0.2 Stable Mar 10, 2026
1.0.1 Stable Mar 9, 2026
1.0.x-dev Dev Feb 11, 2026