This page describes the accessibility features of Apache™ FOP. Section 508 defines accessibility in the context of electronic documents for the USA but other countries have similar requirements.
Accessibility features are available only for the PDF output format and there are some implementation limitations. Also, certain actions must be undertaken by the content creator to ensure that FOP can create a truly accessible document.
There are 3 ways to enable accessibility:
fop -a -fo mydocument.fo -pdf mydocument.pdf
userAgent.setAccessibility(true);
<fop version="1.0"> <accessibility>true</accessibility> ... </fop>
When accessibility is enabled, additional information relating to the logical structure of the document is added to the PDF. That information allows the PDF viewer (or a text-to-speech application) to retrieve the natural reading order of the document.
Apache FOP cannot automatically generate accessible PDFs. Some of the work can only be performed by the content provider. Following are some changes that may be necessary to your XSL-FO content in order to generate really accessible documents:
fox:alt-text
extension attribute
(in the fox namespace) on
fo:external-graphic
and fo:instream-foreign-object
to specify a
short text describing the image.
fo:block-container
elements in a page corresponds to
the reading order.
xml:lang
shorthand property).
The PDF Reference defines a set of standard Structure Types to tag content. For example, ‘P’ is used for identifying paragraphs, ‘H1’ to ‘H6’ for headers, ‘L’ for lists, ‘Div’ for block-level groups of elements, etc. This standard set is aimed at improving interoperability between applications producing or consuming PDF.
FOP provides a default mapping of Formatting Objects to elements from that standard set.
For example, fo:page-sequence
is mapped to ‘Part’, fo:block
is
mapped to ‘P’, fo:list-block
to ‘L’, etc.
You may want to customize that mapping to improve the accuracy of the tagging or deal with
particular FO constructs. For example, you may want to make use of the ‘H1’ to ‘H6’ tags to
make the hierarchical structure of the document appear in the PDF. This is achieved by using
the role
XSL-FO property:
If a non-standard structure type is specified, FOP will issue a warning and fall back to the default tag associated to the Formatting Object.
Accessible PDFs can be tested, for example, using Adobe Acrobat Professional. Its Accessibility Check feature creates a report indicating any deficiencies with a PDF document. Alternatively, you can just let a screen reader read the document aloud.
Accessibility support in Apache FOP is relatively new, so there are certain limitations. Please help us identify and close any gaps.
fox:alt-text
.
Many resources providing guidance about creating accessible documents can be found on the web. Here are a few links, along with additional resources around the topic: