Contents | PDF Glossary | References | PDF Checklist | Glossary Home

W 3 C's Logo - Links you to the W 3 C Home Page WAI Logo -  Links you to the W 3 C's Web Accessibility Initiative Home Page

PDF Techniques
for Web Content Accessibility Guidelines 1.0 and 2.0

W3C Internal Working Draft 3 June 2001

This version:
Latest version:
Loretta Guarino Reid , Adobe Systems
Katie Haritos-Shea , Paradigm Solutions Corp. & NTIS - US Dept. of Commerce
Wendy Chisholm , W3C


This document is a Draft.

This document has been produced as part of the W3C Web Accessibility Initiative. The goal of the Web Content Guidelines Working Group is discussed in the Working Group charter.

Last Updated: $Date: 2001/07/22 03:24:20 $ by: Katie Haritos-Shea

Please send comments on this document to

Copyright 2000 W3C (MIT, INRIA, Keio ), All Rights Reserved. W3C liability, trademark, document useand software licensingrules apply. Your interactions with this site are in accordance with our public and Member privacy statements.


This paper is just one in a series of techniques documents designed for authoring Accessible Web Content. For information about the other documents in the techniques series, please refer to the "Techniques for Web Content Accessibility Guidelines 1.0" WCAG 1.0 document.

In this PDF Techniques document we describe how to create accessible Adobe Portable Document Format (PDF) content (refer to PDF Reference Second Edition, Version 1.3). This document is also intended to demonstrate:

  1. How web authors can define the characteristics of what makes (constitutes) an accessible PDF file, and
  2. How developers and authors can use tools to create and alter PDF content for accessibility

Because PDF is a Page Description Language, it is usually not intended to be edited directly by authors. Therefore these techniques are intended particularly for the developers of authoring tools that generate PDF as an output format. Developers should also see the Authoring Tools Accessibility Guidelines document that is nearby.

However, since authors routinely deliver PDF documents as web content, it is important that they too understand what constitutes an accessible PDF file. Webmasters and other web authors should also see the Web Content Accessibility Guideline document. The vehicle for acheiving accessible PDF documents can be addressed best (at this time), through the use of Tagged PDF.

Tagged PDF is a stylized use of PDF that allows reliable recovery of text, graphics, and images in PDF documents, with no ambiguity about the contents or the ordering of the contents. A Tagged PDF file is page oriented. For each page of a Tagged PDF document, the reading order for that page contains the text, graphics, and images in reading order, as determined by the authoring application. A Tagged PDF is a Logical Structured PDF. Logical Structure is used to carry information necessary to support tagging for access and content extraction, as well as styling properties needed for access, reflow so(??), and content extraction. It also provides the identification of the article flows in the cross-page environment for access and content extraction.

A short paragraph here making pdf relevant to people and their different devices. Examples of these devices could be Text-to-Speech for Voice Activation (phones.....reading aloud a pdf file online?) and for the Reflowing of Text to/for small PDA's. William, in support of device independence, would you be willing to create this for us??

To promote continuity across WAI documents and to assist in understanding accessibility principles, we have chosen to place each PDF checkpoint under the most appropriate one of the four basic WCAG Guidelines. KHS

For each technique, we identify the version of PDF in which the language support is first available. Where no version is specified, the technique can be applied in all versions of PDF.

Table of Contents



How This Draft is OrganisedNEW 06-03-2001

WCAG Guidelines NEW 07-21-2001

PDF Glossary NEW 06-03-2001

PDF References NEW 07-21-2001

PDF Checkpoints NEW 06-03-2001

How This Document is Organised

PDF Checkpoints

Design content that allows presentation according to the user's needs and preferences

The PDF Techniques Checkpoints that are covered under this WCAG 2.0 Guideline 1 are . . . . . . .

PDF Checkpoint 1: Ensure That the Text of the Document is Accessible

Ensure that the text of your document can be extracted reliably in logical reading order.

PDF Checkpoint 1.1
Render Characters and Words in Reading Order @@ GV within the Page @@

Render words, and characters within words, in reading order within the page-content stream. The ReverseChars marked content may be used when rendering right-to-left text that will be typeset left-to-right (PDF 1.4).

Deprecated Technique Examples:
Some PDF authoring applications save space by rendering all the characters in one font at a time. Hence, the PDF file may render all the bold characters on a page, then all the normal weight characters. Generally, this will cause characters not to be rendered in reading order.

A PDF page may render all characters left-to-right, top-to-bottom. For a multi-column document, this does not render the words in reading order, since the first line of the second column will be rendered before the second line of the first column.

PDF Checkpoint 1.2
Separate words explicitly with spacing characters.

Separate words explicitly with spacing characters. Do not rely on the location of the characters or the division of characters into showstring operations to indicate word breaks. Note that this implies that lines of text for western languages usually end with a trailing space character.

Consider rendering the two line example:

Now is the winter
of our discontent.

Correct Technique Example:
  • Position to the beginning of line 1
  • Show String ("Now is the winter ")
  • Position to the beginning of line 2
  • Show String ("of ")
  • Position to the beginning of "our"
  • Show String ("our ")
  • Position to the beginning of "discontent"
  • Show String ("discontent. ")

Deprecated Example (What you should NOT do):
  • Position to the beginning of line 1
  • Show String ("Now is the winter")
  • Position to the beginning of line 2
  • Show String ("of")
  • Position to the beginning of "our"
  • Show String ("our")
  • Position to the beginning of "discontent"
  • Show String ("discontent.")

Note: In the deprecated example above, there are no spacing characters at the end of either line, and there are no spacing characters between the words of the second line.

PDF Checkpoint 1.3
Use soft hyphens and hard hyphens appropriately.

Use a soft hyphen, identified by a character that maps to the Unicode value U+00AD or 173 decimal, when a line-break hyphen is introduced into the middle of a word.

Example: If the word "father-in-law" is hyphenated after the first syllable ("fa-ther-in-law"), the first hyphen should be a soft hyphen, and the second and third hyphens should be hard hyphens.

PDF Checkpoint 1.4
Use the ActualText attribute.

If text characters are not rendered using the show string operation, they must be marked in the logical structure tree with ActualText attridutes containing the derived Unicode values. LGR
@@Loretta will come up with a better example here: 7-20-2001@@

Example: Suppose the word "Arthur" is rendered using an illuminated A.
The structure subtree for this word might contain
<Figure> graphics or image for illuminated A
<Span> "rthur"
The <Figure> structural element should have the ActualText attribute, with value "A", so the word "Arthur" could be extracted.

PDF Checkpoint 1.5:
Ensure that all characters codes map reliably to Unicode.

Within PDF, show string operations operate on a sequence of character codes with associated fonts. The character code indicates which of the fonts glyphs to render on the page. However, some fonts do not provide information about the Unicode character that corresponds to the glyph. Without this information, the text cannot be constructed.
So every such sequence of character codes must map unambiguously into a sequence of Unicode code points. Mapping is decribed: @@ put link here to section 2.4 on page 102 of Tagged pdf doc, and create or get from LOretta html page as well @@ Also add more info and motivation on why we need to map to Unicode. @@

@@ Rationale for the importance of Unicode use:
The Unicode character set is a widely accepted international standard for encoding text. It is non-proprietary, and allows for a richness of character codes. Utilized the world over in internet and network protocols, documents of all kinds, assistive technology devices, user agents, and in an abundance of other areas, Unicode fulfills an important need in local, as well as international communication. It is also the basis on which the World Wide Web's present architecture is, and future architecture will be, built. Therefore it is the best existing system to use for ease of system, device and protocol interoperability for text encoding. KHS.......Is this accurate? We need help here....@@

PDF Checkpoint 2: Provide Text Equivalents for Images and Graphics

Provide Text Equivalents for Images and Graphics

Serves the same function as the non-text element.

@@ Need Examples here @@

PDF Checkpoint 3: Provide Structural Grouping

PDF Checkpoint 3.1
Provide logical structure (PDF Reference Manual Section 8.4.3) for the document.

  • Map structure types to the standard structure types described in Adobe Technical Note #5401. (PDF 1.3)
  • Suggested reading Section 3 of Tagged pdf doc @@ Put link here @@

PDF Checkpoint 3.2
Tag artifacts in the page contents with the /Artifact marked content, so that users can control how and whether they are included in the contents of the document.
Artifacts are either:

  • Artifacts of the printing process, like crop-box markings or the document file name.
  • Artifacts of the pagination of the document, that is elements that would be absent or present in a much different form if a document was always one big page. like running headers and page numbers
  • Artifacts of the layout process and typographic style, like a horizontal rule above a footnote.

PDF Checkpoint 4: Design for User Control of Color and Contrast

Acrobat lets the user control foreground and background color of a document. Text in the original document will use the foreground color. Background elements will use the background color. A background element is defined to be any rectangle that is aligned with the edges of the page (not skewed or rotated) and that covers 50% or more of the page.

PDF Checkpoint 4.1
Avoid drawing rectangles behind text that are not background elements.

Even if the rectangle color matches the background color, when the user changes the background color, the rectangle will not change and may cause contrast problems with the new foreground color.

Example: A document with a white background may draw a title by placing characters on a pink rectangle. Since the pink rectangle will not be recognized as part of the background, when the user sets the foreground color to white and the background color to black, the white characters will be hard to see on the pink background.

PDF Checkpoint 4.2
Text should not be placed on top of images.

Images are not affected by the background and foreground color settings, so when text is placed on top of images........@ ?? @

Example: Black text will be visible on a pastel-colored background image, but yellow text may not be, and changing the background color to black will not change the colors in the image.

PDF Checkpoint 4.3
Avoid the use of Color as the Only Means to Convey Information

Does the document avoid using color-coding as the only means of conveying information, indicating an action, prompting a response, or distinguishing a visual element?
@@New checkpoint: Use WCAG wording here. KHS and LGR@@


PDF Checkpoint 5: Identify the Natural Language of all Text in the Document

Use the language tagging facilities (Lang) to specify the natural language of all text in the document. (PDF 1.4)

PDF Checkpoint 5.1
Identify the documents primary language.

Example: @@

PDF Checkpoint 5.2
Identify when a language change occurs on the page.

Example: @@

Design content that allows interaction according to the user's needs and preferences

The PDF Techniques Checkpoints that are covered under this WCAG 2.0 Guideline 2 are . . . . . . .

PDF Checkpoint 6: Document Navigation

Provide Text Equivalents for Images and Graphics

PDF Checkpoint 6.1
Use bookmarks to provide navigation aids into a document.

PDF Checkpoint 6.2
Use links within a document.

PDF Checkpoint 6.3
If the value of the link does not describe the target clearly and accurately, provide Alt attributes.


PDF Checkpoint 6.4
Provide a user name (/TU key) for all form fields

In Acrobat, this field is called the Short Description.

Make it as easy as possible to use and understand

The PDF Techniques Checkpoints that are covered under this WCAG 2.0 Guideline 3 are . . . . . . .

PDF Checkpoint 7: Provide Expansions for Acronyms and Abbreviations


Design for compatibility and interoperability

The PDF Techniques Checkpoints that are covered under this WCAG 2.0 Guideline 4 are . . . . . . .

PDF Checkpoint 8: Set document protections to permit access

Set the data access restrictions on the document to permit the contents to be accessed.

PDF Glossary

Accessibility permissionNEW 01-01-08
A PDF file can be encrypted (PDF 1.1) to protect its contents from unauthorized access. PDF's standard security handler defines a set of access privileges for a document, including privileges such as modifying the document's contents, copying text and graphics from the document, and printing the document. In PDF 1.4, this set includes accessibility permission, which controls whether the contents of the document are available via standard accessibility APIs to screen readers and other assistive technology.
ActualText valueNEW 01-01-08
Sometimes characters are rendered by graphics commands other than showstring. For instance, an illuminated character may be rendered by an image or a series of graphics commands. In this situations, the Actual Text property is used to identify the character being rendered. This character may be concantentated with adjoining text to form a word.
Adobe glyph nameNEW 01-01-08
The name of a character in the Adobe standard character encodings, in Appendix D of the PDF 1.3 Reference Manual. The encodings list characters, character names, and character codes used in platform standard encodings.
ArtifactsNEW 00-12-14
A page element that is a side effect of rendering, rather than an intrinsic part of the document or story. For example, artifacts of the printing process might include crop-box markings or the document file name printed outside the crop box. Artifacts of the pagination of a document are elements that would be absent (or present in a different form) if the document was always one very big page. So pagination artifacts include running headers and page. A horizontal rule above a foornate would be an artifact of the layout process and typographic style.
CharactersNEW 00-12-14
A character is a printable symbol having phonetic or pictographic meaning and usually forming part of a word of text, depicting a numeral, or expressing grammatical punctuation. A character is generally one of a limited number of symbols, including the letters of a particular language's alphabet, the numerals in the decimal number system, and certain special symbols such as the ampersand

Character Codes NEW 00-12-14 (a la Loretta)A show string is the encoded representation of a sequence of non-negative integers. Each of those integers is a Character Code. The interpretation of a show string depends on the associated font: some fonts imply a one-byte representation whie others imply a more complicated representation. A mapping from a set of integers to a set of characters. This mapping is generally 1:1 (i.e., bijective), for example, the code position 65 in ASCII maps only to "A", and it's the only position that maps to "A". There are several standard coded character sets, the most widely used is ASCII, generally in its Latin-1 dialect (the ASCII coded character set, encoded directly as single-byte values), or UTF-8 (the Unicode coded character set, encoded with an 8-bit transformation method), with Unicode becoming slowly more common; while EBCDIC and Baudot are extinct except in legacy systems. A coded character set may include letters, digits, punctuation, control codes, various mathematical and typographic symbols, and other characters. Each character in the set is represented by a unique character code (or "code position"). Column headers NEW 00-12-14 @@ CMap NEW 01-01-08 A CMap specifies the mapping from character codes to character selectors (CIDs, character names, or character codes) in one or more associated fonts or CIDFonts. It serves a function analogous to the Encoding dictionary for a simple font. A Cmap also specifies the writing mode - horizontal or vertical - for any CIDFont with which the CMap is combined. Also a CMap (character map) file specifies the correspondence between character codes and the CID (character identifier) numbers used to identify characters. For composite (Type 0) fonts, it is the equivalent to the concept of an encoding in a simple font. A CMap can describe a mapping from multiple-byte codes to thousands of characters in a large CID-keyed font. Concatenate NEW 00-12-14 To combine character strings, to join together two or more files or lists to form one big one. Example: The Unix cat command can be used to concatenate files. Crop box NEW 01-01-08 The crop box defines the region to which the contents of the page are to be clipped (cropped) when displayed or printed. Data tables NEW 00-12-14 @@ Expansion NEW 00-12-14 @@ Form fields NEW 01-01-08 @@ Glyph NEW 00-12-14 An image used in the visual representation of characters; roughly speaking, how a character looks. A font is a set of glyphs. In the simple case, for a given font (typeface and size), each character corresponds to a single glyph but this is not always the case, especially in a language with a large alphabet where one character may correspond to several glyphs or several characters to one glyph (a character encoding). A glyph can be an alphabetic or numeric font or some other symbol that pictures an encoded character. The following quote is from a document written as background for the Unicode character set standard. An ideal characterization of characters and glyphs and their relationship may be stated as follows: A character conveys distinctions in meaning or sounds. A character has no intrinsic appearance. A glyph conveys distinctions in form. A glyph has no intrinsic meaning. One or more characters may be depicted by one or more glyph representations (instances of an abstract glyph) in a possibly context dependent fashion. Glyph is from a Greek word for "carving." Indexing value NEW 00-12-14 @@ Line-break hyphen NEW 00-12-14 Hyphens that you add explicitly by entering the dash character are called line-break or hard hyphens. A hyphen that is always set; for example, the hyphen in "cost-effective." A soft hyphen, by contrast, will only be set when a word that is not normally hyphenated falls at the end of a line, and must be broken for proper type spacing. Word processors use two basic techniques to perform hyphenation. The first employs an internal dictionary of words that indicates where hyphens may be inserted. The second uses a set of logical formulas to make hyphenation decisions. The dictionary method is more accurate but is usually slower. The most sophisticated programs use a combination of both methods. Most word processors allow you to override their own hyphenation rules and define yourself where a word should be divided. Link text NEW 00-12-14 @@ MacRomanEncoding, MacExpertEncoding, or WinAnsi Encoding NEW 01-01-08 The regular font encodings used for Latin-text fonts on mac OS and Windows systems are named MacRomanEncoding and WinAnsiEncoding, respectively. Additionally, an encoding named MacExpertEncoding is used with "expert" fonts that contain addiitonal characters useful for sophisticated typography. Complete details of these encodings and the characters present in typical fonts are found in Appendix D of the PDF Version 1.3 Reference Manual. Map, mapped NEW 00-12-14 @@. Markup NEW 00-12-14 @@ The rendered text content of a link. Objects NEW 00-12-14 An object is an identifiable, encapsulated entity that provides one or more services requested by a client. Objects can refer to the objects in OOP (object-oriented programming) or the objects in OLE (Object Linking and Embedding). In object-oriented programming, objects are the things you think about first in designing a program and they are also the units of code that are eventually derived from the process. In between, each object is made into a generic class of object and even more generic classes are defined so that objects can share models and reuse the class definitions in their code. Each object is an instance of a particular class or subclass with the class's own method or procedures and data variable. An object is what actually runs in the computer. An object can be a spell checker or a piece of a graphics program used to draw squares or circles. Do you remember the crazy story people used to try to tell about a word processer where you could pick all of your favorite pieces (favorite spell checker, grammar checker, text editor, font manager, etc.) and piece them together to form the ultimate customizable word processer? Well, those pieces are objects. In OLE, an object is a piece of a document, a graphic, or some multimedia. In general multimedia terms, an object is a stored data element, such as a video clip, an audio file, or a graphic representation of an object. Page-content stream NEW 01-01-08 A page's content stream contains operands and operators used to place "paint" on a page in selected areas. By executing the actions described in the page content stream, an application builds up the image of the page described by the stream. Pagination NEW 00-12-14 @@ ReverseChars NEW 00-12-14 Font characteristics may suggest that right-to-left text be typeset left-to-right. The ReverseChars marked content indicates that the show strings within the marked content are individually reversed in reading order. Running headers NEW 00-12-14 @@. Showstring NEW 00-12-14 (a la Loretta) The strings that are the arguments to the PDF and Postscript text-showing operators that show text on a page. The show string is interpreted as a sequence of character codes identifying the glyphs to be painted. Soft hyphen NEW 00-12-14 (a la Loretta) A character that is used to mark conditional hyphenation points. Unicode and ISO_Latin-1 code-point 0xAD. A hyphen that will only be set if the word falls at the end of a line which is too long, and has to be broken. Hyphens inserted automatically by a hyphenation utility are called discretionary or soft hyphens. Word processors use two basic techniques to perform hyphenation. The first employs an internal dictionary of words that indicates where hyphens may be inserted. The second uses a set of logical formulas to make hyphenation decisions. The dictionary method is more accurate but is usually slower. The most sophisticated programs use a combination of both methods. Most word processors allow you to override their own hyphenation rules and define yourself where a word should be divided. Trailing space character NEW 01-01-08 A white space character inserted into the text for a page after the last word on a line. A trailing space character is not needed to produce the correct page image, but is important for determining word breaks in the text of the page. Type 0 font, Type 1 font NEW 01-01-08 Type 0 font: a composite font, that is, a font composed of other fonts, organized hierarchically. Type 1 font: a font represented using the Adobe Type 1 Font Format. A Type 1 font program is a stylized PostScript program that describes glyph shapes. Typographic styleNEW 00-12-14 @@. Unicode NEW 00-12-14 A character coding scheme that uses 16 bits for each character, designed to extend the capabilities of ASCII, which uses seven bits. Nearly all letters and symbols in all languages can be represented in a standard way with Unicode. The first 128 characters of Unicode are identical to those in standard ASCII. Unicode is an entirely new idea in setting up binary codes for text or script characters. Officially called the Unicode Worldwide Character Standard, it is a system for "the interchange, processing, and display of the written texts of the diverse languages of the modern world." It also supports many classical and historical texts in a number of languages. Currently, the Unicode standard contains 57709 distinct coded characters derived from 24 supported language scripts. These characters cover the principal written languages of the world. Originally Unicode was designed to be universal, unique, and uniform, i.e., the code was to cover all major modern written languages (universal), each character was to have exactly one encoding (unique), and each character was to be represented by a fixed width in bits (uniform). Parallel to the development of Unicode an ISO/IEC standard was being worked on that put a large emphasis on being compatible with existing character codes such as ASCII or ISO Latin 1. To avoid having two competing 16-bit standards, in 1992 the two teams compromised to define a common character code standard, known both as Unicode and BMP. Since the merger the character codes are the same but the two standards are not identical. The ISO/IEC standard covers only coding while Unicode includes additional specifications that help implementation. Unicode is not a glyph encoding. The same character can be displayed as a variety of glyphs, depending not only on the font and style, but also on the adjacent characters. A sequence of characters can be displayed as a single glyph or a character can be displayed as a sequence of glyphs. Which will be the case, is often font dependent. Unicode value NEW 00-12-14 (a la Loretta)Unicode value or code point: The Unicode Consortium defined a set of sixteen-bit code points, 57709 of which are currently assigned and named Unicode Characters. The lowest 65536 code-points in ISO 10646-1 1993 are idential to the Unicode Standard and are sometimes called the Basic Multilingual Plane. See User name (/TU key) NEW 01-01-08 Any interactive form field may contain the optional /TU entry in its dictionary. This entry, known as the user name or short description, is used to identify this field when generating an error message or naming the field to a screen reader. Word breaks NEW 01-01-08 Applications divide the text of a page into words; word breaks are the points in the text stream that separate adjoining words. Different applications may use different rules for defining words; for example, one application may consider everything between white space characters to be a word. Another application may not include leading or trailing punctuation as part of a word. -------------------------------------------------------------------------------- --------------------------------------------------------------------------------

PDF References

Last Updated: $Date: 2001/07/22 03:24:20 $ by: Katie Haritos-Shea For corrections and updates, please contact Katie Haritos-Shea @ Home or Katie Haritos-Shea @ Work, Paradigm Solutions Corporation, and, National Technical Information Service (NTIS), United States Department of Commerce.