SumatraPDF provides several accessibility-related features. Maturity varies by feature.
Read Aloud #
Read Aloud (TTS) — read document text with Windows text-to-speech, word highlight, playback bar, and pause / continue / stop — is documented in Read Aloud (TTS).
Screen readers (UI Automation) #
SumatraPDF exposes a UI Automation tree so screen readers (Microsoft Narrator, NVDA, and other UIA clients) can access document text on the canvas.
Microsoft Narrator #
- Start Narrator (Windows built-in,
Win+Ctrl+Enter). - Open a document in SumatraPDF.
- Move focus to the document canvas and navigate / select text — Narrator should read document content via the UIA text pattern.
Supported document types for UIA: PDF, XPS, DjVu (engines that expose extractable page text).
Known issue: Narrator sometimes stops reading until you switch focus to another window and back.
Other screen readers (NVDA, JAWS, …) #
Any client that uses Windows UI Automation can query the same document tree. NVDA and JAWS are not exhaustively tested for every document; feedback welcome in discussions or issues.
Tips:
- Prefer documents with real text (not scan-only image PDFs). Scanned pages need OCR elsewhere.
- Standard UI (menus, toolbar, TOC, bookmarks) uses native Windows controls and is generally readable by screen readers even without canvas UIA.
- Built-in Read Aloud is a separate, app-driven TTS path — useful when you want continuous reading with word highlight, but it is not a full screen-reader substitute.
Plugin #
Accessibility is not enabled in the SumatraPDF browser plugin.
Keyboard-only use #
Many actions are available without a mouse — see Keyboard shortcuts, Command Palette, and Finding text (important for users who cannot use function keys without
Fn).See also #
Technical documentation #
For SumatraPDF developers — UIAutomation element structure when a document is loaded:
Window
|-> FragmentRoot
Name: "Canvas"
ControlType: UIA_CustomControlTypeId
|
|-> Fragment
Name: [filename]
ControlType: UIA_DocumentControlTypeId
NativeWindowHandle: 0
Patterns: ITextProvider
|
| -> Fragment
| Name: "Page 1"
| Patterns: IValueProvider
-
-
|
| -> Fragment
Name: "Page n"
Patterns: IValueProvider
When no document is loaded:
Window
|-> FragmentRoot
Name: "Canvas"
ControlType: UIA_CustomControlTypeId
|
|-> Fragment
Name: "Start Page"