Skip to the guide content

Accessible PDF: user guide

The program converts Microsoft Office, LibreOffice, Markdown, web page and PDF documents to accessible PDF conforming to PDF/UA-1 or PDF/UA-2, optionally also PDF/A (levels 1a to 4f) and Well-Tagged PDF, and checks the result against WCAG 2.2 (levels A, AA and AAA) and EN 301 549 V4.1.1. The program does not do text recognition (OCR).

Version 1.2.0. Author: Radoslav Ďurač. License GNU AGPL 3.0 or later with the condition to credit the author.

Quick start

  1. Add files (Ctrl+O), a folder (Ctrl+Shift+O) or drag them to the list.
  2. Choose the standard: PDF/UA-2 (PDF 2.0, recommended) or PDF/UA-1. For archiving, also choose a PDF/A level.
  3. Press Export to accessible PDF (Ctrl+E or F5).
  4. Add alternative texts of images if the program asks for them, and read the accessibility report.

The original file is never changed. The result is saved as a new file with the suffix _pristupne, together with an accessibility report. The F1 key opens the chapter of this guide for the control that has the focus; a short help is also in the Help menu (Quick start, Keyboard shortcuts, Terms and abbreviations, Requirements, Privacy, License, About).

Requirements

Required

Recommended

What is installed on your computer is shown in Help > Requirements or by the command ppdf env.

Supported formats

Input formats and the program that converts them
KindFormatsConversion
Text documents.docx, .docm, .dotx, .dotm, .doc, .dot, .rtf, .odt, .ott, .fodt, .odm, .oth, .sxw, .stw, .sxg, .sdw, .vor, .wpd, .wps, .txtLibreOffice; Word except .ott, .fodt, .odm, .oth, .sx*, .sdw, .vor, .wpd, .wps
Spreadsheets.xlsx, .xlsm, .xltx, .xltm, .xlsb, .xls, .xlt, .ods, .ots, .fods, .sxc, .stc, .sdc, .csv, .dif, .slk, .dbfLibreOffice; Excel except .ots, .fods, .sxc, .stc, .sdc, .dbf
Presentations.pptx, .pptm, .potx, .potm, .ppsx, .ppsm, .ppt, .pot, .pps, .odp, .otp, .fodp, .sxi, .sti, .sdd, .sdpLibreOffice; PowerPoint except .otp, .fodp, .sxi, .sti, .sdd, .sdp
Drawings.odg, .otg, .fodg, .sxd, .std, .sda, Visio .vsd, .vsdx, .vsdm, .vstx, .vstm, .vst, .vdx, .vsx, .vtx, Publisher .pubLibreOffice; Visio files also Visio
Formulas.odf, .sxm, .smf, .mmlLibreOffice
Web and Markdown.htm, .html, .xhtml, .md, .markdown, .mht, .mhtmlLibreOffice or Word; .mht only Word
PDF.pdf with or without tags (with text)the program itself

Macro-enabled formats are supported too (.docm, .dotm, .xlsm, .xltm, .xlsb, .pptm, .potm, .ppsm, .vsdm, .vstm and older binary formats). Macros never run during the export and are not transferred to the PDF. The Uniform Office Format (.uot, .uos, .uop) is not supported: LibreOffice 26.8 saves it but cannot open it again.

Export steps

  1. Add files with Add files, a whole folder with Add folder (including subfolders) or drag files to the list.
  2. For an individual file you can enter the title, author, subject, keywords and language in File properties (see Custom document metadata).
  3. In Output, choose the standard, PDF/A level, PDF version and where to save the result; in Document conversion, which program converts the documents.
  4. Press Export to accessible PDF. The progress is shown in the status line and announced by the screen reader; cancel the export with Esc.
  5. If some images lack alternative text, the program opens the Alternative texts window.
  6. When finished, the focus moves to the file list (this can be turned off in Preferences). The result of the selected file is in Result details; the buttons below open the PDF, the report and the folder.

The result has the name of the original file with a suffix (by default _pristupne). An existing file is never overwritten; a new one gets a sequence number, for example report_pristupne (2).pdf.

Options

Compliance standard
PDF/UA-2 (PDF 2.0) or PDF/UA-1 (PDF 1.7, 1.6, 1.5; PDF 1.4 with PDF/A-1).
PDF/A archiving
PDF/A level; the list contains only levels compatible with the chosen standard (PDF/A archiving).
Also declare Well-Tagged PDF
With PDF/UA-2, adds the WTPDF 1.0 declaration (Well-Tagged PDF).
Attach the original document
Embeds the original file in the PDF as an attachment with the relationship “source”. Allowed only without PDF/A, with PDF/A-3 and PDF/A-4f. Note: the attachment contains the whole original file, including comments, tracked changes and macros.
Save beside the original file or into another folder
Where the PDF and the report are saved.
Output file name suffix
Text added to the original file name. Characters not allowed in file names are replaced with an underscore, so the result is always saved in the chosen folder.
Default document language
Used when the document has no language and the program cannot detect it from the text. If the document language differs from the language of its text, the program corrects it and warns you.
Convert documents using
Automatic, LibreOffice or Microsoft Office (Conversion).
Verify with veraPDF
Independent validation of PDF/UA, the chosen PDF/A level and WTPDF.
Check text contrast
Compares the colour of each text run with the background of the rendered page: level AA (4.5:1, large text 3:1) and AAA (7:1, large text 4.5:1).
Create bookmarks from headings
A document without bookmarks gets bookmarks from its headings.
Mark the language of foreign-language paragraphs
A paragraph whose language the program reliably detects and which differs from the document language gets its own language (WCAG 3.1.2).
Re-tag PDF files with existing tags
Discards the original tags and creates new ones from the page layout.
Remove JavaScript and program launching
On by default. Actions that launch programs or load files are always removed. With PDF/A, JavaScript is always removed because PDF/A does not allow it.
Ask for missing alternative texts
After the export, opens the window for adding alternative texts.
Save the accessibility report
Saves an HTML report next to the PDF (PDF name + _sprava.html).

PDF/UA-1 or PDF/UA-2

PDF/UA-2 (ISO 14289-2:2024) is the newer standard based on PDF 2.0. PDF/UA-1 (ISO 14289-1) is based on PDF 1.7 and is supported by more tools. The PAC 2026 checker evaluates PDF/UA-1 and PDF/UA-2 only partly so far; if the result must pass a PAC test, choose PDF/UA-1. The program validates both in veraPDF.

PDF/A archiving

PDF/A (ISO 19005) is the standard for long-term archiving: the document contains everything it needs to be displayed (fonts, colour profile) and nothing that could change or stop working over time (scripts, external content).

PDF/A levels and compatibility with PDF/UA
LevelStandardGoes withMeaning
PDF/A-1a, 1bISO 19005-1, PDF 1.4PDF/UA-1no transparency, layers or attachments
PDF/A-2a, 2b, 2uISO 19005-2PDF/UA-1attachments only in PDF/A format
PDF/A-3a, 3b, 3uISO 19005-3PDF/UA-1attachments of any type
PDF/A-4ISO 19005-4, PDF 2.0PDF/UA-2base level
PDF/A-4eISO 19005-4, PDF 2.0PDF/UA-2engineering documents (3D)
PDF/A-4fISO 19005-4, PDF 2.0PDF/UA-2attachments of any type; at least one attachment is required

The level letter: a means full conformance including structure and Unicode text, u appearance and Unicode, b appearance only. The program's result is always tagged and in Unicode (PDF/UA), so with level b or u it is equally accessible; the level only determines what is declared.

For PDF/A the program adds an output intent with an sRGB profile (generated by the program), adds a profile to CMYK colours, embeds or replaces missing fonts, removes JavaScript and forbidden actions and annotations, adjusts the metadata (declaration, consistency with the Info dictionary, description of the PDF/UA schema) and for PDF/A-1 removes transparency (blends semi-transparent areas and text with the white background, merges soft masks of images), re-encodes JPEG 2000 images and adds font character sets. Attachments not allowed by the chosen level are removed with a warning. For Office and LibreOffice documents, the converter's own PDF/A export is used as well.

Well-Tagged PDF

Well-Tagged PDF (WTPDF 1.0) is the PDF Association specification for well-tagged PDF 2.0. It has two levels: accessibility and reuse of content. The option Also declare Well-Tagged PDF (PDF/UA-2 only) writes declarations of both levels to the metadata; veraPDF validates them with the WTPDF profiles.

Conversion via LibreOffice or Microsoft Office

In Document conversion you choose which program converts the document to a tagged PDF:

Microsoft Office runs in its own hidden instance, so documents you have open are not closed; a PowerPoint that is already running is never closed. Macros do not run, the document is opened read-only, without updating links and recalculating formulas. If Office shows a window (for example product activation or document repair) it would wait for, the program closes its instance and tells you.

Custom document metadata

In the File properties window (select a file and press Alt+Enter or Enter) you can enter the title, author, subject, keywords and language for each file. An empty field means the value from the source document; the window shows it in Properties in the source document. Separate several authors with semicolons and keywords with commas. The values are written to the PDF (XMP and the Info dictionary) and to the report; the program does not remember them.

Title, author and opening view

Unless you enter them in File properties, the title, author, subject and keywords are taken from the source document (Word: File, Info, Properties; LibreOffice: File, Properties; Markdown: YAML header title, author; web page: title and meta). If the document has no title, the program suggests one from the title on the first page or the first heading and warns you. An author that is only a program name or a default name (for example Windows User) is not written to the PDF.

The resulting PDF opens with the document title in the window title (WCAG 2.4.2), with the bookmarks panel open (if the document has bookmarks) and with the first page fitted in the window.

Alternative texts of images

An alternative text describes what an image shows and why it is in the document; for a chart, the main finding is enough. It is best entered in the source document. If it is missing, after the export the program opens the Alternative texts window: select an image in Images (a preview and the page are shown), Text found in the image shows the text of the image (chart labels), type a description into Alternative text or check Decorative image, and press Save to PDF. You can open the window later with Alternative texts of images. The program also warns about texts generated by artificial intelligence and texts that are only a file name.

Charts

Mathematical formulas

Following the PDF Association “Best Practice Guide: Math in PDF”: a formula is a Formula element with an alternative text and, in PDF/UA-2, also MathML as an associated file that screen readers can read.

Forms

Fillable fields come from Word content controls and LibreOffice fields (with LibreOffice conversion) and from the AcroForm of an input PDF. The program gives each field a description from its label, a group description to radio button groups, the word “required” to required fields, places the field after its label, adds the widget description (PDF/UA-2), replaces non-embedded field fonts and removes dynamic XFA forms. Legacy Word form fields are converted to text only.

Markdown, web pages and text

PDF processing

A tagged PDF is repaired and converted to the chosen standard. A PDF without tags is tagged automatically from the page layout; check the result, especially the reading order and tables. The program does not do OCR: pages that are only an image are not converted. A protected (encrypted) PDF must first be unlocked in the program that created it.

Accessibility report

The report (HTML) contains a summary in plain sentences, document information, a list of what to fix (with a suggested fix), the result for each WCAG 2.2 criterion with the EN 301 549 V4.1.1 clause, the veraPDF result, the changes made and an explanation of the abbreviations used. Results: Passed, Failed, Likely problem, Check manually and Not applicable. The report itself meets WCAG 2.2 level AAA and EN 301 549 V4.1.1.

EN 301 549 V4.1.1 requires WCAG 2.2 level A and AA criteria for documents (clause 10) and clause 10.7. Level AAA criteria are an addition in the report; conformance with them is confirmed only by manually assessing the “Check manually” items.

Security

The program processes documents that anyone could have prepared, so a document cannot run code, read other files or communicate over the network:

Recommendations: keep the program, LibreOffice and Office up to date, run the program under a normal user account from a folder others cannot write to, and open the resulting PDFs in an up-to-date PDF viewer.

Privacy

Keyboard shortcuts

Default keyboard shortcuts of the main window
ShortcutAction
Ctrl+OAdd files
Ctrl+Shift+OAdd folder
Alt+Enter; Enter in the listFile properties
Ctrl+E, F5Export
EscCancel the running export
Ctrl+,Preferences
Ctrl+Shift+LSwitch the interface language (Slovak, English)
F1User guide chapter for the control that has the focus
Delete in the listRemove the selected files from the list
Shift+F10 or the menu key in the listMenu for the selected file
Alt + underlined letterMove to the field or button

Change or turn off shortcuts in Settings > Keyboard shortcuts: type a shortcut into the field of an action (for example Ctrl+Shift+E or F6); an empty field turns it off. A shortcut must contain Ctrl or Alt, or be a function key, so that it does not interfere with typing. Restore default shortcuts returns the original settings. The current shortcuts are listed in Help > Keyboard shortcuts.

Preferences

Path to LibreOffice and veraPDF folder
An empty field means automatic search.
Open the accessibility report in the browser after the export
For a single file, opens the report automatically.
Announce the start of each file to screen readers
Turn off if announcements during the export disturb you; the export result is always announced.
After the export, move the focus to the list of results
Turn off if you want the focus to stay where it is.
Interface language
Slovak or English; changes immediately. You can also switch the language in the Settings menu or with Ctrl+Shift+L.

Command line (ppdf.exe)

The console program ppdf.exe is in the same folder as AccessiblePDF.exe. It waits until it finishes and prints the result to the console; the --json option prints machine-readable JSON. The older form AccessiblePDF.exe --cli … still works.

ppdf export FILE or FOLDER… [options]         ("export" can be omitted)
ppdf check FILE.pdf [--ua 1|2] [--pdfa …]      check a PDF without changes
ppdf images FILE.pdf [--all] [--previews FOLDER]
ppdf alt FILE.pdf TEXTS.json [-o NEW.pdf]      alternative texts to a new copy
ppdf env                                       programs found and paths
ppdf formats                                   supported formats
ppdf mcp [--root FOLDER]…                      MCP server for AI assistants
ppdf ai [--config TOOL] [--save-skill]         guide for AI assistants

Export options: --ua 1|2, --pdfa 1a|1b|2a|2b|2u|3a|3b|3u|4|4e|4f (with PDF/A-1 to 3, PDF/UA-1 is chosen automatically), --wtpdf, --pdf-version, --converter auto|libreoffice|office, -o FOLDER, --suffix, --title, --author, --subject, --keywords, --lang, --default-lang, --attach-source, --retag, --no-verapdf, --no-contrast, --no-bookmarks, --no-passage-lang, --no-report, --keep-javascript, --overwrite, --json, --json-file FILE.json, --quiet, --ui-language sk|en. Slovak names of commands and options work too (kontrola, obrazky, --nazov …). Help: ppdf --help and ppdf COMMAND --help.

Alternative texts file: {"12 0": "Bar chart …", "15 0": null} (null = decorative image); the image ids are listed by ppdf images. Exit code: 0 no errors, 1 accessibility errors or veraPDF nonconformance, 2 failure or invalid options.

AI assistants and the MCP server

AI assistants with MCP support (for example OpenAI Codex CLI, Gemini CLI, GitHub Copilot in VS Code or Cursor) can use the program in two ways:

The configuration for each tool is printed by ppdf ai --config codex (or gemini, vscode, cursor); ppdf ai --config json prints the general configuration used by most MCP clients:

{
  "mcpServers": {
    "accessible-pdf": {
      "command": "C:\\Programs\\AccessiblePDF\\ppdf.exe",
      "args": ["mcp", "--root", "C:\\Users\\name\\Documents"]
    }
  }
}

Server security: it reads and writes only in allowed folders (--root, can be repeated; without it the current folder unless it is a system folder), does not allow network paths (--allow-network-paths allows them), devices or alternate data streams, never overwrites an existing file and always removes JavaScript from PDFs. It passes text from documents as data, not instructions. Check alternative texts suggested by AI.

Accessibility of this program

The program is designed in accordance with WCAG 2.2 level AAA and EN 301 549 V4.1.1 (clause 11 for software including 11.8 for authoring tools, and clause 12 for documentation):

Known limitations: the image preview in the Alternative texts window is visual only (the screen reader announces its number and page; text in the image is in a separate field); automatic tagging of PDFs without tags needs a manual check. Please report any accessibility problem of the program to the author.

Terms and abbreviations

PDF
Portable Document Format – a document format (ISO 32000) that looks the same on every device.
PDF/UA-1, PDF/UA-2
PDF Universal Accessibility – standards for accessible PDF (ISO 14289-1, ISO 14289-2:2024).
PDF/A
PDF Archive – standards for long-term archiving (ISO 19005); levels a, b, u, e, f.
WTPDF
Well-Tagged PDF – the PDF Association specification for well-tagged PDF 2.0.
WCAG 2.2
Web Content Accessibility Guidelines from the W3C; levels A, AA, AAA.
EN 301 549
the European standard of accessibility requirements for ICT products and services (V4.1.1).
MIRRI
the Slovak Ministry of Investments, Regional Development and Informatization; its methodological guideline contains the Slovak names of WCAG criteria.
Tags
the structure of a PDF that tells a screen reader what is a heading, paragraph, list, table or image.
Alternative text
a short description of an image or formula that a screen reader reads instead of the image.
Artifact
content without meaning (a line, page number, header) that a screen reader skips.
Screen reader
a program that reads the screen by voice or on a braille display (NVDA, JAWS, Narrator).
veraPDF
an independent validator of PDF/A, PDF/UA and WTPDF.
PAC
PDF Accessibility Checker – a tool for manual checking of PDF accessibility.
OOXML, ODF
the Office Open XML (.docx, .xlsx, .pptx) and OpenDocument (.odt, .ods, .odp) formats.
HTML, MHT, Markdown
a web page, a web archive and a plain-text document notation with markup.
RTF, TXT, CSV
Rich Text Format, plain text and a table with values separated by commas or semicolons.
XMP
Extensible Metadata Platform – document metadata.
ICC, sRGB, CMYK
colour profiles and models (sRGB for screens, CMYK for print).
MathML
Mathematical Markup Language – a notation of formulas that screen readers can read.
OCR
optical character recognition; the program does not do it.
Macro, VBA
a program in a document (Visual Basic for Applications); it does not run during the export.
JavaScript
a programming language a PDF can use to run scripts.
NTLM, UNC
Windows authentication and a network path \\server\share; a planted network path could leak credentials, so the program does not use them.
XXE
an attack through XML external entities; the program reads XML without them.
SHA-256
a checksum of a file.
CLI
command-line interface (ppdf.exe).
JSON
a machine-readable text format of results.
MCP
Model Context Protocol – the interface through which AI assistants use the tools of the program.
AI
artificial intelligence.
AGPL
GNU Affero General Public License – the license of the program.

Troubleshooting

Neither LibreOffice nor Microsoft Office was found
Install one of them or enter the path to soffice.exe in Preferences. PDF files are processed without them.
Microsoft Office showed a window and the export stopped
Office waited for an answer (product activation, document repair). Open the document in Office manually, resolve the window and export again, or choose LibreOffice.
The layout differs from Word
LibreOffice may break lines and pages differently; choose Microsoft Office.
An image linked to the internet is missing
Linked images are not loaded for security reasons; insert them into the document directly.
PDF/A-4f reports a missing attachment
Turn on Attach the original document or choose PDF/A-4.
The form is not fillable
Use LibreOffice conversion and content controls instead of legacy fields.
A font is not embedded
Standard fonts are replaced by the program; other non-embedded fonts must be embedded in the program that created the PDF.
veraPDF reports an error
The rules and their description are in the report; most often an image lacks alternative text.
Program log
Error details are in %LOCALAPPDATA%\AccessiblePDF\accessible-pdf.log (in the portable version in the Data folder next to the program).
Found a bug or have a suggestion?
Open an issue on GitHub or use Help > Report a bug. Include the program version, the steps that lead to the problem and what you expected; if you can, attach a sample document without personal data.

License and author

Author of the program: Radoslav Ďurač. © 2026 Radoslav Ďurač.

The program is free and open-source software under the GNU Affero General Public License version 3 or later (AGPL-3.0-or-later). You can use, distribute and modify it. Additional term (section 7(b) and (c) of the license): every copy and modified version must preserve the author attribution “Radoslav Ďurač” in the program information, documentation, file properties of the program and copyright notices in the source code; a modified version must be marked as modified. When distributing, the source code must be made available. The full text is in the LICENSE and NOTICE.md files and in Help > License.

The source code is on GitHub (rraddatch/accessible-pdf), the author at github.com/rraddatch. Fixes and improvements are welcome as pull requests; see CONTRIBUTING.md in the repository.

The whole program is licensed under the AGPL because it uses the PyMuPDF library (GNU AGPL 3.0, Artifex). Other components: pikepdf (MPL 2.0) with qpdf (Apache 2.0), wxPython (wxWindows Library Licence), lxml (BSD), pywin32 and Python (PSF). LibreOffice (MPL 2.0), Microsoft Office and veraPDF (GPL 3 / MPL 2.0) are installed separately. Windows replacement fonts are embedded only if their license allows it.