WTPDF 1.0 rules - veraPDF/veraPDF-validation-profiles GitHub Wiki
WTPDF 1.0 validation rules
Rule 6.1.2-1
Requirement
File conforming to the WTPDF 1.0 conformance level for reuse shall include a PDF Declaration with the URI identifier "http://pdfa.org/declarations/wtpdf#reuse1.0" as its "pdfd:conformsTo" entry.
Error details
File conforming to the WTPDF 1.0 conformance level for reuse doesn't include a PDF Declaration with the URI identifier "http://pdfa.org/declarations/wtpdf#reuse1.0" as its "pdfd:conformsTo" entry.
- Object type:
MainXMPPackage - Test condition:
declarations.contains('http://pdfa.org/declarations/wtpdf#reuse1.0') == true - Specification: WTPDF 1.0
- Levels: Reuse
Rule 6.1.3-1
Requirement
File conforming to the WTPDF 1.0 conformance level for accessibility shall include a PDF Declaration with the URI identifier "http://pdfa.org/declarations/wtpdf#accessibility1.0" as its "pdfd:conformsTo" entry.
Error details
File conforming to the WTPDF 1.0 conformance level for accessibility doesn't include a PDF Declaration with the URI identifier "http://pdfa.org/declarations/wtpdf#accessibility1.0" as its "pdfd:conformsTo" entry.
- Object type:
MainXMPPackage - Test condition:
declarations.contains('http://pdfa.org/declarations/wtpdf#accessibility1.0') == true - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 6.2-1
Requirement
The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true.
Error details
MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary.
This setting indicates that the file conforms to the Tagged PDF conventions.
- Object type:
CosDocument - Test condition:
Marked == true - Specifications: WTPDF 1.0
- Additional references:
- ISO 32000-2:2020, 14.7.1
Rule 8.2.1-1
Requirement
The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-2:2020, 14.7
Error details
StructTreeRoot entry is not present in the document catalog
- Object type:
PDDocument - Test condition:
containsStructTreeRoot == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.7
Rule 8.2.1-2
Requirement
A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323
Error details
A structure element dictionary does not contain the P (parent) entry
- Object type:
PDStructElem - Test condition:
containsParent == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.7.2, Table 323
Rule 8.2.2-1
Requirement
Content that is not considered real shall be an artifact
Error details
Content is neither marked as Artifact nor tagged as real content
- Object type:
SESimpleContentItem - Test condition:
isTaggedContent == true || parentsTags.contains('Artifact') == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.4-1
Requirement
All structure elements shall belong to, or be role mapped to, at least one of the following namespaces specified in ISO 32000-2:2020, 14.8.6: β the PDF 1.7 namespace; β the PDF 2.0 namespace; β the MathML namespace
Error details
A non-standard structure type is not mapped to a standard type. The semantics of such element is not defined by PDF 1.7 or PDF 2.0.
- Object type:
SENonStandard - Test condition:
isNotMappedToStandardType == false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.8.6
Rule 8.2.4-2
Requirement
A circular mapping shall not exist
Error details
A circular mapping exists. This indicates that the structure tree of the PDF document is malformed.
- Object type:
PDStructElem - Test condition:
circularMappingExist != true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.4-3
Requirement
Within a given explicitly provided namespace, structure types shall not be role mapped to other structure types in the same namespace
Error details
A structure type is role mapped to other structure type in the same namespace. It is not permitted to redefine semantics of structure elements within the same namespace. It is however permitted to map structure element types from one namespace to another namespace.
- Object type:
PDStructElem - Test condition:
roleMapToSameNamespaceTag == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.4-4
Requirement
All structure elements shall belong to, or be role mapped to, at least one of the following namespaces specified in ISO 32000-2:2020, 14.8.6: β the PDF 1.7 namespace; β the PDF 2.0 namespace; β the MathML namespace
Error details
A standard structure type is remapped to a non-standard type. It is only permitted to map non-standard structure types to standard ones, or standard structure types within one namespace (for example, PDF 2.0) to another standard namespace (for example, PDF 1.7).
- Object type:
SENonStandard - Test condition:
remappedStandardType == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.8.6
Rule 8.2.5.2-1
Requirement
The structure tree root shall contain a single Document structure element as its only child, as specified in ISO 32000-2:2020, Annex L and ISO/TS 32005
Error details
The structure tree root contains element(s) other than a single Document structure element
- Object type:
PDStructTreeRoot - Test condition:
kidsStandardTypes == 'Document' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.7.2
- ISO 32000-2:2020, 14.8.6
- ISO 32000-2:2020, Annex L
- ISO/TS 32005, clause
Rule 8.2.5.2-2
Requirement
The structure tree root shall contain a single Document structure element as its only child. The namespace for that element shall be specified as the PDF 2.0 namespace
Error details
The structure tree root contains a single Document structure element, but this element is not within the PDF 2.0 namespace
- Object type:
PDStructTreeRoot - Test condition:
kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.7.2
- ISO 32000-2:2020, 14.8.6
- ISO 32000-2:2020, Annex L
- ISO/TS 32005, clause
Rule 8.2.5.8-1
Requirement
Each TOCI in the table of contents shall identify the target of the reference using the Ref entry, either directly on the TOCI structure element itself or on one of its child structure elements
Error details
TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements
- Object type:
SETOCI - Test condition:
containsRef == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.12-1
Requirement
Conforming files shall not use the H structure type
Error details
Document uses H structure type
- Object type:
SEH - Test condition:
false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.14-1
Requirement
The Note standard structure type shall not be present in conforming documents unless role mapped to a structure element in the PDF 2.0 namespace
Error details
Document uses Note structure type
- Object type:
SENote - Test condition:
false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.14-2
Requirement
Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry on the referring structure element to reference the FENote. The corresponding FENote shall also use the Ref entry to identify all citations that reference it
Error details
Ref entry in the FENote does not reference structure elements, while these structure elements reference this FENote
- Object type:
SEFENote - Test condition:
orphanRefs == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.14-3
Requirement
Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry on the referring structure element to reference the FENote. The corresponding FENote shall also use the Ref entry to identify all citations that reference it
Error details
Ref entry in the FENote reference structure elements, while these structure elements do not reference this FENote
- Object type:
SEFENote - Test condition:
ghostRefs == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.14-4
Requirement
The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None
Error details
NoteType attribute of the FENote structure element has value other than Footnote, Endnote or None
- Object type:
SEFENote - Test condition:
NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.20-1
Requirement
A link annotation and its associated content shall be enclosed in either a Link or Reference structure element
Error details
A Link annotation is an Artifact or is nested within tag other than Link or Reference
- Object type:
PDLinkAnnot - Test condition:
structParentStandardType == 'Link' || structParentStandardType == 'Reference' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.20-2
Requirement
Link annotations that target different locations shall be in separate Link or Reference structure elements
Error details
Structure element contains Link annotations that target different locations. All link annotations within a single structure element (Link or Reference) shall target the same location. Otherwise they have to be placed in different structure elements.
- Object type:
PDLinkAnnot - Test condition:
differentTargetAnnotObjectKey == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.23-1
Requirement
A Ruby structure element shall contain a single RB structure element and a single RT structure element or a Ruby structure element shall consist of a four-element subsequence: RB, RP, RT, RP
Error details
The Ruby structure element has invalid sequence of children
- Object type:
SERuby - Test condition:
kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.24-1
Requirement
Content typeset as warichu shall be tagged in a three-element sequence consisting of the structure elements WP, WT and WP, grouped inside a Warichu structure element
Error details
The Warichu structure element has invalid sequence of children
- Object type:
SEWarichu - Test condition:
kidsStandardTypes == 'WP&WT&WP' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.25-1
Requirement
If Lbl structure elements are present, the ListNumbering attribute shall be present on the respective L structure element; in such cases the value None shall not be used
Error details
List items contain Lbl structure elements, but the ListNumbering attribute is not present on the respective L structure element or it has value None
- Object type:
SEL - Test condition:
containsLabels == false || ListNumbering != 'None' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- WTPDF 1.0, Annex B, 2
Rule 8.2.5.25-2
Requirement
Any real content within an LI structure element that is not enclosed in an Lbl structure element shall be enclosed in an LBody structure element
Error details
The LI structure element contains real content as its direct child instead of enclosing it into Lbl or LBody structure elements
- Object type:
SELI - Test condition:
hasContentItems == false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.26-1
Requirement
Tables shall be regular. A table cell shall not have intersection with other cells
Error details
Table cell has intersection with other cells
- Object type:
SETableCell - Test condition:
hasIntersection != true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.26-2
Requirement
Tables shall be regular. Row groupings formed by THead, TBody and TFoot structure elements shall be regular. Table columns shall have the same number of rows (taking into account row spans) in table and each row groupings formed by THead, TBody and TFoot structure elements
Error details
Some table columns have different number of rows in table, or within one of row groupings formed by THead, TBody and TFoot structure elements
- Object type:
SETable - Test condition:
numberOfColumnWithWrongRowSpan == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.26-3
Requirement
Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
Error details
Some table rows have different number of columns. Columns are counted taking into account column spans.
- Object type:
SETable - Test condition:
numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.26-4
Requirement
Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
Error details
Some table row has number of columns that exceeds the number of columns in the first row. Columns are counted taking into account column spans.
- Object type:
SETable - Test condition:
numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.26-5
Requirement
When a table contains header cells, that table shall provide sufficient semantic information to allow accurate determination of which of its table header cells (structure element TH) pertain to other cells as specified in ISO 32000-2:2020, 14.8.5.7
Error details
TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
- Object type:
SETD - Test condition:
hasConnectedHeader != false || unknownHeaders != '' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.8.4.8.3
- ISO 32000-2:2020, 14.8.5.7
Rule 8.2.5.26-6
Requirement
When a table contains header cells, that table shall provide sufficient semantic information to allow accurate determination of which of its table header cells (structure element TH) pertain to other cells as specified in ISO 32000-2:2020, 14.8.5.7
Error details
TD references undefined Header(s), and Headers for this table cell cannot be determined algorithmically based on table structure
- Object type:
SETD - Test condition:
hasConnectedHeader != false || unknownHeaders == '' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.8.4.8.3
- ISO 32000-2:2020, 14.8.5.7
Rule 8.2.5.27-1
Requirement
When present, the Caption element shall be the first or the last child of the structure element
Error details
A structure element contains Caption not as its first or last child
- Object type:
PDStructElem - Test condition:
kidsStandardTypes.indexOf('&Caption&') < 0 - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.2.5.28.2-1
Requirement
A Figure structure element shall have at least one of the following properties: a) an alternate description (Alt property), as specified in ISO 32000-2:2020, 14.9.3; b) a replacement text (ActualText property) that represents the content enclosed by the Figure structure element
Error details
Figure structure element neither has an alternate description nor a replacement text
- Object type:
SEFigure - Test condition:
Alt != null || ActualText != null - Specification: WTPDF 1.0
- Levels: Accessibility
- Additional references:
- ISO 32000-2:2020, 14.9.3
Rule 8.2.5.29-1
Requirement
The math structure type shall occur only as a child of a Formula structure element
Error details
The math structure type is nested within tag other than Formula. The math structure type is used in PDF to represent mathematical formulas in MathML syntax.
- Object type:
SEMathMLStructElem - Test condition:
parentStandardType == 'Formula' || parentStandardType == 'MathML' - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.4.3-1
Requirement
In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present
Error details
Real content maps to Unicode PUA values, but ActualText and Alt entry are not present
- Object type:
Glyph - Test condition:
isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.4.3-2
Requirement
The ActualText entry shall not contain any PUA values
Error details
The ActualText entry contains Unicode PUA (Private Use Area) code points
- Object type:
CosActualText - Test condition:
containsPUA == false - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.4.3-3
Requirement
The Alt entry shall not contain any PUA values
Error details
The Alt entry contains Unicode PUA (Private Use Area) code points
- Object type:
CosAlt - Test condition:
containsPUA == false - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.4.4-1
Requirement
The default natural language for content and text strings shall be specified using the Lang entry, with a non-empty value, in the catalog dictionary
Error details
Catalog dictionary does not contain Lang entry
- Object type:
PDDocument - Test condition:
containsLang == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.4-2
Requirement
If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-2:2020, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
Error details
Value of the Lang entry is not a Language-Tag. The permitted formats for Language Tag are defined in RFC 3066.
- Object type:
CosLang - Test condition:
/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.9.2
- RFC 3066, 2.1
Rule 8.4.5.3.1-1
Requirement
For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont. - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
Error details
CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible. This introduces a potential risk that some of the characters in page content will be incorrectly mapped to the glyphs in the embedded font program.
- Object type:
PDType0Font - Test condition:
cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.3.2-1
Requirement
All embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, Table 115
Error details
A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
- Object type:
PDCIDFont - Test condition:
Subtype != "CIDFontType2" || CIDToGIDMap != null || containsFontFile == false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 9.7.4, Table 115
Rule 8.4.5.4-1
Requirement
All CMaps used within a file that conforms to WTPDF 1.0, except those listed in ISO 32000-2:2020, Table 116, shall be embedded in that file, as described in ISO 32000-2:2020, 9.7.5
Error details
A non-standard CMap is not embedded
- Object type:
PDCMap - Test condition:
CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || containsEmbeddedFile == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 9.7.5.2, Table 116
Rule 8.4.5.4-2
Requirement
For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
Error details
WMode entry in the embedded CMap and in the CMap dictionary are not identical. This indicates that an invalid CMap was used for the font.
- Object type:
CMapFile - Test condition:
WMode == dictWMode - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.4-3
Requirement
A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
Error details
A CMap references another non-standard CMap
- Object type:
PDReferencedCMap - Test condition:
CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 9.7.5.2, Table 116
Rule 8.4.5.5.1-1
Requirement
The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-2:2020, 9.9
Error details
The font program is not embedded
- Object type:
PDFont - Test condition:
Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || containsFontFile == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 9.9
Rule 8.4.5.5.1-2
Requirement
Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs in accordance with ISO 32000-2:2020, 9.6.5, without the use of a non-standard mapping chosen by the conforming processor
Error details
Not all glyphs referenced for rendering are present in the embedded font program
- Object type:
Glyph - Test condition:
renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 9.3.6
- ISO 32000-2:2020, 9.6.5
Rule 8.4.5.6-1
Requirement
For every font embedded in a conforming file and referenced for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph
Error details
Glyph width in the embedded font program is not consistent with the Widths entry of the font dictionary. This might cause ambiguity in page rendering.
- Object type:
Glyph - Test condition:
renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.7-1
Requirement
For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain at least Microsoft Unicode (3,1 β Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 β Platform ID=1, Encoding ID=0) 'cmap' subtable
Error details
The embedded font program for a non-symbolic TrueType font does not contain Microsoft Symbol (3,1 β Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 β Platform ID=1, Encoding ID=0) encoding
- Object type:
TrueTypeFontProgram - Test condition:
isSymbolic == true || cmap31Present == true || cmap10Present == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.7-2
Requirement
All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 β Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
Error details
A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List. This may cause incorrect glyph selection for some characters on the page.
- Object type:
PDTrueTypeFont - Test condition:
isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.7-3
Requirement
Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
Error details
A symbolic TrueType font specifies an Encoding entry in its dictionary
- Object type:
PDTrueTypeFont - Test condition:
isSymbolic == false || Encoding == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.7-4
Requirement
The 'cmap' subtable in the embedded font program shall either contain the Microsoft Symbol (3,0 β Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 β Platform ID=1, Encoding ID=1) encoding
Error details
The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol (3,0 β Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 β Platform ID=1, Encoding ID=0) encoding
- Object type:
TrueTypeFontProgram - Test condition:
isSymbolic == false || cmap30Present == true || cmap10Present == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.8-1
Requirement
The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in WTPDF 1.0, 8.4.5.8
Error details
The glyph can not be mapped to Unicode
- Object type:
Glyph - Test condition:
toUnicode != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- WTPDF 1.0, 8.4.5.8
- ISO 32000-2:2020, 9.10.3
Rule 8.4.5.8-2
Requirement
- If a ToUnicode CMap is present, the Unicode values it specifies shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE*
Error details
The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
- Object type:
Glyph - Test condition:
toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.4.5.9-1
Requirement
A file in conformance with WTPDF 1.0 shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
Error details
The document contains a reference to the .notdef glyph
- Object type:
Glyph - Test condition:
name != ".notdef" - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 9.7.6.3
Rule 8.6-1
Requirement
Text strings intended to be human readable shall not use the Unicode PUA
Error details
Text string intended to be human readable uses Unicode PUA
- Object type:
CosTextString - Test condition:
containsPUA == false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 7.9.2.2
Rule 8.7-1
Requirement
All optional content configuration dictionaries in the document, including the default optional content configuration dictionary, shall contain a Name entry (see ISO 32000-2:2020, Table 96) whose value is a non-empty text string when: a) a document contains a Configs entry in the OCProperties entry of the catalog dictionary (see ISO 32000-2:2020, Table 29), and b) the Configs entry contains at least one optional content configuration dictionary
Error details
Missing or empty Name entry of the optional content configuration dictionary
- Object type:
PDOCConfig - Test condition:
gContainsConfigs == false || (Name != null && Name.length() > 0) - Specification: WTPDF 1.0
- Levels: Accessibility
- Additional references:
- ISO 32000-2:2020, 7.7.2, Table 29
- ISO 32000-2:2020, 8.11.2.1, Table 96
Rule 8.7-2
Requirement
The AS key shall not appear in any optional content configuration dictionary
Error details
AS key is present in the optional content configuration dictionary
- Object type:
PDOCConfig - Test condition:
AS == null - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.8-1
Requirement
All destinations whose target lies within the current document shall be structure destinations
Error details
Destination in Outline item, OpenAction or Link annotation is not a structure destination
- Object type:
PDDestination - Test condition:
isStructDestination == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 12.3.2
- ISO 32000-2:2020, 12.3.2.3
Rule 8.8-2
Requirement
All destinations whose target lies within the current document shall be structure destinations
Error details
Destination in GoTo action is not a structure destination
- Object type:
PDGoToAction - Test condition:
containsStructDestination == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 12.3.2
- ISO 32000-2:2020, 12.3.2.3
Rule 8.9.2.2-1
Requirement
Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167
Error details
An invisible annotation is included in logical structure. Annotations may be marked as invisible, which suggests that they are not a part of a real content.
- Object type:
PDAnnot - Test condition:
structParentType == null || isArtifact == true || (F & 1) == 0 - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 12.5.3, Table 167
Rule 8.9.2.2-2
Requirement
Annotations shall be artifacts if the NoView flag is set and the ToggleNoView flag is not set in accordance with ISO 32000-2:2020, Table 167
Error details
A no-view annotation is included in logical structure. Annotations may have a no-view flag, which makes them invisible suggests that they are not a part of a real content.
- Object type:
PDAnnot - Test condition:
structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 256) - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 12.5.3, Table 167
Rule 8.9.2.3-1
Requirement
Markup annotations shall be enclosed within Annot structure elements
Error details
A Markup annotation is an Artifact or is nested within tag other than Annot
- Object type:
PDMarkupAnnot - Test condition:
structParentStandardType == 'Annot' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.2.3-2
Requirement
When both RC and Contents entries are present for markup annotation, they shall be textually equivalent
Error details
A Markup annotation contains Contents and RC entries with non-equivalent textual values. RC entry is a rich text alternative for the plain text of Contents entry of an annotation.
- Object type:
PDMarkupAnnot - Test condition:
containsRC == false || Contents == null || RC == Contents - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.9.2.4.7-1
Requirement
If the Name entry is insufficient to describe the intent of the stamp annotation, a Contents entry describing the authorβs intent shall be provided
Error details
Rubber stamp annotation contains neither Name nor Contents entry
- Object type:
PDRubberStampAnnot - Test condition:
Name != null || Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility
- Additional references:
- ISO 32000-2:2020, 12.5.6.2
Rule 8.9.2.4.8-1
Requirement
A Contents entry describing the authorβs intent shall be provided for Ink annotation
Error details
Ink annotation does not contain Contents entry
- Object type:
PDInkAnnot - Test condition:
Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility
Rule 8.9.2.4.9-1
Requirement
Popup annotations shall not be present in the structure tree
Error details
A Popup annotation is included in the logical structure of the document. Popup annotations define visual representation of activated Markup annotations and do not carry any additional semantics.
- Object type:
PDPopupAnnot - Test condition:
structParentType == null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.11.3
Rule 8.9.2.4.10-1
Requirement
When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry
Error details
The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry
- Object type:
PDFileAttachmentAnnot - Test condition:
containsFS == false || AFRelationship != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 7.11.3
- ISO 32000-2:2020, 12.5.6.15
Rule 8.9.2.4.11-1
Requirement
Sound annotation cannot be used when conforming to WTPDF 1.0
Error details
An annotation of subtype Sound exists
- Object type:
PDSoundAnnot - Test condition:
false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.2.4.11-2
Requirement
Movie annotation cannot be used when conforming to WTPDF 1.0
Error details
An annotation of subtype Movie exists
- Object type:
PDMovieAnnot - Test condition:
false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.2.4.12-1
Requirement
Screen annotations shall include a Contents entry
Error details
Screen annotation does not contain Contents entry
- Object type:
PDScreenAnnot - Test condition:
Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.2.4.13-1
Requirement
A widget annotation of zero height and width shall be an artifact
Error details
A Widget annotation of zero height and width is not marked as an Artifact. Widget annotations of zero width and height are often used to embed an invisible digital signature into the document.
- Object type:
PDWidgetAnnot - Test condition:
width != 0 || height != 0 || structParentType == null || isArtifact == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 12.7.5.5
Rule 8.9.2.4.14-1
Requirement
A printer's mark annotation shall be an artifact
Error details
A PrinterMark annotation is included in logical structure. Printer marks are used for document printing and have no semantic meaning.
- Object type:
PDPrinterMarkAnnot - Test condition:
structParentType == null || isArtifact == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.11.3
Rule 8.9.2.4.15-1
Requirement
Trap network annotations shall not be used in files conforming to WTPDF 1.0
Error details
An annotation of subtype TrapNet exists
- Object type:
PDTrapNetAnnot - Test condition:
false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.2.4.16-1
Requirement
When used as real content, Watermark annotations shall be enclosed within Annot structure elements
Error details
A Watermark annotation is nested within a tag other than Annot
- Object type:
PDWatermarkAnnot - Test condition:
structParentType == null || isArtifact == true || structParentStandardType == 'Annot' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.2.4.19-1
Requirement
3D annotation shall include alternate description in respective Contents entry
Error details
3D annotation does not contain Contents entry
- Object type:
PD3DAnnot - Test condition:
Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility
- Additional references:
- ISO 32000-2:2020, 12.5.2, Table 166
Rule 8.9.2.4.19-2
Requirement
RichMedia annotation shall include alternate description in respective Contents entry
Error details
RichMedia annotation does not contain Contents entry
- Object type:
PDRichMediaAnnot - Test condition:
Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility
- Additional references:
- ISO 32000-2:2020, 12.5.2, Table 166
Rule 8.9.3.3-1
Requirement
Every page that includes an annotation shall contain a Tabs entry in its page dictionary in accordance with ISO 32000-2:2020, Table 31, and its value shall be A, W or S
Error details
A page with annotation(s) contains Tabs key with value other than A, W or S. The Tabs entry defines the order in which page annotations shall be processed. If this entry is missing, different PDF processors may choose different order, which creates ambiguity in the document presentation.
- Object type:
PDPage - Test condition:
containsAnnotations == false || Tabs == 'A' || Tabs == 'W' || Tabs == 'S' - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.9.4.2-1
Requirement
Where an annotation has a Contents entry and the directly enclosing structure element has an Alt entry, the values of Alt and Contents shall be identical
Error details
Both Contents and Alt entries are present for the annotation, but they are not identical. They both define an alternative description of the annotation and thus shall be identical.
- Object type:
PDAnnot - Test condition:
Contents == null || Alt == null || Contents == Alt - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.10.1-1
Requirement
Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact
Error details
A Widget annotation is nested within tag other than Form or Artifact. Widget annotations are used to define interactive forms in PDF.
- Object type:
PDWidgetAnnot - Test condition:
structParentType == null || structParentStandardType == 'Form' || isArtifact == true - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.10.1-2
Requirement
A Form structure element shall contain at most one widget annotation
Error details
A Form structure element contains more than one widget annotation. Widget annotations are used to define interactive forms in PDF.
- Object type:
SEForm - Test condition:
widgetAnnotsCount <= 1 - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.10.1-3
Requirement
XFA forms shall not be present
Error details
XFA form is present
- Object type:
PDAcroForm - Test condition:
containsXFA == false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, Annex K
Rule 8.10.2.3-1
Requirement
If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget
Error details
Widget annotation contains neither label nor Contents entry
- Object type:
PDWidgetAnnot - Test condition:
containsLbl == true || Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.10.2.3-2
Requirement
If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present
Error details
Widget annotation dictionary contains an AA entry, but does not contain the Contents entry
- Object type:
PDWidgetAnnot - Test condition:
containsAA == false || Contents != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, Table 191
Rule 8.10.3.3-1
Requirement
For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent
Error details
Text field contains RV entry, but no V entry or they are not textually equivalent. RV entry defined a rich text version of the plain text of V entry. Both entries stoke the value of the text input field in PDF.
- Object type:
PDTextField - Test condition:
containsRV == false || (V != null && RV == V) - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, Table 226
- ISO 32000-2:2020, Table 228
Rule 8.10.3.5-1
Requirement
If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic
Error details
A portion of the appearance of a signature is represented by a graphic, but alternative text is not provided for that graphic
- Object type:
SEGraphicContentItem - Test condition:
isSignature == false || Alt != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
Rule 8.11.1-1
Requirement
The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry
Error details
Metadata stream does not contain dc:title
- Object type:
MainXMPPackage - Test condition:
dc_title != null - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse
- Additional references:
- ISO 32000-2:2020, 14.3
Rule 8.11.1-2
Requirement
The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-2:2020, 14.3. The metadata stream dictionary shall contain entry Type with value /Metadata and entry Subtype with value /XML
Error details
The document catalog dictionary doesn't contain metadata key or metadata stream dictionary does not contain either entry Type with value /Metadata or entry Subtype with value /XML.
- Object type:
PDDocument - Test condition:
containsMetadata == true - Specification: WTPDF 1.0
- Additional references:
- ISO 32000-2:2020, 14.3.2
Rule 8.11.2-1
Requirement
The ViewerPreferences dictionary of the document catalog dictionary shall be present and shall contain at least the DisplayDocTitle key with a value of true, as described in ISO 32000-2:2020, Table 147
Error details
ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary. This prevents PDF viewers from correctly displaying the title of the document.
- Object type:
CosDocument - Test condition:
DisplayDocTitle == true - Specification: WTPDF 1.0
- Levels: Accessibility
- Additional references:
- ISO 32000-2:2020, 12.2, Table 147
Rule 8.14.1-1
Requirement
The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document
Error details
The file specification dictionary for an embedded file does not contain Desc key
- Object type:
CosFileSpecification - Test condition:
containsDesc == true || presentInEmbeddedFiles == false - Specification: WTPDF 1.0
- Levels: Accessibility, Reuse