← toolkit.bot

Academic Publisher EAA 2026: Converting Journal PDFs to Accessible EPUB3

The Deadline Is Here

EAA enforcement started June 28, 2026. The European Accessibility Act now applies to digital products and services sold in the EU — and that includes academic publications.

For academic publishers, this is not an abstract compliance question. It is a scale problem that no existing tool adequately solves.

The Academic Publisher Problem

Major publishers — Springer Nature, Elsevier, Taylor & Francis, SAGE, Wiley — have backlists measured in millions of documents. Nearly all of them are PDFs. And nearly all of those PDFs fail EAA's core document accessibility requirement: WCAG 2.1 Success Criterion 1.4.10, Reflow.

Why PDF fails WCAG 1.4.10, even with perfect tagging

WCAG 1.4.10 Reflow requires content to be presentable in a single column at 320px width without horizontal scrolling or loss of information. This is the requirement that makes documents usable for people with low vision who zoom in heavily.

The problem: a typical journal article is formatted in two-column layout. That layout is baked into the PDF rendering engine. No amount of accessibility tagging, remediation, or metadata changes the fact that a PDF is fixed-layout by design.

PDF/UA compliance (which most publishers currently target) satisfies reading order, language, and heading structure requirements. It does not — and cannot — satisfy WCAG 1.4.10 Reflow. A publisher with 3 million accessible, PDF/UA-compliant journal articles still has 3 million EAA compliance gaps.

Why Manual Remediation Doesn’t Scale

The accessibility services industry typically charges $50–$200 per document for manual PDF remediation. At those rates:

This is not a realistic path for backlist conversion. Per-seat licensing for tools like CommonLook ($599+/year) or axesPDF doesn’t help either — these tools remediate PDFs but do not convert them to reflowable formats, so WCAG 1.4.10 Reflow remains unsatisfied.

The math only works if conversion is automated and cost-per-document is measured in cents, not dollars.

EPUB3: The Recognised Standard for Accessible Academic Publishing

EPUB Accessibility 1.1 (based on WCAG 2.1 AA) is the established standard for accessible academic ebooks. It is recognised by:

EPUB3 satisfies WCAG 1.4.10 structurally. A reflowable EPUB3 document renders in a single column at any viewport width. No additional remediation is needed for that specific requirement.

For academic publishers, this creates a viable compliance path: convert existing PDF backlist to EPUB3, validate with ACE by DAISY (free tool), and serve EPUB3 as the accessible format while keeping PDF as the print-fidelity format.

JATS XML vs PDF → EPUB3 Conversion

Publishers working from JATS XML source files have the cleanest path: JATS → EPUB3 via NLM’s JATS-to-EPUB stylesheets or JATS2EPUB toolchain. If your production workflow produces JATS XML, this is the preferred route.

The majority of academic backlist, however, exists as PDF only — especially content published before 2010 when XML workflows were less standardised. For this content, PDF → EPUB3 conversion is the only practical option.

toolkit.bot API for Publisher-Scale Conversion

toolkit.bot provides a REST API for PDF → EPUB3 conversion at rates suitable for bulk processing.

POST https://toolkit.bot/api/convert
Content-Type: multipart/form-data

file: [PDF binary]

Returns: EPUB3 binary, average processing time 20–30 seconds per document.

Bulk workflow example (Python):

import httpx
import asyncio
from pathlib import Path

API_KEY = "your_api_key"
PDF_DIR = Path("/path/to/backlist")
EPUB_DIR = Path("/path/to/output")

async def convert_pdf(client, pdf_path):
    with open(pdf_path, "rb") as f:
        response = await client.post(
            "https://toolkit.bot/api/convert",
            headers={"Authorization": f"Bearer {API_KEY}"},
            files={"file": (pdf_path.name, f, "application/pdf")},
            timeout=120
        )
    if response.status_code == 200:
        epub_path = EPUB_DIR / pdf_path.with_suffix(".epub").name
        epub_path.write_bytes(response.content)

async def bulk_convert():
    EPUB_DIR.mkdir(exist_ok=True)
    pdfs = list(PDF_DIR.glob("*.pdf"))
    async with httpx.AsyncClient() as client:
        # Process 5 at a time to respect API limits
        for i in range(0, len(pdfs), 5):
            batch = pdfs[i:i+5]
            await asyncio.gather(*[convert_pdf(client, p) for p in batch])

asyncio.run(bulk_convert())

What the API produces: each converted EPUB3 includes semantic heading hierarchy, reading order preservation, figure alt-text extraction where embedded in PDF, language declarations, EPUB Accessibility 1.1 metadata, and output passable through EPUBCheck and ACE by DAISY validation.

Pricing:

For volume above 1,000 documents/month, contact us via toolkit.bot/premium for enterprise pricing.

The Business Case for Publishers

Approach Cost per document 100,000 docs
Manual remediation (PDF/UA)$50–200$5M–$20M
Per-seat tool (CommonLook)~$0.60$60K
toolkit.bot API ($29/month)~$0.01~$1K

toolkit.bot handles the long tail of the backlist — standard journal articles, conference proceedings, working papers — where automated conversion produces defensible compliance at a fraction of the cost.

Validating the Output

# Install ACE by DAISY (free)
npm install -g @daisy/ace

# Validate
ace --outdir ./ace-report ./output.epub
open ace-report/report.html

The ACE report identifies remaining issues and produces a WCAG 2.1 conformance table — your compliance documentation for internal records and regulator queries.

Getting Started

EAA enforcement is live. If you have a PDF backlist and no clear WCAG 1.4.10 compliance path, toolkit.bot is built for this exact situation.

Try free →   Publisher guide

Related guides